SYNON 記事 社内サービス開発
Cloudflare スタック / 社内サービス構築 全工程図解

プロンプトからデプロイまで
— 非エンジニアのための作業工程ガイド

作成日: 2026-08-28 / シンオン株式会社

対象: つくる人(非エンジニア社員)/ 用意する人(情シス・エンジニア)/ 決める人(経営)

題材: 顧客問い合わせの受付台帳 / 日報の集計ダッシュボード

巻末: プランA・プランB・Cloudflare OS の 3 方式比較(工程の横並び図+一覧表)

この資料の位置づけと読み方

同じフォルダにある cloudflare-os-internal-service-guide「導入すべきか」を判断するための資料であるのに対し、この資料は「実際に手を動かす順番」だけを、1 工程 1 図で並べたものです。

この資料既存の導入ガイド
目的作業する判断する・稟議を通す
並び手を動かす順論点の順
中身工程・図・チェックリスト・コピペ用プロンプト事実・根拠・費用・未確認事項
読む人つくる人が手元に置く決める人が一度読む
あなたの立場読むところ所要
つくる人(非エンジニア)第 III 部(工程 5〜11)だけで足ります。第 II 部は自分ではやりません20 分
用意する人(エンジニア)第 I 部 → 第 II 部(工程 1〜4)→ 第 IV 部 → 第 V 部40 分
決める人(経営・情シス)第 I 部 と 第 V 部(20〜24 章)15 分
前提の断り

Cloudflare OS は 2026 年 8 月に公開されたばかりのソフトウェアです。公式リポジトリに 「early-access software」と明記されています。この資料は一次情報に基づきますが、確認できていない項目は 25 章に列挙しています。稟議前に必ず目を通してください。

第 I 部 — 全体像決める人・用意する人・つくる人 共通/所要 15 分

13 分でわかる全体像全員

この資料でいちばん大事な図です。工程は 3 つのかたまりに分かれ、「デプロイ」は最初の 1 回しか出てきません。

一度きり エンジニア・半日 第 II 部 ① 設置するpnpm deploy ② 入口を決めるAccess ③ AI と予算AI Gateway ④ 見た目/admin ★「デプロイ」という作業は、この 1 回しか出てきません 毎回 つくる人 ブラウザだけ 10〜30 分/第 III 部 ⑤ 入る10 秒 ⑥ 頼むプロンプト ⑦ 確かめる6 点 ⑧ 直すaccept/revert ⑨ つなぐ任意 ⑩ 配る2 分 気に入らなければ取り消す ターミナル・GitHub・ビルド・デプロイ は 一度も出てきません ときどき 情シス・月 30 分 ⑫ 面倒をみる 予算の確認/入場者名簿の棚卸し/監査ログ /版の更新(勝手には上がりません)
図 1 — 工程は「一度きり」「毎回」「ときどき」の 3 つに分かれる。デプロイは最初の 1 回だけ

普通の Web アプリ開発と決定的に違う 3 点

普通のやり方このやり方
仕様書を書く → 作る → デプロイする頼む → もう動いている
作った人の PC にコードがあるすべて Cloudflare の中にある
公開のたびに承認がいる共有ボタンで即配布(=最大の論点。第 V 部)
30分
1 本目が動くまで
(非エンジニア・目標値)
0分
つくる人の端末
セットアップ
0回
公開までの
エンジニア接触
$5/月
インフラ増分
+ AI 推論の実費

2使う部品 — Cloudflare スタックの地図エンジニア

「Cloudflare スタック」と言ったとき、実際に動いている部品はこれだけです。つくる人はこの図を覚える必要はありません。エンジニアが 1 回そろえるだけです。

社員ブラウザ Cloudflare Access — 入口の門番 誰が入れるかを決める唯一の門。ユーザー/ドメイン/IdP グループ/国・IP/端末条件 Workers(土台・Paid $5/月)+ Durable Objects ワークスペース本体。ここに Cloudflare OS が乗る KV × 3設定・状態自動作成される R2 × 1ファイル置き場自動作成される Dynamic WorkerLoadersアプリを隔離実行 BrowserRendering画面の撮影等 Durable Object Facet + SQLite アプリ 1 本ごとに独立したデータベース (任意だが実質必須)AI Gateway → Workers AI / Anthropic / OpenAI / Google ★ここでモデルを絞り、費用の上限を張る 設定しないと、チャットで頼んでも何も起きない(既定で無効)
図 2 — 部品はこれだけ。KV・R2・Dynamic Worker Loaders は自動でそろうので、実際に「決める」のは Access と AI Gateway の 2 つ
部品役割誰が触るか
Cloudflare Access誰が入れるかを決める入口。これが唯一の門エンジニア(一度)
Workers(Paid $5/月)全体の土台エンジニア(一度)
KV ×3 / R2 ×1設定・状態・ファイルの置き場。deployment.jsoncnull のままなら Wrangler が自動作成触らない
Dynamic Worker Loaders作ったアプリ(Gadget)を隔離して動かす仕組み触らない
Browser Rendering画面の撮影など触らない
Durable Object Facet + SQLiteアプリ 1 本ごとに独立したデータベース触らない
AI Gateway(任意だが実質必須)どのモデルを使えるか・いくらまで使えるかエンジニア(一度+月次)
注意 — Workers Free では回りません

「Workers Paid が必須」と明記した一次情報はありません。ただし Free は CPU 10ms 制限D1 10 個上限があり、社内利用に耐えません。$5/月 を前提に稟議を通してください。Free 前提で通すと、後で必ず詰みます。

3工程表 — 誰が、いつ、何を全員

#工程誰がいつ所要
1設置するエンジニア一度きり1〜2 時間5 章
2入口を決める(Access)エンジニア一度きり30 分6 章
3AI と予算の栓を開けるエンジニア一度きり30 分7 章
4見た目と管理者を決めるエンジニア一度きり15 分8 章
5入るつくる人毎回10 秒9 章
6頼む(プロンプト)つくる人毎回5〜15 分10・11 章
7確かめるつくる人毎回5 分12 章
8直すつくる人毎回5〜30 分13 章
9つなぐ(Gatekeeper)つくる人+エンジニア必要なときだけ10 分〜14 章
10配るつくる人作り終えたら2 分15 章
11定着させるつくる人+管理者作り終えたら10 分16 章
12面倒をみるエンジニア/情シス毎月30 分17 章
ここが一番の差

