Cloudflare のエンジニアリング標準化:統一「ルールベース」を Codex で監督、4ヶ月で1.6万件のコードマージを阻止

ルールをまず機械可読な構造に変換し、エージェントがチェック。承認のみなら通知に留め、明示的に強制へ昇格して初めてブロックする
著者:The Cloudflare Blog08-05 · 12 分で読了⚑ チュートリアル
🎧 ポッドキャスト版0:00 / --:--
0:00 / --:--
深掘り · 小互の解説
1分でわかる要点
  • Cloudflare はドキュメントやチャット履歴、古参社員の頭の中に散らばっていたエンジニアリング標準を、エージェントが直接読める構造化データに刷新。
  • この4ヶ月で、AIコードレビューアは約25万件の違反を指摘し、1.6万件のマージを阻止。別のエージェントは開発着手前に約600件の設計ドキュメントをレビューした。
  • 注目は2段階スイッチ。承認されただけでは通知のみで、実際にブロックするには明示的な昇格操作がもう一度必要。
  • 60以上の標準を全てモデルに与えるとコンテキストが肥大化するため、専用エージェントがルールをJSONに圧縮して対応。
⚑ スタンス注記:本稿は Cloudflare 公式ブログが自社の取り組みを振り返った実践レポートです。文中の違反数、ブロック数、採用率はすべて自己評価に基づくもので、第三者による検証はされていません。メカニズムの詳細を補足するため、Cloudflare の関連ブログ記事(AIコードレビューア、社内AIエンジニアリングスタック)も参照し、その部分は出典を明記しています。
出発点

Codex 導入前、Cloudflare のエンジニアリング標準は4つの場所に分散

Cloudflare は8月4日、エンジニアリング標準をAIで運用する取り組みについての振り返り記事を公開しました。この4ヶ月で、同社のAIコードレビューアは約25万件の違反を指摘し、1.6万件のコードマージを阻止。もう1つのエージェントは開発着手前に約600件の技術設計をレビューしています。この記事の価値は、ドキュメント内のルールがどうマージ時に実際の関門となるか、そのプロセス全体を詳述している点です。その中には、すぐに真似できる設計があります。ルール承認後はまず通知のみ、実際にブロックするには再度の明示的な昇格が必要という仕組みです。

まず、Codex がなかった頃の状況を見てみましょう。開発ガイドラインは、正式なドキュメント、リポジトリ内のファイル、チャット履歴、そしてエンジニア個人の頭の中にある経験、という4つの場所に分散していました。

ここには2種類の異なる問題がありました。

第一に · 見つからない

エンジニアは本来の問題解決より、ルール探しに時間を費やしていました。

第二に · 見つけても信用できない

答えを見つけても、最新か、権威があるか、今の状況に適用できるかは判断できません。

組織が大きくなると限界が来ます。影響は3つ。全標準を読めるエンジニアはいません。レビューアも各要件を確実に照合できません。チーム移動で経験は失われます。ルールが継続的に注意喚起・強制されないと、プロジェクト間の進め方はバラバラになり、ドリフトが発生します。同じルールのもとでも、実践が徐々に乖離していくのです。

導入前 正式文書 リポジトリ チャット履歴 個人の記憶 ルール探し 4箇所を往復し、見つけても信頼性を判断 導入後 Codex ドメインオーナー管理・状態あり コード審査 設計審査 障害報告審査 エージェントが作業現場で参照 人の時間は結果への対応に集中
当サイトによる図解。原文の導入前後の記述に基づき作成。
組織方法

Codex はドメインごとに分割され、各ドメインにオーナーがいる

Codex は、ガバナンスが行き届いたエンジニアリング標準の集合体であり、エージェントが必要に応じて取り出し、目の前のタスクに適用できます。同じ標準がコードレビュー、技術設計レビュー、障害報告レビューなど、さまざまな場面で同時に使えるようになりました。

Codex はドメインごとに区分され、各ドメインが1つのエンジニアリング領域をカバーします。アーキテクチャ関連(フロントエンド、コントロールプレーンなど)、横断的領域(セキュリティ、信頼性)、特定言語(TypeScript、Rust)、その他多数です。各ドメインにはドメインオーナーが1人おり、そのドメインのドキュメントの内容、一貫性、全体的な品質に責任を持ちます。

