総合 89 位公式ベンダー⌘ 開発・コードClaude Code 対応Codex 対応Apache-2.0

durable-objects

Cloudflare の Durable Objects のコードを書かせ、見直させる。チャットの部屋やユーザーごとに 1 つ持つ「状態を持つ部品」を、7 つの決まりと禁止事項で組ませる。細部は最新の公式文書を読みに行かせる

cloudflareskillsSKILL.md の原文

npx skills add cloudflare/skills/durable-objects

入れる前にこのスキルがすること・注意点・SKILL.md の原文を確かめてください。解析は安全性の判定ではありません。

インストール
116,001
実用度
82
GitHub star
3,292
最終更新
2026/11/7

頼み方の例

そのままコピーして使えます

durable-objectsスキルを使って、この Worker の Durable Object のコードを見直してください。決まりと禁止事項に照らして、問題のある箇所と理由を一覧にしてください。コードはまだ書き換えないでください。

対象のファイルや状況は、ご自身の作業に合わせて置き換えてください。

このスキルがすること

SKILL.md の記述から機械的に抽出
  • 外部通信・シェル実行・ファイル操作の記述は見つかりませんでした

これは安全性の判定ではありません。 SKILL.md にそう書かれているという事実だけを並べています。実際に問題があるかは使い方と文脈で決まるため、当サイトでは断定しません。導入前に SKILL.md の原文を確認してください。

SKILL.md の規模

文字数
6,259
手順
7
コード例
6
同梱ファイル
4

コードブロックの言語: jsonc、typescript

この解説は再確認中です。 2026年11月6日に原本(SKILL.md)が更新されており、以下の解説が現在の内容と合っていない可能性があります。最新の内容は GitHub の SKILL.md を確認してください。

いつ使うか

Cloudflare Workers で、状態を持つ処理を作りたいときに効きます。チャットの部屋、多人数のゲーム、共同編集、在庫や予約、ユーザーごとのデータ、WebSocket の接続などです。

Durable Objects は、1 つの名前に 1 つの実体が対応し、その中に保存領域を持つ仕組みです。

組み立ての決まり
7 つ
名指しされた禁止事項
5 つ
同梱ファイル(決まりの詳細・試験・Workers の設定)
3 件

本文が「使う・使わない」を分けている

使う使わない
調整(チャットの部屋、ゲーム、共同編集)状態の要らない処理(普通の Worker で足りる)
強い一貫性(在庫、予約、順番のあるゲーム)世界中に最大限ばらまきたいとき
実体ごとの保存(テナントごと、ユーザーごと)互いに独立した大量の並列の要求
続く接続、実体ごとの予約した処理—

7 つの決まり

  • 調整の単位で分ける全体で 1 つにしない(部屋ごと、ゲームごと、ユーザーごと)
  • getByName() を使う同じ入力で同じ実体に行くようにする
  • 保存は SQLite移行の設定に new_sqlite_classes
  • 初期化は作るときにblockConcurrencyWhile() で表の準備だけをする
  • RPC のメソッドで呼ぶfetch() ではなく RPC のメソッドで呼ぶ(互換日付が 2024-04-03 以降)
  • 先に保存する先に保存し、あとで手元の値を更新する
  • アラームは 1 つの実体に 1 つ予約した処理は 1 つだけ。setAlarm() は前のものを置き換える

使わないほうがいいとき

  • 状態の要らない API普通の Workers で足ります。本文も「使わない」側に挙げています
  • Cloudflare 以外の実行環境Workers と Durable Objects に固有の書き方です
  • ページの速さの改善同じ公開元の web-perf が、表示の速さを測って直すほうの担当です

表示の速さのほうは、同じ公開元の web-perf が担当です。

注意点

解析では見えない、公式文書の読み込みがある

SKILL.md の解析では、外部通信・シェル実行・ファイル操作の記述は見つかっていません。ただし本文は、細部をCloudflare の公式文書から取ってこいと指示していて、実際には developers.cloudflare.com を読みに行きます。

解析は、この地の文の指示を拾えていません。同梱ファイルは 3 件で、決まりの詳細、試験、Workers の設定の資料です。

「覚えている知識は古いかもしれない」が前提

同梱の資料も、書き方の細部は文書の側に置き、写さない方針です。

禁止事項が具体的

禁止事項は次の 5 つです。

  • 1 つの実体で全部受ける全部の要求を 1 つの実体で受ける
  • 要求のたびの blockConcurrencyWhile()要求のたびに blockConcurrencyWhile() を使う
  • 手元の値だけに持つ大事な状態を手元の値だけに持つ
  • 保存の間に await を挟む関連する保存の間に await を挟む(まとめて書く性質が崩れる)
  • 外部への通信をまたいで持ち続ける外部への通信をまたいで blockConcurrencyWhile() を持ち続ける

権限は実装している Worker に従う

Durable Objects には独自の役割や権限が無く、実装している Worker の権限に従う、と書かれています。監視やデータの閲覧の権限を渡す前に、最新の文書を確かめるよう指示しています。

インストール数

インストール数は約 6.5 万件です。同じリポジトリの 10 件は約 4.7 万〜8.1 万件で(2026-09-07 の上流集計)、1 件ずつ選ばれている形です。

インストール数の推移

日次で記録

9月18日 〜 11月7日(49日分)

インストール数と 1 日あたりの増加は Skillselion が に集計した値です。上流の更新は数日おきなので、前日比ではありません。GitHub star と最終更新は に GitHub から取得しました。

よくある質問

実体の作り方はどれを使えばいいですか

本文の既定は、名前から決まる getByName("room-123") です。ID の文字列を保存しているなら idFromString()、新しく一意の ID が要るなら newUniqueId() を使い、その場合は ID と用途の対応を別に保存しておきます。

試験はどう書きますか

Cloudflare の Vitest の連携を使います。同梱の資料は、RPC の試験と HTTP の経路の試験を分けること、1 つの実体が呼び出しをまたいで状態を保ち、別の実体とは独立していることを確かめること、アラームは実時間を待たずに試験用の関数で起こすこと、を挙げています。

SQLite と KV のどちらの保存を使いますか

新しく作るなら SQLite です。SQL は同期で呼べるので推奨、と書かれています。既存のクラスが KV で動いているなら、どちらかを確かめてから API を選ぶよう資料にあります。

設定ファイルは toml と jsonc のどちらですか

資料は wrangler.jsonc を推奨とし、wrangler.toml を代わりの書き方として載せています。

同じ分類のスキル

⌘ 開発・コード

開発・コードのスキルをすべて見る →

← スキル一覧に戻る/ このスキルを他と比べる