工程 1〜4 は、アプリが 10 本になっても 100 本になっても増えません。「1 本ずつエンジニアが面倒をみる」既存プロセス(プランA/B)との、最大の違いです。

4始める前のチェックリストエンジニア

工程 1 に入る前に、これが全部そろっているかを確認してください。1 つでも欠けていると途中で止まります。

#用意するもの確認方法欠けていると
1Cloudflare アカウント(Workers Paid)ダッシュボード → Workers & Pages → プランFree だと CPU 10ms で落ちる
2Cloudflare Zero Trust が有効ダッシュボード → Zero TrustAccess アプリが作れない
3ホスト名(例 os.synon.co.jp)の DNS が Cloudflare 管理下DNS 画面にゾーンがある独自ドメインで公開できない
4Node.js 24 / pnpm 11 相当node -v / pnpm -vpnpm check が通らない
5wrangler にログインできるpnpm exec wrangler loginデプロイできない
6IdP(Google Workspace 等)または One-time PIN の方針決めてあるか誰も入れない/全員入れてしまう
7AI の費用を会社が持つか本人が持つかの方針決めてあるかAI が既定で無効のまま動かない
8月次の予算上限の初期値決めてあるか請求で事故る
1 週目の抜け道

3 と 6 は飛ばして構いません。方式 A(オンライン設置)+ One-time PIN なら、DNS も IdP も無しで触れます。ただし 2 週目には方式 B で建て直す前提で計画してください(5 章)。

第 II 部 — 一度きりの工程エンジニア/この部で「デプロイ」は終わります

5工程 1設置するエンジニア

5-1. 3 つの設置方法から選ぶ

「まず触ってみたい」 「本番で使う」 「完全オンプレ」 方式 A オンライン os.cloudflare.app/deploy を開く ○ クリックだけ・ローカル不要 ○ 認証方式と管理者を自動設定 × workers.dev のアドレス × ブランディングしか変えられない × 独自 Gatekeeper 不可 1 週目に使う 方式 B starter リポジトリ clone → 設定 → deploy ○ 独自ドメイン ○ Access 連携 ○ 独自 Gatekeeper ○ ログ設定 △ 30 分〜2 時間 ★ 2 週目以降・本番はこれ 方式 C 自社 workerd Cloudflare を介さず自前で動かす × 公式に「COMING SOON」 × 手順もツールも未整備 当面 選べない 方式 A から方式 B へは「移行」できません。方式 B で建て直します(A で作った Gadget は捨てる前提で)
図 3 — 1 週目は方式 A で触り、2 週目に方式 B で建て直す

5-2. 方式 B — コマンドが何をしているか

$ git clone https://github.com/cloudflare/cloudflare-os-starter
      └→ 「設置キット」を取ってくる。本体はまだ入っていない

$ cd cloudflare-os-starter
$ git submodule update --init
      └→ 本体を「特定のバージョンに固定して」取り込む
         ★勝手にバージョンが上がらない設計。早期アクセス版として正しい

$ pnpm install
$ pnpm --dir cloudflare-os install
      └→ 必要な部品を集める(2〜5分)

$ pnpm exec wrangler login
      └→ ブラウザが開く。自社の Cloudflare アカウントに繋ぐ

  ここで deployment.jsonc を編集 ────────────────┐
                                                 │
$ pnpm check                                     │
      └→ 設定の書き間違いを先に見つける          │
         ★ここで落ちるのは正常。直して再実行     │
                                                 │
$ pnpm deploy                                    │
      └→ 自社の Cloudflare アカウントに設置される│
                                                 │
$ open https://<ホスト名>/admin  ←──────────────┘
      └→ サイト名・ロゴ・色を設定(再デプロイ不要)

前提: Node.js 24 / pnpm 11 相当

5-3. deployment.jsonc に書く 5 つ

