GEMINI LABEN
ROBOTICS — 8月31日に停止した ER 1.6 preview には後継があります。Gemini Robotics ER 2 が公開プレビュー中で、通常版とストリーミング版の2種類が提供されていますVIDEO — ER 2 の成功・失敗判定は静止画ではなく生の映像フィード上で動きます。こぼれ・滑り・位置ずれのような、実行の途中で起きる失敗を捉えられる設計ですDEADLINE — 次の期限は9月30日、gemini-omni-flash-preview の廃止です。移行先は8月27日に GA になった gemini-omni-1.1-flash で、残り4週間を切りましたAPIKEY — 残りの標準 API キーは、制限付きのものも含めて9月中に全面停止します。移行先は Google Cloud サービスアカウントに紐付く auth キー形式ですPRICE — Gemini 3.7 Flash の導入価格 $0.75/$3.75 per 1M は12月31日までです。2027年1月1日から $1.50/$7.50 になるため、年を跨ぐ見積もりは2本立てが要りますAUDIO — Gemini 3.5 Transcribe は85言語以上の言語検出、話者ダイアライゼーション、単語単位タイムスタンプ、最大1,000語のカスタム語彙バイアスに対応していますROBOTICS — 8月31日に停止した ER 1.6 preview には後継があります。Gemini Robotics ER 2 が公開プレビュー中で、通常版とストリーミング版の2種類が提供されていますVIDEO — ER 2 の成功・失敗判定は静止画ではなく生の映像フィード上で動きます。こぼれ・滑り・位置ずれのような、実行の途中で起きる失敗を捉えられる設計ですDEADLINE — 次の期限は9月30日、gemini-omni-flash-preview の廃止です。移行先は8月27日に GA になった gemini-omni-1.1-flash で、残り4週間を切りましたAPIKEY — 残りの標準 API キーは、制限付きのものも含めて9月中に全面停止します。移行先は Google Cloud サービスアカウントに紐付く auth キー形式ですPRICE — Gemini 3.7 Flash の導入価格 $0.75/$3.75 per 1M は12月31日までです。2027年1月1日から $1.50/$7.50 になるため、年を跨ぐ見積もりは2本立てが要りますAUDIO — Gemini 3.5 Transcribe は85言語以上の言語検出、話者ダイアライゼーション、単語単位タイムスタンプ、最大1,000語のカスタム語彙バイアスに対応しています
記事一覧/開発ツール
開発ツール/2026-04-27上級

Gemini API + Cloudflare Durable Objects でつくるステートフルAIエージェント本番ガイド

Cloudflare Durable Objects と Gemini API で会話履歴を永続化するステートフル AI エージェントを構築します。wrangler.toml のバインディングからルーティング Worker、WebSocket Hibernation、クライアント実装まで本番前提で解説します。

gemini-api285cloudflare4durable-objectswebsocket4agent9

プレミアム記事

「AIに昨日話した内容を覚えていてほしい」という要望は、個人開発のチャットアプリでも繰り返し出てきます。Gemini API には会話状態を覚えてくれる機能はないので、サーバー側で履歴を保持する必要があります。私はこの 1 年でいくつかの構成を試しましたが、Cloudflare Durable Objects と Gemini API を組み合わせた構成が、個人開発者にとって最もコストパフォーマンスが良いという結論に至りました。

ここではその本番運用で得た知見を体系的にまとめます。とりわけ「Workers だけで作ろうとして詰まった」「KV や D1 で会話履歴を持たせようとして同時編集が壊れた」といった、私が実際に踏んだ落とし穴を中心に書いていきます。

なぜ Durable Objects が必要なのか — Workers の状態問題

Cloudflare Workers は素晴らしいエッジ実行環境ですが、ステートレスです。リクエストごとに別のワーカーインスタンスで実行されるため、メモリ上に持った変数は次のリクエストでは消えてしまいます。

会話履歴を持たせるには KV や D1 (SQLite) を使う方法もありますが、ここで問題が起きます。同じ会話セッションに対して 2 つのリクエストがほぼ同時に来た場合、片方が読んで書き戻している間にもう片方も読み書きしてしまい、会話履歴の一部が消える「lost update」が発生するのです。私が以前 KV ベースで実装したチャットでは、ユーザーが連続でメッセージを送ったときに「あれ、さっきの返信が消えた?」というクレームが入って気付きました。

Durable Objects は、特定のキー(私の場合は userId:sessionId)に対して世界に 1 つだけのシングルトンインスタンスを保証してくれます。同じキーへのリクエストはすべてその同じインスタンスにルーティングされ、内部のメモリと SQLite ストレージは順序保証された状態で扱えます。これは、会話エージェントのように「同じセッションには同じ状態」が要求される用途に理想的です。

価格面でも、Workers Paid プラン(月 $5)に Durable Objects が含まれており、リクエスト数とコンピュート時間に応じた従量課金で、個人開発で本番投入する規模なら月数ドルの追加で十分です。

構築するもの — WebSocket 接続のステートフル会話エージェント

この記事で実装するのは次のような系です。

  • ブラウザから WebSocket で接続するチャット UI
  • セッションごとに 1 つの Durable Object が紐付き、会話履歴を SQLite に永続化
  • ユーザー発話を Gemini 2.5 Pro に投げ、応答をストリーミングで WebSocket に流す
  • 履歴が長くなったら古い部分を自動要約して圧縮(コンテキスト爆発の防止)
  • ハイバネーション対応で、無接続時はメモリゼロで待機できる

ファイル構成は最小で次の 3 つだけです。

  • wrangler.toml — バインディング定義
  • src/worker.ts — エントリポイント、Durable Object へルーティング
  • src/agent.ts — Durable Object 本体(会話エージェントの実装)

完成形をひと目で見てから読み進めると、各セクションの位置付けが分かりやすいかと思います。

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
Cloudflare Workers だけでは実装できない『会話を覚えているAI』を、Durable Objects と Gemini API の組み合わせで動く形にできる
WebSocket Hibernation や Storage トランザクションの落とし穴を避けながら、本番投入できるステートフルエージェントの設計パターンを習得できる
個人開発者でも月額数ドル規模のインフラ費用で、24時間動き続ける会話AIサービスを運用できる構成へ移行できる
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Gemini Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥2,480 の永久アクセス
メンバーシップを見る →

関連記事

開発ツール2026-08-21
通知文の長さ指示が英語版だけ効かなかった理由と、生成後に幅で詰める実装
日英2言語のプッシュ通知を Gemini に生成させたところ、英語版だけが実機で途切れていました。原因は文字数での長さ指示です。表示幅の実測値と、生成後に詰めるフィッティング実装をまとめました。
開発ツール2026-08-10
ヘルプが答えていない質問を、Gemini に問題を作らせて先に見つける
ヘルプやFAQに書いてあるのに問い合わせが止まらないとき、その資料から問いを生成し、資料本文だけで答えられるかを判定する二段構えの点検パイプラインを作ります。呼び出し設計と費用の見積もりまで含めた実装手順です。
開発ツール2026-07-11
同じナレーションを二度生成しない — TTS 音声を端末にキャッシュする鍵設計と失効の運用
瞑想・癒し系アプリのように同じ音声を何度も再生する場面で、Gemini TTS の出力そのものをキャッシュしてコストを実質ゼロに近づける設計です。テキストだけでは足りないキャッシュキーの組み立て方、サーバ生成キャッシュと端末キャッシュの二層構成、モデル停止期限への備えとしての失効ポリシーを、動くコードと実測値でまとめました。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →