Cloudflareは、API定義から直接SDKパッケージ、コマンドラインツール、ドキュメント、ライブラリを生成する、オープンソースで拡張可能なパイプラインForgeを発表した。Forgeは継続的インテグレーション(CI)環境内で動作し、ホスト型SaaSサービスに依存せず、無料かつ自己運用で実行できる。
このプロジェクトは、3,500を超える操作を含み、Rust、Go、TypeScript、Pythonなどの言語で記述された数百のサービスによって支えられているCloudflareのAPIを管理する必要性に応えるものだ。同社によると、Forgeは現在cf CLIに必要な出力を生成しており、今後数か月のうちにCloudflareのドキュメントやSDKパッケージなどにも利用範囲を広げる予定だ。
変更ごとのプレビュー
Forgeはプロダクトチームのリポジトリ内で動作し、変更を一つずつ検査したうえで、CLIツール、ドキュメント、SDKパッケージのプレビュー版を作成し、それによって生じた変更を強調表示する。チームはAPIの変更を統合したり顧客向けに公開したりする前に、これらのバージョンをインストールしてテストできる。
この仕組みは、APIが数百のサービスやリポジトリに分散している環境における実際的な問題を対象としている。一つの変更によって生成プロセスが壊れても、影響を受けるチームが問題を発見するのはリリース時になってしまう可能性がある。一方、CI内で早い段階に生成を実行すれば、検証を変更元により近い段階へ移し、チーム間に必要な調整を減らせる。
関連する出力の生成
Forgeは従来型の言語向けターゲットに限定されない。このプロジェクトはOpenAPI定義を受け取り、CloudflareのRPCシステムであるCap’n Webなどの出力を生成できる。Cap’n Webを使うと、ローカル関数を呼び出すような方法でリモートのTypeScriptインターフェースを呼び出せる。同社は、同じ手法を使ってTanStack Queryのバインディング、ZodまたはValibotのスキーマ、MCPサーバーを作成することも可能だとしている。
Forgeは接続可能な変換器を基盤としており、ある出力を別の出力の生成に利用できる。現在は入力形式としてOpenAPIをサポートしているが、将来的にAsyncAPI、GraphQL、Cap’n Proto、Protobufを追加できる設計になっている。また、固定された経路を強制するのではなく、ユーザーが生成チェーンを指定できる。これは、CLIツールがSDKパッケージとは異なる言語で構築されている場合や、ツールに手作業で記述されたコマンドが含まれている場合に重要となる。
実際に何が変わるのか
Forgeは、APIを利用するツールを、後から別々に更新される独立した製品ではなく、API自体の開発サイクルの一部にするモデルを提示する。これはSDK、ドキュメント、CLIを同期させる必要があるチームに役立つが、生成された出力を確認する必要性がなくなるわけではない。特に、ツールが生成コードと手作業で記述されたコマンドや動作を組み合わせている場合はなおさらだ。
Cloudflareはこのプロジェクトを、APIのバージョン管理に関する計画とも結び付けている。メジャーバージョンv4を10年間使用してきた同社は、顧客や古いSDKパッケージを壊すことなく、新しいメジャーバージョンをリリースできる手法に取り組んでいるという。この手法の詳細や適用時期については、記事内で発表されていない。
オープンライセンスと現在の段階における制限
ForgeはApache 2.0ライセンスで利用可能になり、料金なしで実行、変更、社内または非公開での利用ができる。Cloudflareは、cf CLIの出力生成に利用しているものの、このプロジェクトはまだ初期段階にあると説明している。また、TypeScript、Rust、Python、Go、PHP、Terraform向けSDKに関する詳細を後日提供すると約束しており、Terraformプロバイダーにおける移行要件について特に言及している。