何を書くかどこで手に入るか
account IDCloudflare のアカウント IDダッシュボード右下
Worker 名synon-os自分で決める
ホスト名os.synon.co.jp自社ドメイン。DNS は Cloudflare 管理下
Access audience(AUD)Access アプリの識別子6 章で作る
管理者メール(access.admins/admin に入れる人自分で決める
最初に 2 名入れておく

access.admins/admin 画面から変更できません。公式ドキュメントに「管理者セッションが乗っ取られても信頼境界を書き換えられないように」と明記されています。管理者を増やすには再デプロイが必要です。

5-4. 工程 1 の完了条件

6工程 2入口を決める — Cloudflare Accessエンジニア

6-1. 3 層で守られている

ここを誤解すると、権限設計を丸ごと間違えます。

1 Cloudflare Access — 「ワークスペースに入れるか」 ユーザー/ドメイン/グループ/国・IP/端末条件で制御できる ★この層だけがグループで制御できる 2 Cloudflare OS の共有 — 「どのアプリを触れるか」 役割は build(編集もできる)/ use(使うだけ)の 2 つだけ ★個人単位のみ。グループ共有は存在しない(将来計画にも無い) 3 Gatekeeper と観測ログ — 「そのデータを読んでいい人か」 共有相手は自分の接続アカウントで、同じデータを読めるかを検証される ★開くたびに再検証される
図 4 — アクセス制御は 3 層。グループで制御できるのは第 1 層だけ

6-2. 手順

1. Zero Trust → Access → Applications → Add an application
2. 「Self-hosted」を選ぶ
3. ホスト名(os.synon.co.jp)を入れる
4. できたアプリの Application Audience (AUD) タグをコピー
5. deployment.jsonc の Access audience 欄に貼る → pnpm deploy
6. 「誰が入れるか」をポリシーで決める

Access のポリシー = 入場者名簿です。Cloudflare OS 側にユーザー管理画面はありません。退職者を落とすのも、ここ 1 か所です。

6-3. ポリシーの決め方(Synon の推奨)

項目推奨理由
認証方式Cloudflare Access 一択starter の既定。パスワードログインとサインアップは無効化される
IdPGoogle Workspace コネクタ「Google」コネクタはグループ情報を取れないと公式に明記。必ず Workspace の方
1 週目の検証One-time PINIdP なしで単独で使える。複数 IdP の同時有効化も可
グループ制御IdP 側のグループCloudflare の Access Groups と二重管理にしない
ActionAllow / Block のみBypass は認証を通さない。社内サービスに付けない(評価順は Service Auth → Bypass → Allow → Block)
セッション既定 24 時間15 分〜1 か月で調整可
WARP不要公開ホスト名の self-hosted アプリはブラウザだけで入れる(clientless)
WARP が要るのは 3 つの場合だけ

①プライベートネットワーク経由で届かせる ②Require WARP / Require Gateway をポリシーに入れる ③デバイスポスチャチェック(会社支給端末限定・暗号化・OS バージョン)。まずは WARP なしで始めてください。

6-4. 唯一の穴 — オリジン直叩き

社員 Access の門os.synon.co.jp Cloudflare OS(オリジン) ○ 正しい経路 攻撃者 Worker のオリジンを直接叩く(門を回避) × 塞ぐ必要あり 塞ぎ方① Cf-Access-Jwt-Assertion を検証(starter は既定で実装済み) 塞ぎ方② Require Access protection を ON(設定漏れの防止)
図 5 — 穴は 1 つだけ。starter は塞ぎ方①を既定で実装している

deployment.jsoncaccess.issuer / audience はこの検証のためにあります(公開鍵は 6 週間ごとローテーション)。

6-5. 工程 2 の完了条件

7工程 3AI と予算の栓を開けるエンジニア

7-1. AI は既定で無効。開けないと何も生成されない

公式 starter の README にこうあります。

原文

AI is disabled by default. The application can deploy without an AI Gateway or token.

設置しただけでは、チャットで頼んでも何も起きません。1 週目に最も引っかかる所です。

モード設定どうなるか
モデルなしaiGateway.enabled: falseシークレット不要でデプロイできる。会社負担のモデルは提供されない
Workers AI を直接providers: ["cloudflare"]workersAi.mode: "direct"AI Gateway のログが残らない
Workers AI を Gateway 経由同上 + workersAi.mode: "gateway"可観測性がつく。★これを選ぶ
外部プロバイダprovidersanthropic / openai / google を追加課金設定(Unified Billing か BYOK)が要る
# 必要なシークレットは 1 本だけ
pnpm exec wrangler secret put CF_AI_GATEWAY_API_TOKEN --name synon-os

API トークンの権限(アカウント権限): AI Gateway – Read / AI Gateway – Edit / Workers AI – Read

7-2. モデルは「会社が土台を絞り、本人が選ぶ」

管理者deployment.jsonc providers = 会社が費用を持つモデル群 cloudflare / openai / anthropic / google(型定義には ollama も) 増やしすぎると比較検討で止まる。Synon は cloudflare + 外部 1 社 この範囲の中で つくる人Connectionsパネル ・自分のモデル(BYOK)を足せる aiModel バインディングで「アプリが使うモデル」を選ぶ agentSpawner バインディングで「エージェントを動かすモデル」を選ぶ ★ /admin 画面ではモデルを選べません
図 6 — モデル選択は 2 段構え。管理者は deployment.jsonc、つくる人は Connections パネル
よくある詰まり

「モデルが変えられない」と言われたら、どちらの担当を触っているかを確認してください。なお 個別モデル名の公式カタログは存在しませんmodel は自由文字列)。

7-3. 1 リクエストごとに、誰の財布から出るかが判定される

AI を呼んだ 自分の Cloudflare アカウントを接続済み? かつ 残高 $2 以上? はい いいえ ① 本人のアカウント経由 会社の無料枠は減らない 費用は「AI を叩いた本人」に立つ 会社の無料枠は残っている? はい いいえ ② 会社の AI Gateway 経由 既定 100 回/人/UTC 日 ③④ ブロック 接続 or 入金を促される
図 7 — ENABLE_CLOUDFLARE_LIMITS 有効時、呼び出しのたびにこの判定が走る

既定値: DAILY_LLM_CALL_LIMIT=100(1 ユーザー/UTC 日)、MINIMUM_CLOUDFLARE_BALANCE=2、残高キャッシュ 5 分。

社内案内に必ず書くこと

UTC リセット = 日本時間の毎朝 9 時。「夕方に止まって、翌朝 9 時に復活する」を知らないと問い合わせが来ます。

7-4. 天井は 2 種類ある — ここが最重要

天井 ① 回数 DAILY_LLM_CALL_LIMIT = 100 回/人/UTC 日 無料枠は「呼び出し回数」で数える 天井 ② 金額 AI Gateway Spend Limits = $◯◯ /月 請求は「トークン単価」で決まる 100 回でも、重いモデルを使えば金額は跳ねる 1 回でも、長い文脈を積めば金額は跳ねる ★ 両方を張らないと守れない
図 8 — 無料枠は回数で数え、請求はトークン単価で決まる。別物なので上限も 2 つ要る

7-5. Synon の推奨初期値

単位上限到達時
ワークスペース全体月 $150ブロック
ユーザー 1 人あたり月 $30安価なフォールバックモデルへ切替
1 人 1 日の呼び出し100 回(既定のまま)翌朝 9 時まで待つ
金額に根拠はありません

1 か月動かして実測してから決め直す前提の初期値です。「上限なしで始める」ことだけは避けてください。Spend Limits は無料、1 ゲートウェイ 20 ルール、超過時は 429 かフォールバック。

7-6. 方針: 会社が費用を持ち、上限で守る

非エンジニアに残高管理をさせない、という判断です。

7-7. 工程 3 の完了条件

8工程 4見た目と管理者を決めるエンジニア

「別サービスに見えると使われない」 — これは技術の話ではなく、定着の話です。

#やること場所再デプロイ
1サイト名・ロゴ・アクセントカラー/admin不要
2お知らせ(アナウンス)/admin不要
3エージェントへの指示(社内の書き方ルール等)/admin不要
4コネクタの可否/admin不要
5Formats(+ メニューのひな型)/admin不要
6管理者リストdeployment.jsonc必要
7認証方式deployment.jsonc必要
なぜ分かれているか

公式の言葉では「乗っ取られた管理者セッションが信頼境界を再定義できないように」。認証方式と管理者リストは /admin から変更できません。

工程 4 の完了条件

第 II 部 終了

ここまでで一度きりの工程は終わりです。以降、デプロイは出てきません。

第 III 部 — 毎回の工程つくる人/ブラウザだけ・インストールするものはありません