ルールの書き方:RFC形式、SHOULD と MUST で重要度を区別

Codex の標準は RFC 形式で記述されます。RFC はインターネット標準の世界で使われる記法です。提案が公開され意見を募り、複数回の改訂を経て、最終的に合意されたものとして採用されます。

要件には、SHOULD と MUST の2つのキーワードのみを使用します。定義は実際に存在するインターネット標準文書 RFC 2119 に直接従い、技術標準におけるこれらの言葉の厳密な意味を定義しています。

この2つの言葉の重みの違い

MUST は絶対に守るべき必須要件です。SHOULD は通常守るべき推奨要件ですが、特定の状況下で、結果を完全に理解し比較考量した上で守らないことも許されます。後述しますが、この2つの言葉の違いが、エージェントが提案をするのか、コードをブロックするのかを直接左右します。

文書の先頭には front matter も必要です。どのドメインに属するか、現在の状態は何かを示す、機械が読むための小さなセクションです。

誰がルールを提案できるのか?興味があり、その分野に能力のある Cloudflare 社員であれば誰でも、所定の構造に従ってマージリクエストを提出できます。提案は複数回のフィードバックを経てレビューアが増え、最終的にドメインオーナーが承認して初めて Codex に取り込まれ、Astro 製の社内サイトに公開されます。

Cloudflare Codex アーキテクチャ フロントエンド・コントロールプレーン オーナー 1名 横断的関心事 セキュリティ・信頼性 オーナー 1名 特定言語 TypeScript・Rust オーナー 1名 他のドメインも 計60+ RFC 各RFCの要件は2語のみ:MUST(必須) と SHOULD(推奨) 社員が提案 → 複数回レビュー → オーナー承認 → Codex へ
当サイトによる図解。ドメインの分類と60+ RFCの数は原文から。各ドメインの「1名」は概念を示すもので、原文は各ドメインに1人のオーナーがいると述べるのみで、人数の明細はありません。
メカニズム · 重要

標準が提案からコードマージをブロックするまでの5つのステップ

ルールが書かれただけではブロックできません。提案から実際にブロックするまでには5つのステップがあります。

Cloudflare Codex ワークフロー図:RFC提案から強制までの5段階

Cloudflare 公式ワークフロー図。左から右へ5段階:執筆、自動チェック、ガバナンス、承認済み、強制。図の副題はこの設計の要点を示しており、「RFC とその機械可読ルールは同じレビュープロセスを経る」。出典:blog.cloudflare.com。

ステップ1・執筆著者が新しい RFC を書くか、既存の RFC を更新し、マージリクエストを開く。
ステップ2・自動チェック2つの処理が並行して行われる。CI が文書の構造、メタデータ、署名の準拠を検証。同時にエージェントが SHOULD と MUST ステートメントを抽出し、JSON差分を生成する。
ステップ3・ガバナンス人間がレビューする。レビュー対象は RFC と JSON の両方。その後、ドメインオーナーが承認する。不合格なら差し戻して修正。
ステップ4・承認済みRFC と JSON が一緒に Codex にマージされ、社内サイトに公開される。クライアントとエージェントはすぐに違反のフラグ付けを開始するが、通知のみで、ブロックはしない。
ステップ5・強制RFC の状態が enforced に明示的に昇格された後、クライアントは MUST 違反をブロックできる。
執筆 RFC作成・MR開始 自動チェック CIが構造検証 AgentがJSON抽出 ガバナンス RFC+JSONレビュー オーナー承認 承認済み マージ・公開 強制 明示的昇格 違反を通知、ブロックなし MUST違反をブロック 同じルールでも、ステップ4と5の間には人による明示的昇格が挟まる
当サイトによる図解。公式ワークフロー図に基づき再描画。

なぜ「明示的昇格」ステップを追加するのか

Cloudflare が挙げる理由は2つあり、どちらも現実的です。1つは、チームに新しい要件を消化する時間を与えるため。もう1つは、状況によっては「実際にブロックできるようにする」こと自体に追加のエンジニアリング作業が必要な場合があるためです。

