AIエージェント
Cloudflare、新CLI「cf」をベータ公開:全API操作をエージェントから
- 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年に作られたv1のリポジトリは2023年8月3日にアーカイブされ、新しい版はWorkers SDKのリポジトリで保守されている1。cfは2026年4月13日に一部の製品のコマンドだけを持つ技術プレビューとして公開され2、9月28日にAPIの全操作をコマンドにしたオープンベータとなった1。cfのコマンドの多くは、同じ日にオープンソースとして公開された生成パイプラインForgeがスキーマから生成する。cf dev や cf build のようにAPIの呼び出しに当たらない命令は、手で書いて生成物の上に足す3。
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 |
| スキーマから | 12 | 0 | 12 |
| スキーマから | 12 | 0 | 問い |
この数から言える性質は三つある。
- コマンドで呼べる操作の数は、手で足す方法ではチームが書いた数で決まり、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を超えると書く3。どちらも「を超える」という下限の書き方である。Wranglerは製品チームがそれぞれのやり方でコマンドを足してきたCLIで、作り手は、約280の経路の範囲ですらチームをまたいで型を揃えるのはほぼ不可能だったと書く1。製品ごとのチームが書いた分だけがコマンドになる作り方である。
作り手が生成へ移した理由の一つは、Wranglerを使う主体が変わったことである1。2026年3月にWranglerの利用の4分の1をエージェントが占め、前年は一桁台の割合だった。告知の前の週には48%に達した。エージェントは1日に使う異なるコマンドの数がほぼ2倍で、6個以上のコマンドを使う確率がほぼ4倍である1。作り手は続けて「エージェントはCLIを好む。しかしWranglerが提供するのは約280の操作分のコマンドで、Cloudflareは数千の操作を提供している」と書く1。本稿の推測では、使う操作の種類が多いほど、手で足したコマンドに無い操作に当たる場面が増える。
スキーマから全操作のコマンドを組むこと自体はcfに限らない。Cloudflare自身も、cfより前にCloudflare APIのOpenAPIスキーマからSDKとTerraformプロバイダとMCPサーバーを生成しており、CLIは手作業で更新していたと書く2。AWS CLIも、サービスごとの操作の一覧(サービスのモデル)に並ぶ全操作を順に回してコマンドの表を組む4。Forgeの告知も、SDK(プログラムからAPIを呼ぶためのライブラリ)からCLIを生成する連鎖は他の生成器では一般的だと書く3。本稿がcfについて見るのは、生成の範囲をCLIへ広げ、Cloudflareの全APIをコマンドにしたことと、次の節の検索である。
生成する方法なら、APIに操作が増えても同じ手順でコマンドを増やせる。生成したコマンドがAPIの変更に付いていく仕組みは次のとおりである。cfの告知によれば、CLIのコマンドはAPI文書とSDKの生成に使うのと同じスキーマから作る1。Forgeはいまcfに要る出力を生成しており、API文書とSDKは今後数か月で担う予定である3。Forgeの告知は、各チームのAPIリポジトリで変更のたびに走り、変更を検査して、その変更を強調したCLI・文書・SDKのプレビュービルドを作ることを目指すと書く3。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を好むようになりつつあると書き、その理由を、大きなツールのスキーマをコンテキストに読み込まずに、目的別の簡潔なコマンドで動けることに置く5。READMEのこの比較は、CloudflareのAPIを対象にしていない。Cloudflare自身は2026年2月に、search()とexecute()の2つのツールでCloudflare APIの全体を扱うMCPサーバーを公開し、消費するトークンは約1,000で、APIのエンドポイントの数によらず一定だと書く6。CLIの側では、コマンドが少なければ --help の一覧を全部読んでもよいが、3,000個の説明を読めば、それだけでコンテキストの大きな部分を使う。
作り手の答えが cf cli search である。エージェントがやりたいことを自然言語で尋ねると、APIの説明と引数から作った小さな検索索引が、合うコマンドの候補を返す1。エージェントが初めて --help を実行したとき、cfはこの命令があることを知らせる1。返ってくる候補の数を告知は書いていないが、候補が少数に収まれば、読む説明の数はコマンドの総数ではなく候補の数で決まる。
同じ問題をモデルの側で解く例がある。Anthropicのtool searchの文書は、利用できるツールが30〜50を超えるとClaudeが正しいツールを選ぶ能力が落ちると書き、すべてのツール定義を先に読み込む代わりに、カタログを検索して必要なツールだけを読み込む仕組みを提供する7。同じ文書は、検索を挟めば数千のツールからでも選択の精度は高いままだと書き、ふつうは1回の要求に要る3〜5個のツールだけを読み込むとも書く7。cfはCLIの側で、Anthropicはモデルの側で、候補を絞ってから選ばせている。全操作を出す設計である限り、中から探す仕組みは要り続ける。
使う操作が少数で固定なら、手で選んだコマンドで足りる
cfの利点が出ない条件もある。決まった少数の操作だけを繰り返す自動化では、手で選んだ少数のコマンドを渡せば、一覧を読んでも説明は少なく、検索の手順も要らない。tool searchの文書は、ツールが10未満のときや、毎回すべてのツールを使うときには、検索を挟まない通常の呼び出しのほうが合うと書く7。同じ手順の配備を毎回繰り返すだけの作業に、全操作のコマンドを渡す必要はない。
本稿の数え方は、エージェントがコマンドを実行するシェルの安全を含まない。Anthropicは、エージェントが生成したコードを実行するには、隔離と資源の制限と監視を備えた実行環境が要ると書いており、本稿は、CLIが全操作を呼べるかどうかによらず、シェルで実行させる限り同じ要件が当てはまると考える8。
出典8件
-
Taylor ほか「Introducing cf: the agentic CLI for the entire Cloudflare API」Cloudflare Blog, 2026. https://blog.cloudflare.com/cloudflare-cf-cli-launch/ https://github.com/cloudflare/wrangler-legacy https://github.com/cloudflare/workers-sdk — 約280から3,000超へ、エージェント利用48%、検索命令、Wranglerへの委譲と保守、v1と新しい版のリポジトリ。 ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 ↩11 ↩12 ↩13 ↩14 ↩15 ↩16 ↩17 ↩18
-
Taylor ほか「Building a CLI for all of Cloudflare」Cloudflare Blog, 2026. https://blog.cloudflare.com/cf-cli-local-explorer/ — cfの技術プレビュー(4月13日)。SDK等はOpenAPIスキーマから生成済みで、CLIは手作業で更新していた。 ↩ ↩2
-
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を好む理由を、大きなツールのスキーマをコンテキストに読み込まないことに置く。 ↩
-
Carey「Code Mode: give agents an entire API in 1,000 tokens」Cloudflare Blog, 2026. https://blog.cloudflare.com/code-mode-mcp/ — search()とexecute()の2ツールでCloudflare APIの全体を約1,000トークンで扱うMCPサーバー。 ↩
-
Anthropic「Tool search tool」(2026-09-29 取得). https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-search-tool — ツールが30〜50を超えると選択が落ち、検索なら数千でも精度が保たれ、読み込むのはふつう3〜5個で、10未満なら検索なしが合うこと。 ↩ ↩2 ↩3
-
Anthropic「Code execution with MCP: Building more efficient agents」2025. https://www.anthropic.com/engineering/code-execution-with-mcp — エージェントが生成したコードの実行には、隔離・資源の制限・監視を備えた実行環境が要ること。 ↩
この記事はAIを使用して執筆されました。内容には誤りが含まれる可能性があります。事実や数字の出典は脚注から確かめられます。