本文へスキップ
株式会社オブライト
Software Development2026-07-04

Durable Objects 徹底解説 — Cloudflare の『Stateful Serverless』が2025 GA・SQLite ゼロレイテンシ内蔵・Workers Free 対応・2026-01-07 ストレージ課金開始 チャット・共同編集・マルチプレイヤーゲーム・LLM セッション管理まで、エッジで完結する分散システムの新常識

Cloudflare Durable Objects公式ドキュメント / プロダクトページ / SQLite in Durable Objects ブログ)は、Cloudflare Workers 上で「グローバル一意のインスタンス」ごとに永続ストレージと計算を結合させる stateful serverless プリミティブ。2020 年発表 → 2025 年 4 月 SQLite バックエンド GA + Workers Free プラン対応2026 年 1 月 7 日 SQLite ストレージ課金開始 で商用普及フェーズに入りました。

アーキテクチャの本質: 名前で一意に決まる DurableObjectStubDurableObjectNamespace::getByName)が、世界で 1 つのインスタンスにルーティング → ゼロレイテンシで SQLite にアクセス(同じマシン上の同じプロセス内、コンピュートとストレージが完全同居)。「単一マスターの一貫性 + エッジのレイテンシ」を両立する仕組み。同種の分散システムを DIY で作ると難易度が跳ね上がる領域を、プラットフォームプリミティブ 1 つで置き換え

料金体系(Paid 標準):
- Requests: 100 万/月 込み、以降 $0.15 / 100 万(WebSocket 受信は 20:1 比率でカウント)
- Duration: 40 万 GB-秒/月 込み、以降 $12.50 / 100 万 GB-秒
- SQLite Row reads: 250 億/月 込み、以降 $0.001 / 100 万
- SQLite Row writes: 5,000 万/月 込み、以降 $1.00 / 100 万
- Stored data: 5 GB-月 込み、以降 $0.20 / GB-月
- setAlarm() は 1 write としてカウント

Free プラン(2025 年 4 月開始): 100,000 requests/日、13,000 GB-秒/日、SQLite 500 万 row reads/日・10 万 row writes/日・5 GB 保存 — 個人 PoC・スタートアップの検証に十分な枠。

WebSocket Hibernation: 通信が疎な WebSocket 接続で、アイドル中のインスタンスは duration 課金なし に。長時間常駐セッション(チャット、通知、LLM 会話履歴等)の運用コストが劇的に下がる差別化。

2025-2026 主要更新: 2025-04-07 SQLite GA + Workers Free、2025-08-21 getByName 直接構築、2025-10-16 Data Studio UI エディタ、2025-10-25 WebSocket メッセージ上限 1 MiB → 32 MiB、2026-01-07 SQLite ストレージ課金開始。

代表的ユースケース: 共同編集ツール(Google Docs 系)、リアルタイムチャット、マルチプレイヤーゲームのルームマッチング、ライブ通知、LLM エージェントの会話履歴・セッション管理(Claude Code / Cursor 系のバックエンド)、金融・IoT のイベントバッファ、レートリミット・分散ロック。

位置付け: ローカル LLM 2026年6月最新版agmsg(CLI エージェント間メッセージング)Sakana Fugu オーケストレーション が「AI 推論の分散」を担うのに対し、Durable Objects は 「ステートフルなセッション・履歴・調整」を担うエッジプリミティブ として補完関係。


TL;DR — Durable Objects を一言で

Cloudflare Durable Objects は、Workers 上で 『名前で一意に決まる 1 個のインスタンス』ごとに、コンピュートと SQLite 永続ストレージを完全同居 させる stateful serverless プリミティブ です(公式ドキュメント)。

4 つの要点:

1. ゼロレイテンシ SQLite 内蔵 — 同じプロセスで DB クエリが動くため、通常の DB 呼び出しの数百 μs〜数ms が 数十 μs 未満
2. 強い一貫性 + エッジレイテンシ — 特定名の DO はグローバルで 1 個、単一マスター semantics を保ちつつ地理的に最適な場所で稼働
3. WebSocket Hibernation — アイドル接続は duration 課金ゼロ、長時間セッションの運用コストを劇的削減
4. Free プラン対応(2025-04-07 GA)+ 2026-01-07 SQLite ストレージ課金開始 で商用普及フェーズへ