このステップの価値

標準が機能しない典型的な失敗は2つ。柔らかすぎて誰も気にしないか、硬すぎて導入初日に全社のコードがマージできなくなるかです。

「このルールが有効である」と「このルールがブロックを開始する」を2つのスイッチに分けることで、緩衝期間が生まれます。新しいルールはまず一定期間運用され、自分たちに何件の違反があるかを皆が見て、チームのペースで修正できます。修正が進んだら、再び人が2つ目のスイッチを明示的に切り替えます。

もう1つ、特筆すべき点があります。ワークフロー図の副題には「RFC とその機械可読ルールは同じレビュープロセスを経る」とあります。人が読む文書と機械が読む JSON は、一緒に書き、レビューし、マージされます。これにより、両者が互いにドリフトすることがありません。文書は更新されたが機械ルールは古いまま、誰もレビューしていないルールで機械がブロックする、といった状況も発生しません。

メカニズム · 重要

60以上の標準を、モデルが読める JSON に圧縮する方法

Cloudflare にはすでに60以上の RFC があり、まだ増え続けています。安直な方法は Codex 全体をそのまま大規模言語モデルに与えることですが、彼らはその結果を明確に記しています。この量はコンテキストウィンドウに大きな負荷をかけ、モデルの出力品質を損なう、と。

解決策は、専用の Agent で SHOULD と MUST ステートメントを自動抽出し、専用の JSON 構造に圧縮することです。さらに「遅延検出」とプログレッシブ開示をサポートするメタデータも追加されます。

プログレッシブ開示とは

全てのルールを一度にモデルに与えるのではなく、まず各ルールを1行で説明した目次的なリストだけを渡します。モデルが今回のタスクに必要なルールを特定してから、その詳細を読み込みます。本の目次だけを見て、該当する章を開くようなイメージです。

抽出されたデータは次のようになります(JSON は機械が読むためのデータ形式で、波括弧とフィールド名で情報を整理します):

Codex 機械可読ルール・コントロールプレーン RFC 抜粋(原文のまま)
{
  "rfc": 14,
  "title": "Control Plane Services",
  "status": "approved",
  "domain": "control-plane",
  "statements": [
    {
      "slug": "use-quicksilver-for-edge-configuration-propagation",
      "section": ["Proposal", "Infrastructure"],
      "level": "SHOULD",
      "text": "If you need to propagate system or customer configuration to the edge, use Quicksilver via the outbox pattern",
      "href": "/rfcs/014-control-plane-services/#infrastructure"
    },
    {
      "slug": "api-schemas-must-be-documented-in-openapi-spec",
      "section": ["Proposal", "API Gateway"],
      "level": "MUST",
      "text": "API request and response schemas MUST be documented using an OpenAPI spec",
      "href": "/rfcs/014-control-plane-services/#api-gateway"
    }
  ]
}
分解して見ると:rfc は番号、status はこの標準の現在の状態(ここでは approved なのでまだブロックはしない)、domain は所属ドメイン。statements 配列の各要素が1つのルールです。level が MUST か SHOULD かを示し、text はルール本文、section は元文書の該当箇所、href は原文へのリンクで、Agent は違反を報告する際にこのリンクを直接提示できます。

各ルールには、変更されない番号が付与される

上記の slug フィールドが重要です。これは安定した識別子であり、RFC が更新されても変わりません。

なぜこれが重要なのでしょうか?同じルールが複数のシステムから参照されるためです。コードレビューアが報告し、モニタリングが発生回数を集計し、あるチームが例外申請を行うかもしれません。ルールの番号が文書の変更で変わってしまうと、これらの参照はすべて途切れてしまいます。安定した slug があれば、システムや時間を超えて同じルールを追跡できます。

60+ RFC 全部をモデルへ = コンテキスト過多 抽出Agent SHOULD と MUST のみ抽出 statements[] MUST APIリクエスト/レスポンス構造はOpenAPIで定義必須 slug: api-schemas-must-be-documented…(不変) SHOULD 設定のエッジ伝播はQuicksilverのoutboxパターンを使用 slug: use-quicksilver-for-edge-config…(不変) …各項目に section(原文の該当箇所)と href(原文へのリンク) モデルはまずこのリストだけを見て、必要なRFC本文のみを参照 当初はより簡潔なMarkdownとして抽出。後のJSON化は、エージェントが必要なコンテンツをより精確にフィルタリングするため
当サイトによる図解。原文のJSON抜粋と抽出プロセスの記述に基づく。ルール2件の中国語は日本語訳、フィールド構造は原文のまま。