9工程 5入るつくる人

   ブラウザで社内 URL(https://os.synon.co.jp)を開く
              │
              ▼
   Cloudflare Access のログイン画面(会社のメール/いつもの SSO)
              │
              ▼
   Cloudflare OS のホーム画面
              │
              ▼
   [+]ボタン → 「New Gadget」
つまずき対処
ログイン画面が出ないURL が違う。社内案内のリンクから開く
ログインできないAccess の名簿に入っていない。情シスへ
ログインできるが真っ白ブラウザのキャッシュ。別タブで開き直す
24 時間おきに聞かれる仕様(セッション既定 24 時間)

10工程 6頼む — プロンプトの書き方つくる人

この章がこの資料の中心です

出来上がりの 8 割は、最初のプロンプトで決まります。

10-1. プロンプトは 5 つのブロックでできている

1 何を 「お客様からの問い合わせを記録する社内用の台帳」 ★業務のことばで。技術用語は要りません 2 入力する項目(全部書く) 受付日/会社名/担当者名/内容/種別/対応状況/社内担当 ★選択肢のあるものは、選択肢も全部書く(未対応/対応中/完了) 3 画面(どう見たいか) 上に登録フォーム、下に一覧。絞り込み。並び順。色分け 「未対応が 3 日以上たっているものは行を赤く」まで書ける 4 決まりごと(見せていい人・計算のルール) 「他の人の入力は見えないように」「税込で計算」 ★あとから気づく方が高くつきます。最初に書く 5 おまけ(あると助かるもの) CSV 書き出し/印刷用の見た目/検索
図 9 — この 5 つを埋めれば、それがそのまま仕様書になる

10-2. 惜しい頼み方と、良い頼み方

△ 惜しい「問い合わせ管理のアプリを作って」
◎ 良い「お客様からの問い合わせを記録する画面を作ってください。入力するのは、日付・会社名・担当者名・内容・対応状況(未対応/対応中/完了)の 5 つです。一覧では対応状況で絞り込めて、未対応が上に来るようにしてください。」

違いは 3 点だけです。

  1. 入力する項目を全部書く
  2. 一覧でどう見たいかを書く
  3. 選択肢のあるものは、選択肢を全部書く(「未対応/対応中/完了」)

10-3. 題材 1 — 顧客問い合わせの受付台帳(そのまま貼れます)

お客様からの問い合わせを記録する社内用の台帳を作ってください。

【登録する項目】
- 受付日(既定は今日)
- 会社名
- 先方の担当者名
- 問い合わせ内容(長文)
- 種別(見積依頼/技術質問/不具合/その他)
- 対応状況(未対応/対応中/完了)
- 社内の担当者名

【画面】
- 上に新規登録フォーム、下に一覧
- 一覧は対応状況と種別で絞り込める
- 未対応を上に、受付日の新しい順
- 未対応が3日以上たっているものは行を赤くする

【その他】
- 一覧を CSV で書き出すボタンをつけてください

10-4. 題材 2 — 日報の集計ダッシュボード(そのまま貼れます)

社員が毎日の作業時間を入力し、月次で集計するダッシュボードを作ってください。

【入力】
- 日付/案件名/作業内容/作業時間(0.5時間刻み)
- 入力は1日ぶんをまとめて、行を足せる形にしてください

【集計】
- 今月の案件別の合計時間を棒グラフで
- 今月の自分の合計時間を大きく表示
- 案件別・週別の表

【注意】
- 他の人の入力は見えないようにしてください(自分のぶんだけ)
最初のプロンプトに書く

「他の人の入力は見えないように」のような要件も、日本語で書いておけば実装されます。あとから「実は見えていた」と気づく方が、はるかに高くつきます。

10-5. コピペ用のひな型

(  )を(  )するための社内用の(  )を作ってください。

【登録する項目】
- 
- 
(選択肢があるものは「A/B/C」の形で全部書く)

【画面】
- 
- 

【決まりごと】
- 見せていい人:
- 計算のルール:

【その他】
- 

10-6. やってはいけない頼み方

なぜ
「いい感じにして」何が「いい」かはあなたしか知りません
5 つまとめて直すどれが原因で崩れたか分からなくなります
「前と同じように」別のチャットの文脈は引き継がれません
個人情報の実データを貼って試すログにプロンプト本文が残ります。ダミーで試す

11頼んだ直後、裏で何が起きているか全員

知らなくても作れます。ただし「なぜデプロイが要らないのか」はここで分かります。

あなたのプロンプト エージェントが 2 種類のコードを書く クライアントコード — 画面の見た目 ブラウザのサンドボックスフレームで動く Cap'n Web RPC(Cloudflare 製の OSS) サーバコード — 保存・集計 Dynamic Worker として隔離実行/外向き通信は既定で無効 SQLite(Durable Object Facet)= このアプリ専用のデータ置き場 もう動いています 「ビルド」「デプロイ」「公開」というボタンはありません
図 10 — 生成物は試作品ではなくフルスタックのアプリ。書き出して別の場所へ運ぶ工程が存在しない
生まれた瞬間のアプリは、外のどこにも繋がっていません

サーバコードは Dynamic Worker として隔離実行され、外向き通信は既定で無効です。外に繋ぐには工程 9(Gatekeeper)を明示的に通します。

12工程 7確かめるつくる人

AI が作ったものを、そのまま配らないでください。この 6 点だけ確認します。

#確認やり方
1登録できるダミーで 3 件入れる
2一覧に出る入れた 3 件が出るか
3消える/壊れないブラウザを閉じて開き直し、3 件が残っているか
4絞り込み・並び順頼んだとおりか
5空・極端な値空で登録/全角数字/長文 1000 文字を入れてみる
6見せてはいけないものが見えていないか「自分のぶんだけ」と頼んだなら、同僚に use 権限で見てもらう
3 と 6 は必ず

3 は「動いているように見えて保存されていない」を、6 は「実は全員に見えていた」を防ぎます。どちらも、配ったあとに気づくと取り返しがつきません。

13工程 8直すつくる人

13-1. 変更は「提案」として届く

mainline 確定しているコード チャット A の変更提案 「項目を1つ足して」 チャット B の変更提案 「色を変えて」 受け入れる(accept)→ mainline に入る 取り消す(revert)→ 無かったことに これが Git の代わり
図 11 — 気に入らなければ取り消せる。つくる人が git を覚える必要はない

13-2. 直し方の言い回し集

状況言い方
見た目を変えたい「一覧の文字が小さいので、もう少し大きくしてください」
項目を足したい「『次回連絡予定日』の欄を、対応状況の下に足してください」
動きがおかしい「◯◯を押したら△△になるはずが、□□になります」(期待 → 実際 の順)
遅い「一覧の表示に 5 秒かかります。速くしてください」
元に戻したいそのチャットの変更を取り消す(revert)
一度に 1 つだけ頼む

5 つまとめて頼むと、どれが原因で崩れたか分からなくなります。1 つ直す → 動かす → 次。これが最短です。

13-3. コードは見なくていい

コードエディタは存在し、権限のある人は開けます。ただし非エンジニアが開く必要はありません。開かない前提で運用してください。

14工程 9つなぐ — Gatekeeperつくる人+エンジニア

自分で入力するだけのアプリなら、この工程は飛ばせます。GitHub や Google Drive、社内 DB のデータを使いたくなったときに、ここへ来ます。

14-1. Gatekeeper は「外部システムへの唯一の扉」

Gadget AI が書いたコード 外向き通信は既定で無効 型のついた バインディング 必要なデータだけ Gatekeeper ・認証情報を保持する ・ポリシーを強制する ・ログを記録する ・項目(カラム)をマスクする ・破壊的な操作の前に人間の承認を要求する API キーはここから外に出ない API 外部サービス GitHub / Google Slack / Notion など 認証情報は AI にも、生成されたコードにも渡らない
図 12 — Gatekeeper が外部システムへの唯一の扉。鍵は扉の中にとどまる

14-2. つくる人から見た手順(4 ステップ)

1. 画面の「Connections」パネルを開く
2. 使いたい Gatekeeper(例: Google)を選ぶ
3. 触ってよい範囲(このスプレッドシートだけ、など)を選ぶ
4. チャットに戻って「接続した◯◯のデータを使って△△して」と頼む
見分け方

API キーを自分でコピー&ペーストする場面はありません。あったら、それは設計ミスです。

14-3. 標準で同梱されているもの/いないもの

同梱されているGitHub / Google / Cloudflare / Supabase / Notion / Confluence / Email(Workers 経由)/ Home Assistant / Slack / Spotify / ZoomInfo
同梱されていない(自作)Chatwork / freee / kintone など日本のサービス全般

多くは接続前に設定(OAuth の取得など)が必要です。各パッケージに手順が同梱されています。

14-4. 新しい Gatekeeper を作るのは誰か

リポジトリには AI 用の write-gatekeeper スキルが同梱されており、AI に書かせる前提の設計です。ただし手順の Phase 1 に 「オペレーターの承認を得るまで先に進まないこと」 という明示的な関門があり、TypeScript の型設計・OAuth 設計・Workers / Durable Objects の理解が前提になります。

結論

Gatekeeper づくりはエンジニアの仕事です。「非エンジニアでも作れる」という記述は一次情報にありません。Synon では Chatwork Gatekeeper を最初の 1 本として、エンジニアが書くのが現実的です。

14-5. 観測ログ — つないだ瞬間に効き始めるもの

A さんが 顧客DB を読むアプリを作った 「A の権限で読んだ」という記録がアプリに付く B さんに共有 B は自分の接続アカウントで再検証される B も読める権限がある そのまま使える B には権限が無い その読み取り自体がブロックされる 共有によって権限が横流しされない。しかも開くたびに再検証される
図 13 — 公式の表現では「相手がもともとアクセスできなかった情報へのアクセスを与えることにはならない」

検証の範囲は build = 全 Gatekeeperuse = 名前付きバインディングのみ。以後、登録された観測者の誰か 1 人でも読めない情報を読もうとすると、その読み取り自体がブロックされます。

15工程 10配るつくる人

配り方は 2 種類あり、渡るものが違います。ここを間違えると事故ります。

① 直接共有(Collaborators) 「同じ 1 個」を一緒に使う 相手に渡るもの: ✔ コード ✔ 入力済みデータ← 注意 ✔ AI との会話履歴← 注意 ✔ 接続・認証情報 役割は 2 つだけ: build(編集もできる)/ use(使うだけ) 追加はメールか共有リンク。グループ共有は無い 向くもの: 部内で 1 つの台帳を共同利用(問い合わせ台帳) ★ あとから全員ぶんを直せる ② ひな型共有(Blueprint) 「作り方」を渡して各自が複製 相手に渡るもの: ✔ コード ✘ 入力済みデータ ✘ AI との会話履歴 ✘ 接続・認証情報 各自のコピーが、自分のデータ・接続・履歴を ゼロから持つ 向くもの:「日報アプリ」を全社に配る(各自が自分のを持つ) ★ 配ったあと一斉更新できない
図 14 — 渡るものが違う。「同じデータを見るか」「あとで一斉に直すか」で選ぶ

15-1. どちらを選ぶか(2 問)

  Q1. みんなが「同じデータ」を見る必要がありますか?
        └ はい ──────────────→【直接共有】(例: 問い合わせ台帳)
        └ いいえ ↓

  Q2. あとから全員ぶんを直したくなりますか?
        └ はい ──────────────→【直接共有】
        └ いいえ ─────────────→【Blueprint】(例: 各自の日報)

15-2. 直接共有の手順と注意

「Share」モーダルで相手のメールを入れ、build か use を選ぶだけです。共有リンクは #share=<鍵> の形。128bit の秘密がリンク側にあり、サーバには HMAC-SHA-256 のハッシュしか保存されません(=サーバ側から生の鍵は復元できない)。

リンクを配ることは「鍵そのものを配る」のと同じ

リンクを開いた人は自動で collaborator になります。Chatwork の全体ルームに貼らないでください。

15-3. Blueprint の手順と、最大の制限

1. Gadget エディタのヘッダーの「Blueprint」ボタンを押す
2. タイトル・説明・スクリーンショットを入れて公開する
3. リンク(/blueprint/<id>)を配る。または「Explore」(/explore) に並ぶ
4. 相手は「Create Gadget」で、自分専用のコピーを作る
全社に配ったあとの一斉修正はできません

公式ドキュメントに「blueprint から既存インスタンスへの自動更新の仕組みはない」と明記されています。「みんなが同じものを使い続ける必要があるもの」は、Blueprint ではなく直接共有にしてください。

16工程 11定着させるつくる人+管理者

作って配って終わり、にすると使われません。定着のための仕掛けが 3 つあります。

16-1. + メニューに置く(Formats)

+ メニューの「New Doc」「New Slides」は特別な機能ではなく、管理者が昇格させた Blueprint(Formats)です。つまり Synon の書式に合わせた「新規 見積書」「新規 議事録」を + メニューに置けます。/admin の「Formats」パネルで設定します。

   [+]
    ├ New Gadget
    ├ New Doc        ← これも Blueprint
    ├ New Slides     ← これも Blueprint
    ├ 新規 見積書     ← ★Synon 書式を追加できる
    └ 新規 議事録     ← ★

16-2. 名前と説明を業務のことばにする

「Gadget 3」ではなく「営業部 問い合わせ台帳」。探せない道具は使われません。

16-3. 「これで合っているか」を 2 週間で見る

時点見ること
配って 3 日誰か 1 人でも自分でデータを入れたか
配って 2 週間まだ使われているか。使われていなければ捨てる(損失は作った 30 分だけ)
定着したら第 V 部 24 章へ — プランB で作り直すかを判断する
第 IV 部 — 続けるための工程エンジニア/情シス・月 30 分

17工程 12面倒をみるエンジニア/情シス

頻度やること所要
毎月AI Gateway のダッシュボードで誰がいくら使ったかを確認し、予算を調整10 分
毎月Access の入場者名簿を棚卸し(退職者を落とす10 分
随時Gatekeeper の監査ログを確認
随時破壊的操作の承認キューを処理
リリース時上流の更新を取り込む(アップグレード用チェックリストに従う1〜2 時間

17-1. 版は勝手に上がらない

starter は本体を git submodule として特定リリースにピン留めします。公式にも「上流リリースをピン留めし、変更をレビューし、本番アップグレードのたびに信頼境界を検証すること」と書かれています。自動更新しない設計です。早期アクセス版としては、これが正しい挙動です。

17-2. 事故ったときの戻し方

18つまずき早見表全員

1 週目に必ず出る順に並べています。

症状原因対処
チャットで頼んでも何も起きないAI が既定で無効aiGateway を設定し CF_AI_GATEWAY_API_TOKEN を入れる7 章
夕方に急に使えなくなった1 日 100 回の回数の天井翌朝 9 時(UTC リセット)まで待つ/上限を上げる7-3
請求が想定より高い金額の天井を張っていないSpend Limits を設定7-4
モデルを変えたいのに /admin に無い/admin ではモデルを選べない管理者は deployment.jsonc、本人は Connections パネル7-2
管理者を増やせないaccess.admins/admin から変更不可再デプロイ5-3
社外の人に見せたいできない(Access の内側)プランB で作り直す23 章
部署全員に配りたいグループ共有が存在しない全員に配る=Blueprint/1 つを共同利用=メールを 1 件ずつ15 章
配ったあと全員ぶんを直したいBlueprint は一斉更新できない直接共有に切り替える15-3
共有したら相手に過去のデータも見えた直接共有はデータと AI 会話履歴ごと渡るBlueprint にする/取り消す15 章
Chatwork に通知したいGatekeeper が同梱されていないエンジニアが自作(最初の 1 本)14-4
保存されていない気がする確認不足ブラウザを閉じて開き直して確かめる12 章
pnpm check が落ちる設定の書き間違い落ちるのは正常。メッセージの欄名を直す5-2
Access を回避された気がするオリジン直叩きRequire Access protection を ON6-4

19お金の見え方 — トークンはどこで減るのか全員

「AI を使う = 常にお金がかかる」ではありません。減る場所は 4 つ、うち 1 つはゼロです。

① AI チャット(作る・直す) 大きい プロンプトを書くたび ② agentSpawner(エージェント実行) 大きい 設計次第 ③ 実行時の aiModel 使うたび アプリ自体が AI を呼ぶ設計にした場合だけ ④ Gatekeeper 経由の API / SQLite ゼロ データの読み書きにトークンは要らない 台帳・集計・申請なら、トークンが減るのは「作った日」と「直した日」だけにできる
図 15 — 100 人が毎日使っても、実行時に AI を呼ばない設計なら AI 費用は増えない

19-1. 単価(2026-08 時点)

項目金額
Workers AI$0.011 / 1,000 Neurons(1 日 10,000 Neurons 無料)
Llama 3.1 70B入 $0.293 / 出 $2.253(per 1M tokens)
Llama 3.2 1B入 $0.027 / 出 $0.201
Mistral 7B入 $0.110 / 出 $0.190
外部プロバイダマークアップ無し(クレジット購入時のみ 5%)

Unified Billing 対応: OpenAI / Anthropic / Google AI Studio / Google Vertex AI / xAI / Groq。優先順位は リクエスト内キー > BYOK > Unified Billing

19-2. 見えるもの・見えないもの

見えるAI Gateway で リクエスト数・トークン量・コスト・キャッシュ率。ログにプロンプト本文と応答も残る
注意コストはトークン数からの推定キャッシュキーは完全一致でまず当たらない(節約手段として当てにしない)
識別子Identity-aware AI Gateway は cf.user_id(JWT の sub)を記録。メールアドレスは記録しない
設置と同時に周知すること

プロンプト本文が残ります。「個人情報の実データを貼って試す」を防ぐ唯一の方法です(10-6)。

第 V 部 — 以前に作成したアプリ社内共有プロセスとの比較プランA / プランB / Cloudflare OS の 3 方式

20まず結論 — 置き換えではなく、層が違う全員

Synon には、これまでに設計した社内アプリの作成・共有プロセスが 2 つあります。この部では、それらと Cloudflare OS を 3 方式として並べます。

方式資料一言でいうと
プランAclaude-code-internal-app-workflow.{md,html}GitHub Codespaces で作り、PR マージで本番公開
プランB(従来の本命)claude-code-internal-app-workflow-planb.{md,html}自分の Mac の Claude Code で作り、PR マージで本番公開。GitHub アカウント不要
Cloudflare OS(この資料)本資料ブラウザで頼んで作り、共有ボタンで即配布
レビューあり・長期運用 レビューなし・即時 使い捨て 作り込み プランA(Codespaces) 業務システムを 1 本ずつ作る エンジニアが PR をマージ = 公開 GitHub アカウントが要る プランB(ローカル)★従来の本命 業務システムを 1 本ずつ作る エンジニアが PR をマージ = 公開 GitHub アカウント不要(Deploy key) Cloudflare OS 一人が自分の道具を何本も作る 共有した瞬間に配布完了(関門なし) 今まで存在しなかった層
図 16 — プランA/B は減らせない。Cloudflare OS は、これまで空白だった層を埋めるもの

20-1. 決定的な違いは「関門」の有無

プランA/B の設計の中心には、「本番公開の承認 = エンジニアが PR をマージする行為」という一点があります。何が本番に出るかを、必ず人間が 1 回見ます。

Cloudflare OS には、これに相当する関門がありません。共有ボタンを押した瞬間に配布が完了します。

これは欠陥ではなく、狙いです

4,000 本のツールを 30 日で作るのに、1 本ずつレビューはできません(Cloudflare 社内実績。ただしこの数値の出典は InfoQ が引用した CIO 発言で、公式ブログには記載がありません)。

受け入れ方は 1 つだけ

「レビューされていなくても事故らない範囲」= 壊れても業務が止まらず、機微データを持たず、社外に出ないものに用途を限定すること。それが 23 章の判断フローです。

21工程そのものを横に並べる全員

同じ「顧客問い合わせの受付台帳」を 1 本作るとき、工程がどう違うか。この資料でいちばん比較になる図です。

プランA(Codespaces) プランB(ローカル) Cloudflare OS 準備(初回) GitHub アカウント作成Codespace 起動 Mac に環境構築30 分/人・エンジニア同席 なしブラウザを開くだけ ① 決める /service-spec で仕様書30 分〜1 時間 /service-spec で仕様書30 分〜1 時間 いきなり頼むチャットが仕様 ② 作る Claude Code に依頼ターミナルを見る Claude Code に依頼ターミナルを見る チャットで頼む画面だけ ③ 保存 git commit / pushCodespace 内 /service-save → work ブランチ+毎日 18 時 自動保存(launchd) 自動(サーバ側)★消えない ④ 試す staging へ配信GitHub Actions 待ち結果は Actions 画面 staging へ配信GitHub Actions 待ち結果は Chatwork 通知 もう動いている★待ち時間なし ⑤ 直す Claude Code → ③へ戻る Claude Code → ③へ戻る チャット → accept / revert ⑥ 申請 PR を作る(本人ができる) docs/releases/ に申請文★PR はエンジニアが作る(2 分) なし ⑦ 承認 ★エンジニアが PR をマージ差分レビューができる ★エンジニアが PR をマージ差分レビューができる なし(関門が無い)差分レビューは実質できない ⑧ 公開 main へ配信GitHub Actions main へ配信GitHub Actions 共有ボタン★押した瞬間に配布 結果 半日〜1 日 エンジニア接触 2 回 月 $50〜80 半日〜1 日 エンジニア接触 3 回 月 $13 10〜30 分 エンジニア接触 0 回 月 $5 + AI 実費 消える: 仕様書・git・ターミナル・ブランチ・Actions の待ち時間・PR・端末セットアップ・自動保存 増える: 早期アクセス版であること・Gatekeeper の自作・誤共有・一斉更新できないこと
図 17 — 同じ 1 本を作るときの工程。左 2 列は「関門がある」設計、右 1 列は「関門が無い」設計

21-1. 消える宿題

消える工程仕様書づくり/git/ターミナル/ブランチ/Actions の待ち時間/PR/端末セットアップ/自動保存の仕掛け
同時に消える宿題退職者の Mac にソースの複製が残る(プランB で「技術で解けない宿題」としていた項目)/Deploy key の発行と削除/launchd の自動保存/npm ci が社内プロキシで通るかの検証/「Cowork と Claude Code のどちらでやるんでしたっけ」問題

21-2. 増える宿題

宿題中身
早期アクセス版である公式に「early-access software」。README に「現時点で外部からのコントリビュートは求めていない」「十数行を超える PR は控えてほしい」と明記。困っても自分で直して本家に入れられない
Gatekeeper の自作Chatwork・freee・kintone は同梱されていない。全部エンジニアが書く
誤共有直接共有は入力済みデータと AI 会話履歴ごと渡る。リンクの扱いを教育する必要がある
一斉更新できないBlueprint で配ったあと、全員分をまとめて直せない
持ち出しにくいGadget は Cap'n Web / Durable Object Facet 前提。普通の Workers プロジェクトとして外へ出すのは容易ではない
AI 費用の従量化プランA/B は Claude のシート課金で天井が読める。Cloudflare OS は従量。上限設定が必須

22比較一覧表全員

22-1. つくる人から見て

観点プランA(Codespaces)プランB(ローカル)Cloudflare OS
使う道具ブラウザ(Codespace)Claude Code(Mac)ブラウザのみ
端末セットアップゼロエンジニアが 30 分/人ゼロ
GitHub アカウント必要不要(Deploy key)不要
ターミナルを見るか見る見る見ない
仕様書は要るか必要(/service-spec必要(/service-spec不要(チャットが仕様)
最初の 1 本ができるまで半日〜1 日半日〜1 日10〜30 分
直し方Claude Code → 保存 → 配信同左チャット → 受け入れ/取り消し
壊したときの戻し方git で戻すgit で戻すチャットの変更を取り消す
作業が消えるリスク低(クラウド)(三重の保存で対処)なし(サーバ側)
公開までのエンジニア接触2 回3 回(PR 作成も依頼)0 回
同時に持てる本数1 人 1〜2 本が現実的1 人 1〜2 本が現実的何本でも

22-2. 出す側・守る側から見て

観点プランAプランBCloudflare OS
本番公開の関門エンジニアの PR マージエンジニアの PR マージなし(共有=即配布)
変更の差分レビューできる(Git diff)できる(Git diff)実質できない
コードの保管場所GitHubGitHub + 利用者の MacCloudflare のみ
退職者に残るものなしソースの複製が残るなし
権限の既定値開発者が書いた通り開発者が書いた通りゼロ権限+外向き通信オフ
認証情報の置き場所GitHub Actions SecretsGitHub Actions SecretsGatekeeper の中(AI にもコードにも渡らない)
「読んだデータ」の追跡なしなし観測ログが成果物に追従
監査ログActions のログActions のログGatekeeper が全操作を記録
破壊的操作の承認仕組みなし仕組みなしGatekeeper で人間承認を要求できる
共有の単位URL を知っている社内全員同左個人単位のみ。グループ共有なし
AI 費用の可視化個人の Claude シート単位同左ユーザー別・チーム別に按分+上限
社外公開できるかできるできるできない(Access の内側)
独自ドメインできるできるできる(starter 方式のみ)
技術構成の自由度高い(D1・R2・任意の API)高い低い(Gadget の枠内)
他所への持ち出し容易(普通の Workers プロジェクト)容易難しい
成熟度Workers 単体で本番実績同左early-access(2026-08 公開)

22-3. お金と手間

観点プランAプランBCloudflare OS
インフラ月額Cloudflare $5 + GitHub Team $4×人数 + Codespaces $25〜47$13(Cloudflare $5 + GitHub Team $8)$5(Workers Paid)+ AI 推論の実費
Synon 実額の目安$50〜80/月$13/月$5/月 + AI 実費
AI の費用Claude シート(1 人ずつ)Claude シート(1 人ずつ)従量。上限設定は必須
初期構築(エンジニア)半日半日 + 30 分×人数半日。人数が増えても増えない
運用(エンジニア)公開ごとに PR 2 分公開ごとに PR 2 分月次の予算・名簿確認。Gatekeeper 自作は都度
撤退のしやすさ容易(コードは Git)容易(コードは Git)難しい(Gadget は移せない)
訂正(重要)

以前の資料に書いた Cloudflare Access の「50 ユーザーまで無料/$7 per user」は過去の公式ブログの値で、現行の価格ページには金額・上限の記載がありません(問い合わせ導線のみ)。この金額で稟議を組まないでください。

23どれで作るか — 判断フロー全員

新しく何か作りたい、と言われたら、この 5 問を上から順に。

Q1. 社外の人(顧客・取引先)が使いますか? Web サイト・顧客向けフォーム・取引先ポータル はい プランB Q2. それが止まると、業務が止まりますか? 受注・請求・出荷・給与に関わるか はい プランB Q3. 個人情報・機微情報を「ためて持ち続け」ますか? 応募者情報・健康情報・与信情報など はい 情シス判断 →原則 プランB Q4. 3 か月後も、同じものを部門で使い続けますか? 定例業務に組み込まれるか はい まず Cloudflare OS で試す 定着したら プランB で作り直す Q5. 上記すべて「いいえ」 Cloudflare OS プランA は当面選びません — 利用者が GitHub アカウントを持たない前提のため、プランB が従来の本命です プランA は「利用者に GitHub アカウントがある」場合の選択肢として残します Q4 の「作って試す → 作り直す」が、2 つを併存させる最大の理由です プランB の最大のコストは「作ってみたが使われなかった」損失。30 分の試作でそれを潰せる(24 章)
図 18 — 上から順に 5 問。3 問目までが「守り」、4 問目が併用の設計

23-1. 具体例で当てはめる

作りたいもの判定理由
顧客問い合わせの受付台帳(社内・営業 5 名)Cloudflare OS止まっても業務は止まらない。顧客の連絡先は持つので Q3 は情シスに一声
日報の集計ダッシュボードCloudflare OS個人の作業時間。典型的な Cloudflare OS 向き
展示会で配る名刺スキャン集計(3 日だけ)Cloudflare OS使い捨て。プランB でやる価値がない
部内の議事録フォーマット(+ メニューに追加)Cloudflare OS(Formats)まさに設計意図どおり
SyncSync Form の顧客向け機能プランBQ1 で即決
請求データの締め処理プランBQ2 で即決
採用応募者の管理プランBQ3。個人情報を長期保持
社内申請システムプランBQ2・Q4。既存資産もある

24併用の設計 — 「試す」と「ちゃんと作る」をつなぐ全員

プランB の最大のコストは「作ってみたが使われなかった」ときの損失です。仕様書に 30 分、開発に半日、レビューに 2 分。それが空振りに終わる。Cloudflare OS なら 10〜30 分で試作が動きます。

思いつく Cloudflare OS で 30 分 仕様書は書かない 2 週間 実際に使う これが「仕様の実測」 使われなかった 捨てる(損失 30 分) 定着した プランB で作り直す 仕様は実物で確定済み 「仕様書を書いてから作る」ではなく 「動くもので仕様を確定させてから、ちゃんと作る」に変わる
図 19 — プランB の /service-spec で悩んでいた「何を作りたいのか本人も分かっていない」問題が、ここで解ける

24-1. 作り直すときに持っていくもの・持っていけないもの

持っていける画面の構成/項目の一覧/実際の運用ルール/2 週間使って分かった「要らなかった機能」
持っていけないコード(Gadget は Cap'n Web / DO Facet 前提で、そのままでは移せない)/データ(一括書き出しの公式手段が未確認
つまり「作り直す」は文字どおり作り直しです

移植ではありません。ただし仕様が実物で確定しているので、プランB 側の作業は仕様書づくりから始まりません。ここが時間の節約になる部分です。

24-2. 既に プランA/B で作ったものを移すか

危うさはありません。移す理由は「更新のしやすさ」だけです。

移す価値がある本人が直したいのに、PR マージ待ちになっているもの
移さない社外公開・独自ドメイン・D1/R2 を本格利用・cron が基幹のもの
戻り先を残す

認証もデータの所在も変わりません。変わるのは「誰が直せるか」だけです。旧リポジトリは消さず、1 か月は戻り先として残してください(Blueprint は自動更新されないため)。

25未確認事項と参考エンジニア/決める人

25-1. 実機で潰すこと(稟議前・展開前)

#項目なぜ重要か
1製品 UI の日本語化プレスリリースの「日本語対応」が翻訳を指すのか UI かが不明。英語のみなら前提が崩れる。最優先
2Workers Paid が必須かの明記稟議の前提
3データ所在地・リージョン制御の可否顧客データを扱う判断の前提
4Gadget への一括インポート/書き出し手段既存アプリの置き換えとサービス撤退の両方で必要
5AI Gateway のメタデータにユーザー識別子が含まれるか含まれないとユーザー別 Spend Limit が張れない
6Gadget 1 本あたりの実トークン量AI 予算の根拠
7Gadget から R2 等を使えるか/スケジュール実行の実挙動Docker の cron を置き換えられるか
8Chatwork Gatekeeper の実装工数展開計画の前提
9自動テスト/自動デバッグの実挙動一次情報に記載なし。期待しすぎない
10監査ログ・プロンプトログの物理保存先と保持期間情シス判断の前提
11Gadget 単位でデバイス条件を分けられるかCloudflare OS 全体が 1 つの Access アプリのため未確認

25-2. 導入の順序と撤退基準

やること
1 週目方式 A で触る。UI が日本語か を最優先で実測
2 週目方式 B で建て直す + 予算上限を張る
3 週目非エンジニア 1 名が、サポートなし 30 分で 1 本目を動かせるか — 最重要判断
4 週目Blueprint 配布と Chatwork Gatekeeper 自作の工数を実測
5 週目〜展開
6 週目〜既存アプリの棚卸し → 1 本目の置き換え(3 日を超えたら止める
撤退基準

3 週目に 30 分で動かなければ展開しない。半日かかるなら、レビューのあるプランB の方が安全です。
費用: AI が月 $150 を超えたら、モデルの選択肢を絞り直す。

25-3. 参考(一次情報)