Contents
CircleCI AI ソリューションの概要
CircleCI が提供する AI 機能は、テスト実行の効率化とパイプライン全体の最適化を目的に設計されています。本セクションでは、AI エージェント・テストスイート自動分析・スマートワークフロー の三つのコアコンポーネントがどのように連携し、開発チームの負荷を軽減するかを解説します。まずは全体像を把握したうえで、実装時に意識すべきポイントへと進みます。
AI エージェントとは
AI エージェントは CircleCI が提供するプレビュー機能の一部で、ビルド・テスト結果をリアルタイムに解析し、不安定テスト(Flaky Test)やテクニカルデットの兆候を自動検出します。公式ブログでは「Chunk」という名称で紹介されていますが、現在は AI Test Selection として統合されており、以下のような役割があります。
- ビルド完了後にテスト結果(JUnit XML 等)を受け取り、過去データと比較して失敗パターンを抽出。
- 解析結果をダッシュボードや API 応答として提供し、次回実行時のテスト選択に活用できる情報を生成。
注: 本機能はプレビュー段階であり、利用には CircleCI のサポートへ問い合わせが必要です(2026 年 6 月時点)。
テストスイート自動分析とスマートワークフロー
AI エージェントから取得したメタデータを基に、CircleCI は 「必要なテストのみ実行」 と 「リソース自動割り当て」 の二段階プロセスを実行します。
- 統計的解析
-
過去 30 日間のビルド履歴と比較し、影響度が高いテストケースをスコアリング。
-
インクリメンタルテスト選択
-
スコア上位のテストだけを次回ジョブに流すことで、実行時間を平均 30 % 程度短縮(公式ベンチマーク参照)。
-
リソース自動割り当て
- GPU が必要なジョブには
resource_class: gpu.mediumを付与し、オンデマンドでインスタンスを起動。 - 並列実行数は
parallelismパラメータで柔軟に拡張可能。
このサイクルが継続的に回ることで、パイプライン全体の コスト削減 と 品質向上 が同時に達成されます。
CircleCI アカウント作成と API トークン管理(2026/06/08 更新)
安全かつスムーズに CircleCI を導入するには、アカウント設定とトークンの取り扱いを正しく行うことが不可欠です。本章では、公式ドキュメントに沿った手順とベストプラクティスを具体的に示します。まずはアカウント登録から始め、続いて環境変数として安全に保存する方法へと移ります。
アカウント登録手順
- CircleCI 公式サイト(https://circleci.com)で 無料プラン にサインアップし、GitHub または Bitbucket と連携します。
- 初回ログイン後に組織(Organization)を作成し、対象リポジトリを Add Project から追加。
- プロジェクト設定画面の Enable CI ボタンをクリックすると、自動的に
.circleci/config.ymlの雛形が生成されます。
本手順は外部メディア(例:app‑tatsujin.com)でも同様に掲載されていますが、公式情報が最も信頼性が高いためここで統一しています。
トークンの安全な設定方法
CircleCI の API を利用する際は Personal API Token を環境変数として登録します。ハードコーディングは絶対に避け、以下のフローで管理してください。
- トークン発行
-
ユーザー設定 → Personal API Tokens → Create New Token で名前付きトークンを作成(例:
ci-token-prod)。 -
環境変数への登録
- プロジェクトの Settings → Environment Variables に
CIRCLE_API_TOKENとして貼り付け、Mask Value をオンにします。 -
複数プロジェクトで共通利用したい場合は Context 機能を用いて組織単位で変数を共有できます。
-
最小権限の適用
- トークンは Read only または Write のみ付与し、不要なスコープは削除します。
- 必要に応じてリポジトリ単位でアクセスを絞り込むことで、漏洩時の被害範囲を最小化できます。
設定例(CLI で環境変数を参照する場合):
|
1 2 3 4 |
# CircleCI の UI で登録した CIRCLE_API_TOKEN を使用 curl -sSL https://circleci.com/api/v2/project/:project_slug/pipeline \ -H "Circle-Token: ${CIRCLE_API_TOKEN}" |
Flaky Test 検出フローの構築と実装例
不安定テストは CI の信頼性を著しく低下させます。本セクションでは、AI エージェントによる自動解析 → フレーク判定 → 必要に応じた再実行 という一連のフローを設計し、実際に動作する config.yml のサンプルコードをご紹介します。まずは全体像を把握したうえで、具体的なステップへと落とし込みます。
パイプライン設計概要
- テスト実行ジョブ (
run-tests) で JUnit 形式のレポートを生成し、ワークスペースに保存。 - AI 解析ジョブ (
ai-analyze) がレポートを CircleCI AI API に送信し、フレーク判定結果(JSON)を取得。 - 再実行ジョブ (
retry-flaky) は取得したテスト名だけを対象に再実行し、最終的な成功率をレポートとして保存。
この構成は プレビュー版 AI API を利用する前提ですので、エンドポイントやリクエストヘッダーは公式ドキュメントの最新情報をご確認ください。
実装例(config.yml)
以下のサンプルでは環境変数名を CIRCLE_API_TOKEN と統一し、実際に UI で設定した名前と合わせています。また、workspaces を利用してジョブ間でファイルを受け渡す手順も明示しています。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
version: 2.1 orbs: slack: circleci/slack@4.12.0 # 通知用(任意) jobs: run-tests: docker: - image: cimg/python:3.11 steps: - checkout - run: name: Install dependencies command: pip install -r requirements.txt - run: name: Execute unit tests command: pytest --junitxml=reports/junit.xml - store_artifacts: path: reports - persist_to_workspace: root: . paths: - reports ai-analyze: docker: - image: cimg/base:stable steps: - attach_workspace: at: /tmp/workspace - run: name: Send test results to CircleCI AI (preview) command: | curl -sSL -X POST https://api.circleci.com/v2/ai/analyze \ -H "Circle-Token: ${CIRCLE_API_TOKEN}" \ -F "file=@/tmp/workspace/reports/junit.xml" \ -o /tmp/flaky.json - persist_to_workspace: root: . paths: - flaky.json retry-flaky: docker: - image: cimg/python:3.11 steps: - attach_workspace: at: . - run: name: Re‑run only flaky tests command: | if [ -f flaky.json ]; then FLAKY=$(jq -r '.flaky_tests[]' flaky.json) if [ -n "$FLAKY" ]; then echo "Detected flaky tests:" echo "$FLAKY" pytest $FLAKY --maxfail=1 else echo "No flaky tests detected." fi else echo "Flaky analysis result not found." fi - store_artifacts: path: flaky.json workflows: test-with-ai: jobs: - run-tests - ai-analyze: requires: - run-tests - retry-flaky: requires: - ai-analyze |
コードのポイント
- 環境変数は
${CIRCLE_API_TOKEN}と記述し、ハードコーディングを排除。 persist_to_workspace/attach_workspaceによってファイル共有を明示的に管理。jqを利用した JSON パースでフレークテスト名の抽出をシンプル化。
MagicPod と CircleCI の連携によるノーコード E2E テスト自動化
MagicPod は UI 操作をコードなしで記録・実行できるクラウド型 E2E テストツールです。本章では、CircleCI パイプライン上で MagicPod を走らせ、その結果を AI エージェントで解析する一連の流れを示します。まずは全体像と必要な前提条件を確認し、次に実装例へと進みます。
連携手順の全体像
- API キー取得 – MagicPod の管理画面で Personal Access Token を生成。
- 環境変数登録 – CircleCI のプロジェクト設定で
MAGICPOD_TOKENとMAGICPOD_PROJECT_IDを安全に保存(マスク有効)。 - E2E 実行ジョブ作成 –
magicpod test runコマンドを実行し、JUnit 形式のレポート (magicpod.xml) を出力。 - AI 解析ジョブ – 前節と同様に CircleCI AI API に結果ファイルを送信し、フレーク検知やパフォーマンス指標を取得。
- 通知 –
slackOrb を利用して分析結果をチームへ自動配信。
この流れは 2026 年 6 月 9 日開催の TECH PLAY イベント資料でも紹介されており、実務導入のハードルが低い点が特徴です(同イベント公式ページ参照)。
デモ設定例(config.yml)
以下は MagicPod と AI 解析を組み合わせた最小構成です。環境変数名は プロジェクト設定 に合わせてください。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
version: 2.1 jobs: e2e-magicpod: docker: - image: cimg/node:20.6 steps: - checkout - run: name: Install MagicPod CLI command: npm install -g @magicpod/cli - run: name: Execute MagicPod E2E Tests command: | magicpod test run \ --project-id $MAGICPOD_PROJECT_ID \ --token $MAGICPOD_TOKEN \ --output junit \ --output-path reports/magicpod.xml - store_artifacts: path: reports - persist_to_workspace: root: . paths: - reports ai-analyze-e2e: docker: - image: cimg/base:stable steps: - attach_workspace: at: /tmp/workspace - run: name: Send E2E results to CircleCI AI (preview) command: | curl -sSL -X POST https://api.circleci.com/v2/ai/analyze \ -H "Circle-Token: ${CIRCLE_API_TOKEN}" \ -F "file=@/tmp/workspace/reports/magicpod.xml" \ -o /tmp/e2e-analysis.json - store_artifacts: path: e2e-analysis.json - slack/status: webhook: $SLACK_WEBHOOK_URL channel: "#ci-notifications" include_job_status: true workflows: magicpod-e2e: jobs: - e2e-magicpod - ai-analyze-e2e: requires: - e2e-magicpod |
補足ポイント
MAGICPOD_TOKENとCIRCLE_API_TOKENは 別々の環境変数 に格納し、どちらも UI でマスク設定を推奨。slack/statusOrb を利用すれば、分析結果が成功・失敗に応じて自動的に通知されます。
リソース最適化と効果測定のベストプラクティス
AI が提案する「必要なテストのみ実行」戦略は、GPU のオンデマンド利用 と 高並列度 を組み合わせることで最大限に活かせます。本章では、実際にリソースを最適化し、その効果を定量的に測定する手順を解説します。まずは GPU・並列処理の設定方法から始め、続いてインクリメンタルテスト選択ロジック、最後に KPI の算出とレポート自動化まで網羅します。
GPU と高並列実行の活用方法
- GPU ジョブは
resource_class: gpu.medium(またはgpu.large)をジョブ定義に付与するだけで、CircleCI のオンデマンド GPU インスタンスが自動的に割り当てられます。画像処理や機械学習系テストに有効です。 - 並列実行は
parallelismキーで指定します。例としてparallelism: 20と設定すれば、同時に最大 20 コンテナが走り、テスト総時間を大幅に短縮できます(料金は使用分のみ課金されます)。
|
1 2 3 4 5 6 7 8 9 10 |
jobs: gpu-test: docker: - image: cimg/python:3.11 resource_class: gpu.medium parallelism: 12 # 12 コンテナで同時実行 steps: - checkout - run: pytest --junitxml=reports/gpu.xml |
インクリメンタルテスト選択ロジック
AI エージェントが提供する「変更影響度」情報を活用し、差分抽出 → 影響テストマッピング → キャッシュ利用 のフローを実装します。
- 差分取得
bash
CHANGED_FILES=$(git diff --name-only $CIRCLE_SHA1 $CIRCLE_PREVIOUS_SHA)
- 影響テストの算出(
scripts/map_changes_to_tests.pyが事前に用意されていると仮定)
bash
IMPACTED_TESTS=$(python scripts/map_changes_to_tests.py "$CHANGED_FILES")
echo "export IMPACTED_TESTS=$IMPACTED_TESTS" >> $BASH_ENV
- テスト実行
yaml
- run:
name: Run impacted tests only
command: |
source $BASH_ENV
pytest $IMPACTED_TESTS --junitxml=reports/partial.xml
- キャッシュ戦略
依存ライブラリやビルド成果物はsave_cache/restore_cacheステップで共有し、再実行時のセットアップ時間を削減します。
KPI とレポート自動化
効果測定に必要な指標(KPI)と、その取得・可視化手順を以下にまとめます。
| KPI | 計算式 | 推奨ツール |
|---|---|---|
| テスト成功率 | 成功テスト数 ÷ 総実行テスト数 | CircleCI Insights |
| フレーク削減率 | (旧フレーク件数 – 新フレーク件数) ÷ 旧フレーク件数 | Grafana / カスタムダッシュボード |
| コスト削減効果 | (従来時間 × 従来料金) – (最適化後時間 × 最適化後料金) | AWS Cost Explorer + CircleCI Billing |
| 平均ジョブ実行時間 | 各ジョブの実行秒数平均 | CircleCI Insights |
レポート作成手順
- データ取得
bash
circleci analytics export --project-slug gh/ORG/REPO --output pipeline_stats.csv - 集計スクリプト(Python)
python
import pandas as pd, json, pathlib
df = pd.read_csv('pipeline_stats.csv')
success_rate = df['status_success'] / df['total_jobs']
# 他の KPI も同様に算出
report_md = f"""# CI パイプライン月次レポート\n
- テスト成功率: {success_rate:.2%}\n
- フレーク削減率: ...\n
- コスト削減額: ...\n"""
pathlib.Path('report.md').write_text(report_md)
3. 自動配信(Slack Orb)
yaml
- slack/notify:
channel: "#ci-reports"
message: "今月の CI パイプラインレポートが生成されました。"
attachments: |
[{ "fallback": "Report", "text": "$(cat report.md)" }]
このサイクルを 毎週または毎月 実行すれば、AI 主導の最適化施策がどれだけコスト・品質に寄与したかを可視化でき、継続的改善の根拠として活用できます。
まとめと次のステップ
本記事では、CircleCI の AI 機能を基盤に Flaky Test 自動検出、MagicPod とのノーコード E2E テスト連携、そして リソース最適化と効果測定 の一連のフローを解説しました。ポイントは以下です。
- AI エージェントはプレビュー段階であることを認識し、公式ドキュメントとサポート窓口で最新情報を確認する。
- トークンは必ず UI で環境変数として管理し、ハードコーディングを排除する。
- インクリメンタルテスト選択ロジックや GPU/並列設定を組み合わせて、実行時間とコストの最適化を図る。
- KPI を定期的に算出し、レポートを自動配信することで改善効果をチーム全体で共有する。
次のステップとしては、まずはプレビュー機能へのアクセス申請(必要なら)を行い、上記サンプル config.yml を自社リポジトリに導入してください。その後、KPI ダッシュボード を作成し、数週間分のデータで効果検証を実施することを推奨します。継続的なフィードバックと設定調整を繰り返すことで、AI 主導の CI/CD が組織全体の開発速度向上に直結するはずです。
参照元:CircleCI 公式ブログ・ドキュメント、Tech Play イベント資料(2026/06/09)等。外部リンクは必要最小限に統一しています。