もう1つ、注目すべき進化があります。彼らは当初、より簡潔な Markdown ファイルとして抽出していましたが、その後、より構造が豊かな JSON に変更しました。変更理由は、Agent が使用するコンテンツをより精確にフィルタリングする必要があったためです。今後は、ライフサイクルのどの段階(設計、実装、実行時)にルールが適用されるかを示すなど、さらに多くのメタデータを追加する予定です。

同じ壁に対する、別の会社の解決策
Stripe 社内エージェント開発実践:1人のエンジニアが1週間で開発した社内AIアシスタントが、ほぼ全社員に利用されるまで
Stripe が直面したのは、1000のスキルがコンテキストに収まらないという問題で、解決策も「まず目次、選択後に展開」でした。両社は独立に同じ道に到達し、スケールの限界も実測しています。
適用

3つのAgentが同じCodexを使用:コードレビュー、設計レビュー、障害報告レビュー

ルールがデータになると、それを利用できる場所が増えます。現在、日常業務で Codex を使用している Agent は3つです。

1. AIコードレビューア

各レビューで、まず RFC を取得し、Codex statements を解析します。モデルまたはコーディネーターがより多くのコンテキストを必要とする場合にのみ、完全な RFC 本文をロードします。ほとんどの場合、ステートメントだけで違反を説明するのに十分です。

どのように反応するかは、2つの要素で決まります。要件が SHOULD か MUST か、そして RFC の状態です。

RFC 状態SHOULD 要件未達MUST 要件未達
承認済み(approved)非ブロックの提案非ブロックの提案
強制(enforced)非ブロックの提案承認を保留、またはマージリクエストを直接ブロック(重大度による)

データ:Codex 導入以来、AIコードレビューアは約23万件の違反を指摘し、そのうち約1.6万件が承認の保留につながりました。つまり、強制された RFC の MUST 条項に抵触したことになります。

ここで注意すべき点があります。記事冒頭では「約25万件の違反、1.6万件のマージをブロック」と書かれていますが、コードレビューアの節では「約23万件、約1.6万件の承認保留」と書かれています。この2つの数値は一致しておらず、Cloudflare はその差を説明していません。統計の時点や範囲が異なる可能性があります。また、「承認の保留」と「マージのブロック」は厳密には同じではなく、前者は是正後に解放される可能性があります。

2. スペックレビューア:コードを書く前にアーキテクチャの誤りを検出

Cloudflare のエンジニアは実装前に設計ドキュメントと技術仕様(スペック)を書きます。これは計画書で、何を、なぜ、どのようなトレードオフで行うのかを記します。Codex のかなりの部分は、まさにこの設計とアーキテクチャに関するものです。

スペックレビューアは新しいスペックを自ら見つけ出し、関連する Codex 要件で評価します。この Agent が何で動いているかは興味深いです。すべて Cloudflare が顧客に販売している製品です。

Cloudflare WorkersAgent 本体が稼働。
D1レビュー結果と状態を保存。
AI Gatewayモデルへのリクエストはここを経由。
Cron Trigger新しいスペックを定期的にスキャン。

プロセスは次の通りです。まず Codex をドメインとセクションでフィルタリングし、設計に関連するものだけを残します(言語機能や実装詳細に焦点を当てた RFC はスキップ)。数段落のプロンプトがモデルに評価方法と結果の整理方法を指示します。報告された問題は重大度でスコアリングされ、SHOULD と MUST の影響を受けます。また、一般的な品質とアーキテクチャの提案も行います。実行後、スペック文書にメモを残し、カスタムダッシュボードへのリンクを貼って詳細を確認できるようにします。

約600件

レビューされたユニークな公開スペック(2026年5月初め以降)

3200+

レビュー呼び出し回数(オンデマンドとスペック変更による再実行を含む)

