CircleCI Functions のベータ版の提供を開始しました。 再利用可能なテスト済みのステップを使って、開発者とコーディングエージェントがより速く、より確実に CI パイプラインをセットアップできるようになります。
Functions は CircleCI Orb の次の進化形です。プログラミング言語のインストール、AWS 認証情報の設定、Docker のセットアップといった一般的な CI タスクを、すぐに使えるプログラムとして提供します。エージェントはこれらを検出して設定し、パイプラインを実行する前に検証できます。
社内テストでは、Functions を使うことでコーディングエージェントが動作する CI パイプラインを最大 2 倍の速さでセットアップでき、トークン使用量も約 40% 削減できました。
ベータ版はすべての CircleCI プランで無料でご利用いただけ、CircleCI が作成した 10 個の Functions が含まれています。既存の Orb はこれまでどおり動作し、移行の必要はありません。
生成する設定を減らし、より信頼性の高いパイプラインを
コーディングエージェントは数秒で CI 設定を生成できますが、すでに確立された解決策がある問題に対しても独自のコードを書いてしまうことがよくあります。Node のインストール、AWS での認証、Docker 環境の準備といった一般的なセットアップステップのために、プロジェクトごとに新しいスクリプトを作成・保守する必要はないはずです。
Orb は長年にわたり、開発者が一般的な CI セットアップステップを書き直さずに済むよう支援してきました。しかし Orb は、主に人が手作業で設定を書くことを前提に設計されています。Orb のコマンドは通常シェルスクリプトを実行するため、エージェントはパイプラインを実行するまで、セットアップステップが機能するかどうかを判断できないことがよくあります。私たちのテストでは、Functions がない場合、エージェントは約半数のケースで利用可能な Orb を使わずに独自のセットアップスクリプトを生成していました。
Functions は、エージェントにより良い出発点を提供します。各 Function は、明確に定義された入力を持つビルド済みのテスト済みコードで、一般的な CI タスクを処理します。エージェントは CircleCI CLI とその組み込み MCP サーバーを通じて適切な Function を見つけて設定に組み込み、変更をプッシュする前にエラーを検出できます。開発者にとっては、レビュー、デバッグ、保守が必要なカスタムコードが減ります。
エージェントはカスタムのセットアップスクリプトを生成する代わりに、既存の Function を使って有効な設定を作成します。その結果、開発者がレビューする変更は、より小さく理解しやすいものになります。
CircleCI Functions の仕組み
Functions は CircleCI の設定に自然に組み込めます。functions: ブロックで Function を宣言し、任意のジョブから名前で呼び出します。
以下は、setup-node を使って Node をインストールし、テストスイートを実行するパイプラインの例です。
version: 2.1
functions:
setup-node: github.com/circleci-functions/setup-node@v0.4.0
jobs:
test:
docker:
- image: cimg/base:current
steps:
- checkout
- setup-node:
with:
node-version: "22"
- run: npm test
workflows:
main:
jobs:
- test
functions ブロックで Function のバージョンを固定し、ジョブでは目的の Node.js バージョンを指定して setup-node を呼び出します。インストール用のスクリプトを別途用意する必要はありません。
一般的にシェルスクリプトを実行する従来の Orb コマンドとは異なり、Functions は Linux、macOS、Windows 向けにビルドおよびテストされたコンパイル済みプログラムを実行します。CircleCI は、各ジョブのオペレーティングシステムとアーキテクチャに合ったバイナリをダウンロードします。
Functions は、日々の CI 作業にも実用的な改善をもたらします。
- パイプラインの実行前に設定エラーを検出できます。 Function の入力が無効な場合は、問題箇所を特定し、受け付けられる入力を一覧表示する具体的なエラーが表示されます。
- プラットフォームをまたいで一貫した動作が得られます。 Functions は、サポート対象の各オペレーティングシステム向けにビルドおよびテストされています。
- 障害の診断にかかる時間を短縮できます。 シェルスクリプトのエラーを開発者が読み解く必要はなく、わかりやすいエラーが何が問題だったのかを示します。
- コンパイル後の設定を小さく保てます。 Functions では、大きな Orb 設定ブロックが展開されることはありません。私たちのテストでは、Node のセットアップステップのコンパイル後の設定が、同等の Orb コマンドと比べて約 7 分の 1 になりました。
すべての Function は、厳密に指定された変更不可能なバージョンを使用します。@latest や @v1 のようなエイリアスは使えないため、公開済みのバージョンが予期せず変わることはありません。新しいバージョンを採用する準備ができたら、circleci function update を実行してください。
手作業で設定を書く開発者も、CircleCI 言語サーバー (LSP) を活用できます。LSP は、Function のオートコンプリート、入力候補の表示、新しいバージョンが利用可能になったときの通知に対応しています。
ステップに組み込まれた依存関係のキャッシュ
setup-node や setup-go などの言語セットアップ用の Functions は、ダウンロードしたものをステップ自体の中でキャッシュします。一部の Orb では restore_cache と save_cache のステップを自分で別途配置する必要があり、ジョブが正常に完了しなかった場合はキャッシュが破棄されるため、原因がはっきりしないままビルドが遅くなることがあります。
Functions は、既存の CircleCI キャッシュストレージを使用します。これは save_cache と restore_cache で使われているのと同じストレージで、保存と復元のステップを別途用意する必要はありません。ジョブが失敗した場合や、タイムアウトまたはキャンセルされた場合でも、キャッシュは保持されます。
キャッシュはデフォルトで有効です。ステップでキャッシュを無効にするには、cache を false に設定します。
- setup-node:
with:
node-version: "22"
cache: false
キャッシュを有効にしたままにしておくと、2 回目以降の実行では Node.js を再ダウンロードせず、キャッシュから復元します。
コーディングエージェントが CI を正しく設定するためのツール
各 Function には、型、必須パラメーター、デフォルト値、有効な値など、入力に関する機械可読な定義が含まれています。これらの定義は Function のコードから直接生成されるため、常に実際の動作と一致します。
エージェントは CircleCI CLI とその組み込み MCP サーバーを通じて、Function のカタログにアクセスできます。開発者もターミナルで同じコマンドを使用できます。
# Browse available functions
circleci function list
# Inspect a function and its inputs
circleci function get setup-node
# Add a function to your configuration
circleci function add setup-node
get コマンドは、受け付けられる入力とその型、デフォルト値、説明を表示します。エージェントと開発者は、Function を正しく設定するために必要な情報を得られます。
add コマンドは、バージョンを固定した Function の宣言を .circleci/config.yml に書き込みます。エージェントはジョブを設定したら、プッシュする前に作業内容を確認できます。
circleci config validate
エージェントがサポートされていない引数 (この例ではスペルミスのある node-verison) を使った場合、検証によって問題が特定され、受け付けられる入力が一覧表示されます。エージェントは、パイプラインを実行する前に設定を修正できます。
エージェントは、パイプラインの実行中に設定ミスに気付くのではなく、プッシュする前に修正できます。開発者は、生成されたセットアップスクリプトをデバッグすることなく、レビューして承認できる設定を受け取れます。
Orb を置き換えるのではなく、Orb を発展させる Functions
Orb は引き続き CircleCI の重要な要素です。Orb はコマンド、ジョブ、Executor をパッケージ化できるのに対し、Functions はジョブ内でタスクを実行する再利用可能なコマンドに特化しています。
同じパイプラインで Functions と Orb を併用できます。移行の必要はなく、Orb の非推奨化も予定されていません。CircleCI は今後も両方の開発を続けていきます。
エージェントが、正常に動作している Orb を自動的に Functions に置き換えることはありません。既存のパイプラインでステップを追加または更新する際に Functions を使うようエージェントに指示することもできますが、ベータ期間中は新しいプロジェクトから始めることをお勧めします。
ベータ版で利用できる 10 個の Functions
最初のリリースには、言語、開発環境、ツールのセットアップといった一般的な用途をカバーする、CircleCI がメンテナンスする 10 個の Functions が含まれています。
| Function | 用途 |
|---|---|
setup-node |
Node.js をセットアップ |
setup-python |
Python をセットアップ |
setup-go |
Go をセットアップ |
setup-ruby |
Ruby をセットアップ |
setup-java |
Java をセットアップ |
setup-dotnet |
.NET をセットアップ |
setup-aws |
AWS ツールを設定 |
setup-docker |
Docker をセットアップ |
setup-browser-tools |
ブラウザーテストツールをインストール |
setup-github-cli |
GitHub CLI をセットアップ |
現在提供している Functions は、対応する Orb のすべての機能をまだカバーしていません。ベータ版へのフィードバックを集めながら、対応範囲の拡大を優先的に進めていきます。
エージェントによる検出と設定には、CircleCI CLI バージョン 1.8.0 以降が必要です。
Functions の今後の開発にご協力ください
Functions をベータ版としてリリースしたのは、実際の開発ワークフローでどのように機能するかを把握するためです。特に、Orb にはあって Functions にはまだない機能、エージェントが適切な Functions をどの程度確実に見つけて使えるか、チームでの導入の妨げになりうる要因について、ご意見をお待ちしています。
フィードバックは Functions ベータ版フィードバックスレッドでお寄せください。
また、次のような機能の追加にも取り組んでいます。
- カスタム Functions: 組織内で Functions を作成・共有できるようにします。
- ステップの出力: ステップ間で構造化された結果を受け渡せるようにします。
- ローカル実行: 開発マシン上で Functions を実行できるようにします。
- カタログの拡充: CircleCI がメンテナンスする Orb の機能を、さらに Functions に取り込みます。
皆さまからのフィードバックは、次にリリースする機能の優先順位付けに役立てさせていただきます。
CircleCI Functions を今すぐお試しください
まずは CircleCI CLI をインストールしてください。
Claude Code の場合は、CLI の組み込み MCP サーバーに接続します。
claude mcp add -s user circleci -- circleci mcp start
Cursor、VS Code、Claude Desktop の場合は、次のコマンドを使用します。
circleci mcp cursor enable
cursor の部分は、お使いの環境に合わせて vscode または claude に置き換えてください。
接続したら、Functions を使って新しいプロジェクトに CircleCI をセットアップするようエージェントに依頼してください。エージェントが適切なステップを見つけてパイプラインを設定し、プッシュする前に設定を検証します。
導入方法の詳細は、CircleCI Functions のドキュメントをご覧ください。
CircleCI を初めてご利用になる場合は、無料アカウントを作成して、次のプロジェクトで Functions をお試しください。