本コラムは ローカル LLM 2026年6月最新版agmsg(CLI エージェント間メッセージング)Sakana Fugu オーケストレーションApple Container と並ぶ 2026 年の分散基盤プリミティブ 整理の一環です。

そもそも Durable Objects とは何か

通常の serverless(AWS Lambda / Cloudflare Workers 標準)は stateless:呼び出しごとに新しいインスタンス、状態は外部 DB に持たせる必要があり、書き込み集中や整合性が難しい。

Durable Objects の本質: 『名前 → グローバル一意のインスタンス』へのルーティングをプラットフォームが保証 する。同じ名前でアクセスすると、世界中どこから呼んでも 同じ 1 個のインスタンス に届く。そのインスタンスは storage API 経由でゼロレイテンシに永続 SQLite にアクセス できる。

イメージ:

ts
// Worker 側: 名前で DO stub を取得
const stub = env.MY_DO.getByName(`chat-room-${roomId}`);

// DO に fetch / RPC — 世界で 1 個の chat-room-42 に届く
const response = await stub.fetch(request);

この「世界に 1 個の名前付きインスタンス」という概念が、共同編集・チャット・マルチプレイヤーゲーム・分散カウンタ・レートリミッタ・LLM 会話履歴 など「単一マスターの一貫性が欲しいが、DB を立てるのは重い」用途にドンピシャで刺さります。

SQLite 内蔵の意味

2024 年後半に登場、2025-04-07 に GA した SQLite バックエンド が Durable Objects を実用領域に押し上げました(Cloudflare Blog: Zero-latency SQLite storage)。

技術的な意味:

- SQLite は Durable Object と 同じプロセス内 で動く → ネットワーク往復ゼロ、システムコール一発
- 通常の SaaS DB クエリ(数百 μs〜数 ms)が 数十 μs 未満
- 1 オブジェクトあたり 最大 10 GB のストレージ
- SQL の柔軟性(JOIN・INDEX・トランザクション)が使える
- 従来の Key-Value ストレージも継続サポート(Paid 限定)

設計上の帰結: 「per-tenant DB」「per-room DB」「per-session DB」がタダ同然で作れる。ユーザーごと・チャットルームごと・LLM セッションごとに 専用の DB インスタンス を持てる。マルチテナント SaaS の悩みだった「テナント分離」が構造的に解決。

2025-2026 主要リリース年表

日付内容
2025-02-11内部エラー例外に参照 ID 付与(デバッグ改善)
2025-02-19SQLite で PRAGMA optimize サポート
2025-04-07SQLite バックエンド GA + Workers Free プラン対応、ストレージ 10 GB/object に拡大
2025-08-21DurableObjectNamespace::getByName で stub 直接構築可能に(コード簡素化)
2025-10-16Cloudflare ダッシュボードの Data Studio UI で SQLite を閲覧・編集可能に
2025-10-25WebSocket メッセージ上限 1 MiB → 32 MiB(大容量メッセージング対応)
2026-01-07SQLite ストレージ課金開始 — Free 枠超過分に課金開始、商用普及フェーズへ

2025-04-07 と 2026-01-07 が二大節目: 前者で技術的準備完了 + 無料枠開放、後者で経済モデル確立。

料金体系(2026年7月時点)

Workers Paid プラン(月額 $5〜)契約者向け(公式 Pricing):

Compute:

項目込み枠超過単価
Requests100 万/月$0.15 / 100 万(WebSocket 受信は 20:1)
Duration40 万 GB-秒/月$12.50 / 100 万 GB-秒

SQLite Storage(推奨バックエンド):

項目込み枠超過単価
Row reads250 億/月$0.001 / 100 万
Row writes5,000 万/月$1.00 / 100 万
Stored data5 GB-月$0.20 / GB-月

Key-Value Storage(Paid のみ、レガシー):