65 / 29 / 6

報告された問題の重大度分布(%):major / minor / critical

Cloudflare スペックレビューアのインターフェーススクリーンショット

スペックレビューアのインターフェース。上部にフィルター群:最近のレビュー時間(7日/30日/90日)、重大度(Critical+/Major+/全て)、検索、チーム、解決済みかどうか。レビュー対象のスペックは「Temporal Resiliency for Platform Workflow Automation」、番号 RM-24741、「1件の違反 / 4件のメモ」、最終レビューは2026年7月25日。意見はアーキテクチャメモ(さらに ARCHITECTURE / SCALE / OPEN QUESTIONS の3段階)と Codex 違反の2つの大きなブロックに分かれます。出典:blog.cloudflare.com。

このスクリーンショットはよく見る価値があります。Agent が報告する意見が具体的にどの程度なのかという重要な問いに答えてくれているからです。

赤く表示された critical のアーキテクチャ意見は次の通りです。このスペックはマルチクラスタ展開における名前空間戦略を定義していない、そして具体的に4つの補完すべき問題を挙げています。名前空間が2つのクラスタ間で複製されるのか、各クラスタ固有なのか。特定の名前空間内のワークフローが両方のクラスタで実行できるのか。フェイルオーバー時に名前空間の分離がどう維持されるのか。同じ名前の名前空間が2つの場所にある場合、それは同じ論理名前空間なのか、それとも独立したものなのか。最後に、これがワークフロー分離、マルチテナンシー、フェイルオーバー動作に影響を与えると指摘しています。

下にある Codex 違反は、RFC-013「依存関係の障害動作が未定義」に紐づく MAJOR レベルのものです。このスペックは worker が2つのクラスタ間でフェイルオーバーできると述べていますが、クラスタ障害時のアーキテクチャ上の動作が定義されていません。欠けている5点は、worker が自分のクラスタを利用できない場合に fail-open か fail-closed か。何がフェイルオーバーをトリガーするのか(自動か手動か)。worker がどのようにしてバックアップクラスタを発見し接続するのか。フェイルオーバーが実行中のワークフローに対して透過的か、それとも再起動が必要か。クラスタが利用できない場合、処理中のワークフローはどうなるのか。また、ドキュメントページのコメントで同僚が指摘した複製遅延の懸念を引用し、「ここには明確な障害モードの設計決定が本当に必要である」ことの裏付けとしています。

各意見の右側には「Recurring」タグ(この問題が繰り返し発生している)と「Feedback」ボタンがあります。

今後、彼らはスペックレビューアをさらに緊密に統合する予定です。意見をスペック文書に直接コメントとして投稿し、人と Agent の対話を埋め込んでレビュー結論にフィードバックできるようにし、影響の大きい提案をハイライトして人による追加レビューに回します。

3. 障害報告レビューア

同じ方法論を障害報告(ポストモーテムとも呼ばれる、インシデント発生後に書かれる報告書:何が起きたか、なぜ起きたか、どう解決したか、今後どう防ぐか)に適用します。

報告書の完全性をチェックするだけでなく、報告書が何が起きたかを明確に説明しているか、貢献要因を指摘しているか、解決プロセスを記録しているか、有意義なフォローアップアクションを提案しているかを評価します。これらの期待事項は専用の Codex RFC に書かれており、「適切な障害報告とは何か」という定義そのものが、機械でチェック可能なルールになっています。

スペックレビューアと同じ開発者プラットフォームコンポーネントを使用しており、この共有アーキテクチャは Codex 系 Agent の一般的なパターンになりつつあります。

2026年5月以来、200以上の障害報告を評価し、見つかったギャップには、忘れられたフォローアップアクション項目、不完全なタイムライン、見逃された検知シグナルなどがあります。これらの報告書の93%は、影響が低い、内部限定、または予防的な声明でカバーされるインシデントです。高重大度のインシデントでは、このレビューアの利用が必須であり、中央レビュープロセスの一部です。全ての問題が処理されるまで、報告書は完了と見なされません。

速度

さらに高速な2つのチェック経路:linter とローカルCLI

運用が始まると、エンジニアから遅いという不満が出始めました。

