AIエージェント
Cloudflareのcfは全APIをスキーマからCLIにした
- Cloudflare
- AIエージェント
- CLI
- cf
- Wrangler
- Forge
- API
- スキーマ
- tool search
- SDK
- Workers
- コマンド
- Anthropic
- MCP
- シェル
- aws-cli
- playwright-cli
- help
- 文脈
目次
開発者の中には、クラウドの資源の作成や配備、監視までをコーディングエージェントに任せたい人がいる。エージェントはシェルでコマンドを実行できるので、提供元が配るコマンドラインの道具(CLI、端末から打つコマンドで操作する道具)を渡せば、人が管理画面で一つずつたどってきた手順を、エージェントが代わりに進められる。
ところが、提供元が手で作ってきたCLIでは、コマンドで呼べる操作が、提供元のAPI(プログラムから機能を呼ぶための窓口)にある操作の一部に限られることがある。コマンドの無い操作は、人が管理画面で行うか、エージェントにAPIを直接呼ばせることになる。渡したCLIがAPIのどこまでを呼べるのかを、開発者は先に知っておく必要がある。
WranglerはCloudflareのWorkers(Cloudflareの上で動かすプログラム)を開発・配備するためのCLIで、Cloudflareが2019年から公開リポジトリで保守している1。cfは2026年9月28日にCloudflareがオープンベータとして公開した新しいCLIである1。cfのコマンドの多くは、同じ日にオープンソースとして公開された生成パイプラインForgeがスキーマから生成する。cf dev や cf build のようにAPIの呼び出しに当たらない命令は、手で書いて生成物の上に足す2。
Cloudflareのcfは、APIの全操作をどのようにしてCLIのコマンドにしたのか。
cfはAPIのスキーマ(全操作と引数を機械が読める形で書いた仕様書)から全操作のコマンドを生成し、エージェントがその中から検索で一つを選ぶ命令を添えた。 置き換え前のCLIで、手で作られたWranglerがコマンドにしていた操作は約280で、cfは3,000を超える操作をコマンドとして持つ1。作り手は生成へ移した理由として、チームごとに手で足したコマンドの型を揃えることと、約280の操作にとどまるコマンドをAPI全体へ広げることを、一度に行いたかったと書く1。Wranglerの利用のうちエージェントが占める割合は、告知の前の週に48%に達していた1。コマンドが全操作に増えた分、エージェントが中から一つを探す問題が生じるので、cfは検索命令 cf cli search を用意した1。
十二の操作でコマンドの数を数える
※ この節の数値は説明のための仮定で、測定値ではありません。
操作が12個あるAPIを考える。提供元には製品が三つあり、各製品に、作成・一覧・更新・削除の4個の操作がある。このAPIのCLIを作る方法は二つある。
手で足す方法では、製品ごとのチームが、要ると判断した操作にだけコマンドを書く。製品Aのチームが作成と一覧の2個、製品Bのチームが一覧の1個を書き、製品Cのチームは書かなかったとする。コマンドは3個で、残る9個の操作にはコマンドが無い。
スキーマから生成する方法では、スキーマに載る操作の一つひとつからコマンドを作る。コマンドは12個で、コマンドの無い操作は0個である。ただしcfの作り手は、スキーマに少し情報を注記したうえで生成の元に使うと書いている1。
次に、エージェントが製品Bの更新を行うコマンドを一つ選ぶ場面を考える。エージェントは候補のコマンドの説明を読んで選ぶ。手で足したCLIでは読む説明は3個だが、製品Bの更新にはコマンドが無い。生成したCLIで --help(コマンドの一覧と説明を表示する指定)の一覧をすべて読むなら、読む説明は12個である。検索命令があれば、問いを1回打ち、返ってきた候補(たとえば2個)の説明だけを読む。
| 作り方 | コマンドの数 | コマンドの無い操作 | 一つ選ぶために読む説明の数 |
|---|---|---|---|
| 手で足す | 3 | 9 | 3(製品Bの更新は無い) |
| スキーマから生成し、一覧を読む | 12 | 0 | 12 |
| スキーマから生成し、検索で絞る | 12 | 0 | 問い1回+候補2 |
この数から言える性質は三つある。
- コマンドで呼べる操作の数は、手で足す方法ではチームが書いた数で決まり、APIの操作の数とは連動しない。生成する方法ではスキーマに載る操作の数に等しく、APIに操作が増えれば、スキーマに注記を足して同じ手順で増やせる。
- 一つ選ぶために読む説明の数は、一覧を読む限りコマンドの数に比例する。検索を挟むと、読む数は返ってくる候補の数で決まり、コマンドの総数にはよらない。
- エージェントが使う操作が少数で決まっている場合(例では製品Aの作成と一覧だけ)、手で足したCLIでも呼べる操作に不足は無い。一覧を読んでも説明は3個で、検索の問いを打つ手間も要らない。この条件では、一覧を読む限り生成する方法の利点は出ない。検索で絞れば読む説明は2個まで減るが、問いを1回打つ手順が加わる。
Wranglerは手で足す方法で作られたCLIで、cfは生成する方法で作られたCLIである。
Wranglerの約280からcfの3,000超へ
手で足すCLIでは、コマンドで呼べる操作の数はチームが書いた数で決まり、スキーマから生成すればスキーマに載る全操作がコマンドになる。その差を示すのが、コマンドで呼べる操作の数についての作り手の数字である。Wranglerがコマンドにしていた操作は約280で、cfは3,000を超えるCloudflare APIの全操作をコマンドとして持つ1。同じ日のForgeの告知は、同じAPIの操作を3,500を超えると書く2。どちらも「を超える」という下限の書き方である。Wranglerは製品チームがそれぞれのやり方でコマンドを足してきたCLIで、作り手は、約280の経路の範囲ですらチームをまたいで型を揃えるのはほぼ不可能だったと書く1。製品ごとのチームが書いた分だけがコマンドになる作り方である。
作り手が生成へ移した理由の一つは、Wranglerを使う主体が変わったことである1。2026年3月にWranglerの利用の4分の1をエージェントが占め、前年は一桁台の割合だった。告知の前の週には48%に達した。エージェントは1日に使う異なるコマンドの数がほぼ2倍で、6個以上のコマンドを使う確率がほぼ4倍である1。作り手は続けて「エージェントはCLIを好む。しかしWranglerが提供するのは約280の操作分のコマンドで、Cloudflareは数千の操作を提供している」と書く1。本稿の推測では、使う操作の種類が多いほど、手で足したコマンドに無い操作に当たる場面が増える。
スキーマから全操作のコマンドを組むこと自体はcfに限らない。AWS CLIも、サービスごとの操作の一覧(サービスのモデル)に並ぶ全操作を順に回してコマンドの表を組む3。Forgeの告知も、SDK(プログラムからAPIを呼ぶためのライブラリ)からCLIを生成する連鎖は他の生成器では一般的だと書く2。本稿がcfについて見るのは、生成の範囲をCloudflareの全APIにしたことと、次の節の検索である。
生成する方法なら、APIに操作が増えても同じ手順でコマンドを増やせる。生成したコマンドがAPIの変更に付いていく仕組みは次のとおりである。cfの告知によれば、CLIのコマンドはAPI文書とSDKの生成に使うのと同じスキーマから作る1。Forgeはいまcfに要る出力を生成しており、API文書とSDKは今後数か月で担う予定である2。Forgeの告知は、各チームのAPIリポジトリで変更のたびに走り、変更を検査して、その変更を強調したCLI・文書・SDKのプレビュービルドを作ることを目指すと書く2。APIを変えたチームが、出荷前に生成物を入れて試せるようにする狙いである。
cfが生成で持つのはAPIの操作であり、Workersの開発と配備のすべてではない。作り手は、多くのWorkersはエージェントで簡単に移行できると書く一方、esbuildを使い続けるJavaScript WorkersとRustとPythonのWorkersの開発と配備は当面Wranglerに委ねる1。Cloudflareはベータ終了後18か月にわたってWranglerの保守を続けると書くが、保守の終了後にこれらの構成がどこへ移るかは書いていない1。
3,000の経路から一つを探す cf cli search
コマンドが全操作に増えると、一覧を読む限り、エージェントが一つを選ぶために読む説明の数もコマンドの数に比例して増える。コマンドの数が3,000を超えたあと、作り手自身もこの問いを立てている。作り手は「CLIに3,000通りの経路があるとき、エージェントは文脈を膨らませずに、必要な操作をどう素早く見つけるのか」と書く1。文脈とは、モデルが一度に読める入力の範囲(コンテキストウィンドウ)である。MicrosoftのPlaywright CLIのREADMEは、コーディングエージェントがMCP(エージェントが外部の道具を呼ぶための規約)よりCLIを好むようになりつつあると書き、その理由を、大きな道具のスキーマを文脈に読み込まずに、目的別の簡潔なコマンドで動けることに置く4。これはCLIとMCPの比較で、cfにも当てはまる。ただ、コマンドが少なければ --help の一覧を全部読んでもよいが、3,000個の説明を読めば、それだけで文脈の大きな部分を使う。
作り手の答えが cf cli search である。エージェントがやりたいことを自然言語で尋ねると、APIの説明と引数から作った小さな検索索引が、合うコマンドの候補を返す1。エージェントが初めて --help を実行したとき、cfはこの命令があることを知らせる1。検索を挟めば、読む説明の数は返ってくる候補の数で決まり、コマンドの総数にはよらない。
同じ問題をモデルの側で解く例がある。Anthropicのtool searchの文書は、利用できる道具が30〜50を超えるとClaudeが正しい道具を選ぶ能力が落ちると書き、すべての道具定義を先に読み込む代わりに、カタログを検索して必要な道具だけを読み込む仕組みを提供する5。同じ文書は、検索を挟めば数千の道具からでも選択の精度は高いままだとも書いており、候補の多さそのものは検索で補える5。cfはCLIの側で、Anthropicはモデルの側で、候補を絞ってから選ばせている。全操作を出す設計である限り、中から探す仕組みは要り続ける。
使う操作が少数で固定なら、手で選んだコマンドで足りる
cfの利点が出ない条件もある。決まった少数の操作だけを繰り返す自動化では、手で選んだ少数のコマンドを渡せば、一覧を読んでも説明は少なく、検索の手順も要らない。tool searchの文書は、道具が10未満のときや、毎回すべての道具を使うときには、検索を挟まない通常の呼び出しのほうが合うと書く5。同じ手順の配備を毎回繰り返すだけの作業に、全操作のコマンドを渡す必要はない。
本稿の数え方は、エージェントがコマンドを実行するシェルの安全を含まない。Anthropicは、エージェントが生成したコードを実行するには、隔離と資源の制限と監視を備えた実行環境が要ると書いており、本稿は、CLIが全操作を呼べるかどうかによらず、シェルで実行させる限り同じ要件が当てはまると考える6。
出典6件
-
Taylor ほか「Introducing cf: the agentic CLI for the entire Cloudflare API」Cloudflare Blog, 2026. https://blog.cloudflare.com/cloudflare-cf-cli-launch/ — Wranglerの約280から全APIの3,000超への拡大、エージェント利用の48%、検索命令、Wranglerへの委譲と保守期間。 ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 ↩11 ↩12 ↩13 ↩14 ↩15 ↩16 ↩17 ↩18
-
Mitropoulos ほか「Introducing Forge: the open source pipeline for generating SDKs, CLIs, docs, and more」Cloudflare Blog, 2026. https://blog.cloudflare.com/forge-open-source-generation-pipeline/ — cfの生成を担い、変更ごとにプレビューを作る構想と、3,500超の操作数。 ↩ ↩2 ↩3 ↩4 ↩5
-
Amazon Web Services「aws-cli awscli/clidriver.py」(2026-09-29 取得). https://github.com/aws/aws-cli/blob/develop/awscli/clidriver.py — サービスのモデルに並ぶ全操作を順に回し、操作ごとにコマンドを作る実装。 ↩
-
Microsoft「playwright-cli README」(2026-09-29 取得). https://github.com/microsoft/playwright-cli — エージェントがMCPよりCLIを好む理由を、大きな道具のスキーマを文脈に読み込まないことに置く。 ↩
-
Anthropic「Tool search tool」(2026-09-29 取得). https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-search-tool — 道具が30〜50を超えると選択が落ち、検索なら数千でも精度が保たれ、10未満なら検索なしが合うこと。 ↩ ↩2 ↩3
-
Anthropic「Code execution with MCP: Building more efficient agents」2025. https://www.anthropic.com/engineering/code-execution-with-mcp — エージェントが生成したコードの実行には、隔離・資源の制限・監視を備えた実行環境が要ること。 ↩
この記事はAIが執筆しています。内容には誤りが含まれる可能性があります。ご注意ください。