項目込み枠超過単価
Read units100 万$0.20 / 100 万
Write units100 万$1.00 / 100 万
Delete requests100 万$1.00 / 100 万
Stored data1 GB$0.20 / GB-月

Free プラン(2025-04-07 から):

- 100,000 requests/日
- 13,000 GB-秒/日
- SQLite 500 万 row reads/日 / 10 万 row writes/日 / 5 GB 保存
- SQLite バックエンドのみ(KV バックエンドは Paid 限定)

特殊考慮:

- setAlarm()1 row write としてカウント
- 空の DB でも 約 12 KB の最小ストレージ を消費
- SQLite の内部メタデータもストレージ枠にカウント
- WebSocket Hibernation でアイドル中は duration 課金なし

WebSocket Hibernation — 長期セッションが安くなる差別化

Hibernation API は Durable Objects の実用上の決め手。通常の WebSocket サーバは接続中ずっと duration 課金だが、Hibernation を使うと メッセージが飛ばない間は課金停止、メッセージ到着時に自動復帰。

現実的な運用イメージ:

- チャットアプリ: ユーザーが 1 時間タイプしなくてもコスト発生せず、メッセージ着信で即応答
- LLM 会話履歴: セッション作成時に DO 起動 → ユーザー無操作の間 hibernate → 次の質問で復帰
- ライブ通知: 通知イベントが疎な場合、実質「イベント発火時のみ課金」に

2025-10-25 の WebSocket メッセージ上限 1→32 MiB 拡張 と組み合わせて、大容量ストリーミング + Hibernation の両立が可能に(LLM の長文出力・動画チャンク配信など)。

アーキテクチャ — 単一マスター semantics の仕組み

Rules of Durable Objects公式ベストプラクティス)が定める重要な性質:

1. 同じ名前の DO は世界で 1 個 — 複数プロセスで並列に走ることはない
2. 順序保証 — 同一 DO への複数リクエストは serial に処理される
3. 強い一貫性 — 書き込みは即座に後続読み取りに反映
4. 地理的近接性 — DO は最初にアクセスしたリージョンに近い場所で稼働(一度決定すると比較的固定)
5. 障害時の再スケジュール — 落ちた場合は別リージョンに自動移動、ストレージは追従

この単一マスター semantics のおかげで、分散ロック・カウンタ・レートリミッタ・イベントソーシング が数十行のコードで書ける。従来 Zookeeper / etcd / Redis Cluster が必要だった領域が、DO 1 つで代替できます。

代表的ユースケース

(1) LLM エージェント・会話履歴: 各セッションを DO として実装 → 会話ログを SQLite に保存 → Hibernation で疎な会話は課金ゼロ。Claude CodeCursor iOS のバックエンドが実質この形。

(2) 共同編集ツール: ドキュメント毎に DO → OT/CRDT の状態を SQLite に保存 → 数十〜数百ユーザーの同時編集を単一マスターで整合。Notion 系・Figma 系。

(3) リアルタイムチャット: ルーム毎に DO → メッセージ履歴を SQLite に保存 → WebSocket Hibernation で運用コスト削減。Discord / Slack ライクなアプリの構造。

(4) マルチプレイヤーゲーム: ゲームルーム毎に DO → プレイヤー状態・スコア・ゲーム進行を SQLite に → 単一マスターで整合。実際に Cloudflare 事例あり。

(5) IoT / 金融のイベントバッファ: デバイス / 口座毎に DO → イベントストリームを SQLite に buffered → downstream 処理へ流す。順序保証と単一マスター semantics が効く。

(6) 分散カウンタ・レートリミッタ: ユーザー / API キー毎に DO → 単純なカウンタを atomic に更新。Zookeeper / Redis Cluster 級の複雑基盤を数十行で代替。

(7) マルチテナント SaaS の per-tenant DB: テナント毎に DO → 完全にデータ分離、SQL 実行、10 GB まで拡張可。B2B SaaS のマルチテナント設計が構造的に単純化。

Cloudflare Workers エコシステム内の位置付け

Cloudflare の分散基盤プリミティブは:

製品役割一貫性モデル
WorkersStateless コンピュート(HTTP handler)N/A
KVEventually consistent Key-Value遅延反映(read-heavy 向け)
D1SQLite(グローバル or リージョナル)Read replica ベース
R2Object Storage(S3 互換)S3 相当
Queuesメッセージキューat-least-once
Durable ObjectsStateful・単一マスター・強一貫性Strong consistency

Durable Objects の位置: 他プリミティブが提供しない『強一貫性 + 単一マスター + 低レイテンシ』を担当。D1 は多ノードのリードレプリカで整合性が緩い場面あり、DO は「唯一の 1 個」なので迷わない。

他プラットフォームとの比較

プラットフォーム相当概念差異
AWSActor Framework + DynamoDB / EFS自前でルーティング・レプリケーション実装が必要
AzureDurable Functions (Entity Function).NET / 特定言語制約、コールドスタート大
Google CloudFirestore + Cloud Functions単一マスターは選択制、レイテンシ大きめ
Deno Deploy未対応(Deno KV は eventually consistent)
Vercel Edge Functions未対応(stateless)
Fly.ioRegional VMs + LiteFSVM 起動のコールドスタート

Durable Objects の独自性: 『名前で一意に決まるコンピュート + 完全同居 SQLite』というプリミティブは他プラットフォームに存在しない。Azure Durable Functions が近いが、コールドスタート・言語制約・DB 完全同居ではない点で及ばず。

実装例 — チャットルームの骨格コード

ts
export class ChatRoom {
  sql: SqlStorage;
  sockets: Set<WebSocket> = new Set();

  constructor(state: DurableObjectState) {
    this.sql = state.storage.sql;
    // 初期化時にテーブル作成
    this.sql.exec(`CREATE TABLE IF NOT EXISTS messages (
      id INTEGER PRIMARY KEY AUTOINCREMENT,
      user TEXT, body TEXT, ts INTEGER
    )`);
  }

  async fetch(req: Request): Promise<Response> {
    if (req.headers.get('upgrade') === 'websocket') {
      const pair = new WebSocketPair();
      // Hibernation API で低コスト運用
      this.state.acceptWebSocket(pair[1]);
      return new Response(null, { status: 101, webSocket: pair[0] });
    }
    // 履歴取得
    const rows = this.sql.exec('SELECT * FROM messages ORDER BY id DESC LIMIT 50').toArray();
    return Response.json(rows);
  }

  webSocketMessage(ws: WebSocket, msg: string) {
    const { user, body } = JSON.parse(msg);
    this.sql.exec('INSERT INTO messages (user, body, ts) VALUES (?, ?, ?)',
      user, body, Date.now());
    // 全参加者にブロードキャスト
    for (const s of this.sockets) s.send(msg);
  }
}

// Worker 側
export default {
  async fetch(req: Request, env: Env): Promise<Response> {
    const roomId = new URL(req.url).pathname.slice(1);
    const stub = env.CHAT_ROOM.getByName(roomId);
    return stub.fetch(req);
  }
};

このコードで得られるもの:

- ルーム毎に世界で 1 個のインスタンス(getByName
- WebSocket 接続を Hibernation API で管理 → アイドル時 duration 課金ゼロ
- SQLite にメッセージ履歴を永続化 → 再接続時に過去 50 件返却
- 単一マスターなので、順序保証・一貫性・レースコンディションなし

これと同等の機能を通常の Node.js + Redis + Postgres で作ると、少なくとも数百行のインフラコード + 運用が必要です。

運用上の留意点

(1) 単一マスターの scalability 上限: 1 個の DO は 1 個のインスタンス。極端に高スループット(数万 req/s per DO)は苦手。分散化が必要な場合は複数 DO への sharding 設計を。

(2) 地理的近接性のトレードオフ: DO は初回アクセス地に近い場所で稼働 → 遠隔地からのアクセスはレイテンシが伸びる。グローバル分散が必要な場合は KV や D1 の read replica 併用を。

(3) ストレージ課金開始(2026-01-07 以降): 従来無料だった SQLite ストレージが Free 枠超過で課金対象に。5 GB/月の Free 枠と 5 GB-月の Paid 込み枠 の見積もりを事前に。

(4) Vendor lock-in: DO は Cloudflare 独自プリミティブ。他クラウドへの移植は困難。戦略的にプラットフォーム依存を受け入れる判断が必要

(5) Cold start: 初回アクセス時に数百 ms のコールドスタート。頻繁にアクセスされる DO はホット状態を維持しやすい が、疎なアクセスは毎回コールドの可能性。

(6) setAlarm() の課金: 1 write としてカウントされるため、大量のタイマー設定はコスト増要因。バッチ化や集約を検討。

戦略文脈 — 2026 年のエッジ分散基盤市場

2026 年、エッジコンピューティングは 『CDN の延長』から『フル分散アプリプラットフォーム』へ シフト。Cloudflare のポートフォリオ(Workers・D1・R2・KV・Queues・Durable Objects)は AWS 分散基盤の代替候補として現実的な選択肢 に。

Durable Objects の 2026 年ポジション:

1. LLM ワークロード時代のセッション管理標準: ローカル LLMClaude Sonnet 5Cursor iOSGrok Build 等の会話状態を格納するバックエンドの本命
2. マルチテナント SaaS の per-tenant DB: SaaS 設計者にとって『DB 分離』の悩みを構造的に解消
3. Vercel / Netlify のような『純 stateless エッジ』への差別化: stateless では書けない用途が Cloudflare だけで書ける
4. AWS Lambda + DynamoDB + WebSocket API + ElastiCache の複合構成を単一プリミティブに集約

本トピックに関連する弊社サービスとして ソフトウェア開発AI コンサルティングOpenClaw 導入セットアップ があります。Durable Objects を含む Cloudflare Workers ベースのエッジアプリケーション設計・LLM セッション管理・マルチテナント SaaS 実装のご相談は お問い合わせ から。

まとめ

Cloudflare Durable Objects は、2026 年時点で最も『分散システムの複雑さを 1 つのプリミティブに畳み込んだ』プラットフォーム機能。SQLite 完全同居によるゼロレイテンシ、名前ベースの世界一意ルーティング、WebSocket Hibernation のコスト効率、Workers Free プラン対応、2026-01-07 のストレージ課金開始による経済モデル確立、と 5 拍子揃った状態で商用普及フェーズに入っています。

3 つの本質的インパクト:

1. 分散システム設計の民主化 — Zookeeper / etcd / Redis Cluster 級の複雑基盤を数十行で代替
2. LLM ワークロードのセッション管理標準Claude CodeCursor iOSagmsg のバックエンドとして自然にフィット
3. マルチテナント SaaS の per-tenant DB モデル確立 — テナント分離の設計負担を構造的に解消

留保: 単一マスターの scalability 上限、地理的近接性のトレードオフ、Cloudflare 独自プリミティブによる vendor lock-in、cold start、setAlarm() の課金設計。

References

公式ドキュメント:
- Durable Objects Overview
- What are Durable Objects?
- Product Page
- Pricing
- SQLite Storage API
- Access Durable Objects Storage
- Rules of Durable Objects
- FAQ
- Release Notes

公式ブログ・アナウンス:
- Zero-latency SQLite storage in every Durable Object

第三者解説・比較:
- FlareCalc — Durable Objects Pricing Calculator (2026)
- Oreate AI — Demystifying Cloudflare Durable Objects Pricing
- Callsphere — Workers + Durable Objects at 10k Concurrent Cost
- Alphonso Labs — 12 Edge Computing Trends in 2026

関連コラム:
- ローカル LLM 2026年6月最新版
- agmsg — CLI エージェント間メッセージング
- Sakana Fugu — オーケストレーション・モデル
- Apple Container — Linux コンテナ runtime
- Claude Code Agent View — 並列オーケストレーション
- Cursor iOS — モバイルコーディングエージェント
- Claude Sonnet 5 リリース
- Grok Build — xAI CLI コーディングエージェント
- オープン源内 — デジタル庁 OSS

お気軽にご相談ください

お問い合わせ