完全なAIコードレビューには通常数分かかります。コーディネーターフレームワークとサブAgentが稼働するためです。Cloudflare はここで非常に率直に書いています。このコスト(あるいはトークン)はしばしば価値があるが、エンジニアは確かに2つのことを報告している、と。1つは待ち時間。もう1つは、修正後に再実行するための往復コストです。

そこで彼らは2つの経路を追加しました。

経路1・linter 設定パッケージ

機械的に検証できる言語関連の要件は、linter ルールパッケージ(linter はコードの書き方を自動チェックする小さなツールで、ルールは固定的で、動作は非常に高速です)として、Codex 標準に沿って作成し、ミリ秒単位で問題を報告します。

TypeScript が最初にサポートされた言語で、同時に oxlint での実行に統一されました。oxlint の背後にある VoidZero チームは最近 Cloudflare に加わりました。Rust の linter は進行中で、Go も続き、彼らが最もよく使う3言語をカバーする予定です。

経路2・ローカルCLI

継続的インテグレーション(CI)の部分をレビューループから直接削除します。この CLI ツールは CI 内のコーディネーター機能を再現し、同じ(OpenCode ベースの)Agent を使用して自動計算された diff セットを実行し、結果を直接ターミナルに表示します。

Cloudflare 自身の判断では、linter はほぼ全ての開発者とコードベースに有用ですが、CLI はこのスタイルを好むエンジニア向けのオプションです。

同じCodexルールを3つの経路でチェック linter ミリ秒 意味を理解せず判断できる問題のみ ローカルCLI 同じく数分、ただしCIの往復を省く CIでの完全なレビュー 数分
当サイトによる図解。「ミリ秒」と「数分」は Cloudflare が示した桁で、バーの長さは概念的なもので、正確な比率ではありません。
ここに再利用可能な境界線がある

同じルールでも、誰にチェックさせるかは、意味の理解が必要かどうかで決まります。機械的に検証できるもの(命名、フォーマット、APIが取るべき引数など)は linter に任せ、ミリ秒で結果を出します。コンテキストを読んで判断する必要があるもの(この設計はフェイルオーバーを考慮しているか)だけが、モデルに数分かけさせる価値があります。

この2つを混ぜると、遅くて誰も使わないか、本当に重要な問題を見逃すかのどちらかになります。

同じ考え方を、はるかに小さなスケールで
Anthropic 公式:手動コードチェックをスキルに変換して、自己チェック・自己修正させる方法
Cloudflare は会社規模で実施:標準をデータ化し、Agentが執行する。同じアプローチを個人規模でどう実装するかは、自分が毎回手動で行っているチェックを機械が実行できる形に固定化することです。
まとめ

Cloudflare の今後の計画と、一致しない数字について

彼らが示すロードマップは3つです。

ソフトウェアライフサイクル全体への展開設計、実装、運用の各段階で Agent が一貫して問題を報告できるようにする(現在の3つの領域だけでなく)。
問題発見から修正提案へより長期的な目標は、Agent が問題を指摘するだけでなく、修正案を提案し、自律性を段階的に高めること。エンジニアは引き続きこれらの変更のレビューと承認を担当します。
エンジニアリング以外への拡張プロダクト、セキュリティ、コンプライアンス、トラスト&セーフティのチームが Codex に独自の標準を追加し始めており、Agent が設計や実装以外の考慮事項も評価できるようにしています。

私が検証した数値の不一致について

3つあります。いずれも本筋には影響しませんが、数値を引用する際には知っておくべきです。

違反数には2つの口径がある冒頭は「約25万件の違反、1.6万件のマージブロック」、コードレビューアの節は「約23万件、約1.6万件の承認保留」。差異の理由は説明されていません。
「承認の保留」は「マージのブロック」とは異なる前者は是正後に解放される可能性があります。この2つの表現が同じ記事内で混在しており、厳密には重みが異なります。
意見の採用率は不明スペックレビューアが報告した問題のうち、major は65%、critical は6%ですが、比較可能なベースラインはなく、これらの意見が実際にどの程度修正されたかも不明です。「報告された」と「修正された」の間には差があります。

彼ら自身による一言

