このコンテンツは自動機械翻訳サービスによる翻訳版であり、皆さまの便宜のために提供しています。原本の英語版と異なる誤り、省略、解釈の微妙な違いが含まれる場合があります。ご不明な点がある場合は、英語版原本をご確認ください。
Cloudflareには広大なAPIサーフェスがあります。私たちには100を超える製品があり、3,000近くのHTTP API運用があります。
エージェントは、ますます、私たちのAPIの主要な顧客となっています。開発者は、コーディングエージェントを持ち込み、アプリケーション、エージェント、およびプラットフォームをCloudflareに構築・デプロイし、アカウントを設定し、当社のAPIにクエリを実行して分析やログを取得します。
私たちは、すべてのCloudflare製品をエージェントが必要とするすべての方法で利用できるようにしたいと考えています。たとえば、現在、CloudflareのAPI全体を、1,000未満のトークンを使用する単一のコードモードMCPサーバーで利用できるようにしています。しかし、カバーすべき領域は他にもたくさんあります:CLIコマンド。Workersバインディング — ローカル開発とテスト用のAPIを含む。複数言語に対応したSDK。Cloudflareの設定ファイルです。Terraform。開発者向けドキュメント。APIドキュメントおよび OpenAPI スキーマ。エージェントスキル。
現在、当社製品の多くは、これらのインターフェースのいずれにも使用できません。これは特に、CLIであるWranglerに当てはまります。多くのCloudflare製品には、WranglerにCLIコマンドがありません。エージェントはCLIを好みます。
そこで、Wrangler CLIを再構築し、Cloudflare全社向けのCLIにしました。これは、すべてのCloudflare製品にコマンドを提供し、コードとしてのインフラストラクチャを使用してそれらをまとめて設定できるようにします。
本日は、Wranglerの次のバージョンの早期情報を技術プレビューとしてご紹介します。まだ初期段階ですが、公共の場で仕事をする時に最高のフィードバックが得られます。
本日、npx cfを実行すると、技術プレビューをお試しいただけます。あるいは、npm install -g cfを実行して、グローバルにインストールすることもできます。
現在、cfはCloudflare製品のほんの一部のコマンドを提供しています。すでにCloudflare APIサーフェス全体をサポートするcfのバージョンをテスト中です。また、各製品のコマンドを意図的に見直し、調整し、エージェントと人間の両方にとって機能的な出力が得られるようになる予定です。この技術プレビューは、将来のWrangler CLIのほんの一部に過ぎません。これからの数か月の間に、皆さんがご存知のWranglerの一部をお届けします。
Cloudflareでの製品開発の速いペースと同期し続ける方法でこれを構築するために、コマンド、設定、バインディングAPIなどを生成できる新しいシステムを作成する必要がありました。
スキーマとコード生成パイプラインを第一原理から再考
Cloudflare API用のOpenAPIスキーマに基づいて、CloudflareはすでにAPI SDK、Terraformプロバイダー、およびコードモードMCPサーバーを生成しています。しかし、CLI、Workersバインディング、wrangler.jsonc設定、エージェントスキル、ダッシュボード、ドキュメントの更新は、依然として手動プロセスです。これは既にエラーが発生しやすく、やり取りが多すぎて、CLIの次のバージョンではCloudflare API全体をサポートするために拡張することができませんでした。
これを実現するためには、OpenAPIスキーマで表現できる以上のものが必要でした。OpenAPIスキーマはREST APIsを記述していますが、ローカル開発とAPI呼び出しの両方を組み合わせた複数のアクションを含むインタラクティブなCLIコマンドがあります。RPC APIsとして表現されるWorkersバインディングと、これらすべてを結びつけるエージェントスキルとドキュメントがあります。
Cloudflareでは多くのTypeScriptを記述しています。これはソフトウェアエンジニアリングの言語です。そして、Cap n’ Web、Code Mode、Workersプラットフォームに組み込まれたRPCシステムと同じように、TypeScriptでAPIを表現する方が効果的であることがわかり続けています。
そこで、APIの全スコープ、CLIコマンドと引数、そしてインターフェースを生成するために必要なコンテキストを定義できる、新しいTypeScriptスキーマを導入しました。スキーマフォーマットは「単なる」TypeScript型のセットで、一貫性を保つための制約、リンティング、ガードレールが備わっています。しかし、当社独自のフォーマットであるため、現在または将来的に必要なインターフェースをサポートするために簡単に適応でき、OpenAPIスキーマも生成できます。
これまでは、当社が必要としていたマシンの構築に焦点が当てられてきました。これにより、当社が何年も提供を望んできたCLIやその他のインターフェースの構築を始めることができます。これにより、特にCLIのコンテキストエンジニアリングに関して、Cloudflare全体で標準化してエージェントにとってさらに優れたものになるだろうと、より大きな構想を持ち始めました。
エージェントとCLI — 一貫性とコンテキストエンジニアリング
エージェントはCLIが一貫していることを期待しています。あるコマンドがリソースに関する情報を取得するための構文として<command> infoを使用し、別のコマンドが<command> getを使用している場合、エージェントは1つを想定し、もう1つの存在しないコマンドを呼び出します。数百人、数千人の大規模なエンジニアリング組織が多くの製品を抱える大規模なエンジニアリング組織において、レビューを通じて手作業で一貫性を持たせるのはスイスのチーズです。また、CLIレイヤーで強制することもできますが、その場合、CLI、REST API、SDKの間で命名が異なるため、問題をさらに悪化させることになります。
最初のステップの1つは、スキーマ層で強制されるルールとガードレールの作成を開始することです。いつも get であって、決して info ではありません。常に --force であり、決して --skip-confirmations ではありません。常に --json であり、決して --format ではなく、常にコマンド全体でサポートされています。
Wrangler CLIもかなりユニークなもので、シミュレートされたローカルリソースと、D1データベース、R2ストレージバケット、KVネームスペースのようなリモートリソースの両方で動作するコマンドと設定を提供します。つまり、一貫したデフォルトがさらに重要になるということです。エージェントがリモートデータベースを変更していると思っていても、実際にはローカルデータベースにレコードを追加しているだけで、開発者がリモートデータベースに対してローカル開発するためにリモートバインディングを使用している場合、エージェントは、新たに追加されたレコードが表示されない理由を理解できないエージェントがローカル開発サーバーにリクエストを行うと、起動します。一貫したデフォルトと、コマンドがリモートリソースに適用されるか、ローカルリソースに適用されるかを明確に示す出力により、エージェントは明示的なガイダンスを得ることができます。
Local Explorer — リモートでできることを、ローカルでできるようになりました
本日、Local Explorerもリリースします。これは、WranglerとCloudflare Viteプラグインの両方でオープンベータで利用できる新機能です。
Local Explorerでは、KV、R2、D1、Durable Objects、Workflowsなど、ローカル開発時にWorkerが使用するシミュレートされたリソースを調査できます。これらのそれぞれを使用したCloudflare APIとダッシュボードを介してできるのと同じことを、同じ基盤となるAPI構造によって活用して、完全にローカルで行うこともできます。
当社は長年にわたり、Cloudflare Workersだけでなくプラットフォーム全体を対象に、完全にローカルな開発に賭けてきました。D1を使う場合、D1はホストされたサーバーレスデータベース製品であっても、追加のセットアップやツールなしに、完全にローカルでデータベースを実行し、バインディングを介して通信することができます。当社のローカル開発プラットフォームエミュレーターであるMiniflareを介して、Workersランタイムは、ローカル開発で本番環境とまったく同じAPIを提供し、ローカルSQLiteデータベースを使用して同じ機能を提供します。これにより、ネットワークアクセスを必要とせず、オフラインで作業するテストを簡単に作成して実行できます。
しかし、これまでは、どのデータがローカルに保存されているかを調べるには、リバースエンジニアリングを行い、.wrangler/stateのコンテンツを検査する必要がありました。ディレクトリに作成したり、サードパーティツールをインストールしたりすることができます。
これで、Wrangler CLIまたはCloudflare Viteプラグインでアプリを実行するたびに、ローカルエクスプローラー(キーボードショートカットe)を開くよう求められます。これにより、Workerが現在アタッチしているバインディング、そしてそれらに対してどのようなデータが保存されているかをシンプルなローカルインターフェースで確認することができます。
エージェントを使用して構築する場合、Local Explorerは、エージェントがデータで何をしているのかを理解するのに最適な方法であり、ローカル開発サイクルをよりインタラクティブにします。スキーマを検証したり、テストレコードをシードしたり、最初からやり直してDROP TABLEを実行する必要があるときはいつでも、Local Explorerを利用できます。
ここでの目標は、ローカルデータのみを変更するCloudflare APIのミラーサイトを提供し、すべてのローカルリソースがリモートで使用しているのと同じAPIを介して利用できるようにすることです。また、ローカルとリモートでAPIの形式を合わせることで、次期バージョンのCLIでCLIコマンドを実行し、--local フラグを渡した時に、コマンドが動作します。唯一の違いは、コマンドが代わりにCloudflare APIのこのローカルミラーにリクエストを行うことです。
本日より、このAPIはWranglerまたはVite Plugin搭載アプリケーションで、/cdn-cgi/explorer/apiにてご利用いただけます。エージェントをこのアドレスに向けることで、エージェントに通信するだけで、あなたのローカルリソースを管理できるOpenAPI仕様が見つかります。
Cloudflare全体のCLIに対する希望や夢をお聞かせください
マシンを構築したので、次はWranglerの最高の部分を取り上げ、現在可能なものと組み合わせて、WranglerをCloudflareのすべてを使用するための最高のCLIにする時です。
本日、npx cfを実行して、技術プレビューをお試しいただけます。あるいは、npm install -g cfを実行して、グローバルにインストールすることもできます。
この初期バージョンでは、現在の技術プレビューの機能だけでなく、Cloudflareのプラットフォーム全体のCLIに何を求められるかについて、皆様からのフィードバックを求めています。1行のCLIコマンドが簡単ですが、現在ダッシュボードで数回クリックできるようになっており、ご希望をお聞かせください。DNSレコードやキャッシュルールなど、wrangler.jsoncで設定できたらと思うこと。エージェントが行き詰っている場所、そしてエージェントに提供されるCLIが必要なコマンドは何か?
Cloudflare Developers Discordに参加して、CLIに最初に追加してほしいものをお聞かせください。今後も多くのアップデートにご期待ください。
Emily Shen氏、Local Explorerプロジェクト立ち上げに貴重な貢献をしてくれたことに感謝の気持ちを贈りたいと思います。