Cloudflare は別の社内AIエンジニアリングスタックに関するブログ記事で、上記のどの数字よりも重みのある言葉を残しています。

これらの部品は単体で見れば珍しいものではありません。サービスカタログを持つ会社も、レビューボットを導入した会社も、エンジニアリング標準を公開している会社もたくさんあります。違いは、配線の仕方にあります。

Cloudflare「私たちの社内AIエンジニアリングスタック」、当サイト訳

同じ記事には、このシステム全体の導入データも掲載されています。開始から開発チームの93%が採用するまで、1年未満。2026年2月5日から4月15日までの間に、アクティブユーザーは3683人で、会社の60%にあたります。

開発と技術管理への3つの示唆

この仕組みを分解すると、Cloudflare という特定の状況を離れても成立する3つの教訓があります。

1. 長いドキュメントを直接モデルに与えない

標準は人が読むためにあり、モデルは読めません。60以上のRFCをそのまま与えるとコンテキストが満杯になり、出力品質が低下します。中間に構造化のステップが必要です。「何をすべきか」を個別のステートメントとして抽出し、JSONに変換し、それぞれに文書変更の影響を受けない slug 番号を付けます。

構造化されて初めて、必要なものだけを供給できます。モデルはまず1行1件のリストだけを見て、今回使うルールを判断し、それから該当するルールの完全な本文を読みます。精度が上がり、トークンも節約できます。

2. ルールは段階化し、緩衝期間を設ける

まず段階化:SHOULD は推奨、MUST は必須。このステップが、機械がリマインダーを出すか、ブロックするかを決定します。

次に緩衝:新しいルールは承認後、まず通知のみでブロックはしません。チームは自分たちに何件の違反があるかを見て、自分のペースで修正できます。十分に修正が進んだら、人が2つ目のスイッチを明示的に切り替え、実際のブロックを開始します。この緩衝期間を飛ばして直接強制すると、開発現場の不満を買うことになります。

3. チェックは前方に移動させ、コード完成後に待たない

Cloudflare の真の強みは、展開場所にあります。同じルールセットが、3つの異なる時点でチェックされ、前に行くほどコストが低くなります。

基本設計段階では、スペックレビューアがコーディング開始前に設計文書をレビューします。この時点でのアーキテクチャ決定の変更は、数行の修正で済みます。ローカル開発段階では、linter がミリ秒でエラーを報告し、CLI ツールがローカルで完全なレビューを実行するため、CI を待つ必要はありません。コミット・マージ段階で、最後に CI での数分間の完全なレビューが行われます。

この考え方は、エンジニアリング界では「シフトレフト」(品質チェックをプロセスの末端から前方へ移すこと)として知られています。コードを書いた後にアーキテクチャの誤りに気付くと、手戻りコストは設計段階の数十倍になります。

✅ 上記3つに加えて、これらの具体的なプラクティスもすぐに真似できる
Codex は Cloudflare 内部システムのため外部では使用できません。しかし、使用されている部品は全て公開されています。RFC 2119 が MUST/SHOULD を定義し、oxlint が TypeScript チェックを実行し、OpenCode がレビューAgentを支えています。これら3つは今日でも試すことができます。
出典
How Cloudflare enforces engineering standards using AITimo Reimann · The Cloudflare Blog·blog.cloudflare.com·2026-08-04
当サイト注記
2枚のスクリーンショット(ワークフロー図、スペックレビューア画面)は元記事から。「配線の仕方」の引用、93%の採用率と3683人のアクティブユーザーは、Cloudflare の別記事「社内AIエンジニアリングスタック」からのもので、元記事にはありません。JSON抜粋は原文のまま。図中のルール2件の日本語は当サイトの訳です。「当サイトによる図解」とあるものは全て当サイトが作成したもので、元記事の図ではありません。数値の不一致については第7節で説明しています。
↑ 本文ここまで
✓ この記事は全文無料です

メンバーは全文 Markdown のコピー・保存に加え、自分の AI に購読・質問させることができます。

原文を読む ↗
📮 新着解説をメールでいち早く

役に立ちましたか?メールを登録すると、新着解説を公開と同時にお届けします。解除はいつでも。