CircleCI の Chunk AI エージェントでコードベースをリファクタリングする
Content Marketing Manager
技術的負債は静かに積み上がっていきます。ここでちょっとした修正、あそこで関数の重複、気づけば一貫性のないパターン、繰り返しのロジック、本来より保守が難しいコードで溢れたコードベースを前にしています。リファクタリングは不可欠ですが、フィーチャーをリリースしながらコードを整理する時間を確保するのは常に難しい課題です。
AI 支援開発の台頭はこの緊張をさらに加速させています。AI コーディングアシスタントはチームがフィーチャーを速くリリースするのを助けますが、常に一貫したコードを生成するわけではありません。チームメンバーがそれぞれ異なるプロンプトを使うと、さまざまなパターンやスタイルが混在することになります。変更の速度が上がるほど、整理のために立ち止まることが難しくなります。速くリリースするほど、技術的負債も速く膨らみます。
CircleCI の自律型 CI/CD エージェント Chunk は、AI 搭載のリファクタリングを継続的インテグレーションパイプラインに直接組み込むことでこの問題に対処します。ファイルを個別に操作する IDE ベースのツールとは異なり、Chunk は CI/CD 環境のコンテキストでコードベース全体を分析し、モジュール間のパターンを特定して、一貫した標準に従ったリファクタリング済みの実装を生成できます。このガイドでは、Chunk を使ってコードを自動的にリファクタリングする方法を説明します。
ウォークスルー動画をご覧いただくか、以下のステップバイステップガイドに沿って進めてください。
Chunk をセットアップする
Chunk を使い始めるには、パイプラインがすでに実行されているプロジェクトを持つ CircleCI アカウントが必要です。CircleCI が初めての方は、入門ガイドを参照してリポジトリを接続してください。
ご自身のプロジェクトで試すか、すぐに使えるサンプルとして GitHub 上のデモプロジェクトを利用できます。
プロジェクトが CircleCI で実行されたら:
- CircleCI Web アプリのサイドバーから Chunk に移動します。
- Set up Chunk をクリックし、プロンプトに従って GitHub アクセスを承認します。Chunk はリポジトリを分析するための読み取りアクセスと、リファクタリング済みコードでプルリクエストを作成するための書き込みアクセスが必要です。
- モデルプロバイダーキーを選択します。CircleCI の組み込みキーを使用するか、プロンプトが表示されたときに Anthropic または OpenAI の API キーを接続します。CircleCI のキーを使用する場合、無料トークンの利用数に上限があります。
Chunk は再設定なしに既存の CircleCI パイプラインと直接統合されます。承認されると、リポジトリコードとビルド履歴の両方を分析してプロジェクトの仕組みを把握します。完全なセットアップ手順については、Chunk ドキュメントを参照してください。
Chunk にコードのリファクタリングを依頼する
Chunk が有効になったら、サイドバーから Chunk に移動します。プロンプトインターフェースで Chunk にやってほしいことを説明します。
シンプルなプロンプトから始めることも、プリセットオプションを選択することもできます。ここでは Refactor Code プリセットを使用します。デフォルトでは、このプリセットは次のプロンプトを使用します:
Review my code and suggest refactoring improvements for better maintainability.
Submit をクリックすると Chunk が動作を開始します。Chunk は CI/CD 環境内で動作するため、リポジトリ全体をスキャンしてコードの問題、ロジックの重複、構造改善の機会を見つけられます。その後、テストスイートを実行して変更を検証し、リファクタリングによってリグレッションが発生しないことを確認します。
結果を確認する
Chunk が分析を完了すると、発見したリファクタリングの機会と加えた変更のサマリーが表示されます。このページから詳細を確認し、プルリクエストを開くかどうかを決定できます。変更に満足できない場合は、PR をスキップしてプロンプトを改善することもできます。
Chunk は変更内容を次のように説明します:
Summary
Refactored multiple modules to improve code quality, readability,
and maintainability:
Extracted helper functions: Created focused utility functions to
encapsulate reusable logic in exporters, processors, transformers,
and validators
Modernized JavaScript syntax: Replaced verbose patterns with ES6+
features including destructuring, arrow functions, object shorthand,
template literals, and simplified conditionals
Reduced code duplication: Eliminated repeated logic by extracting
common patterns into named helper functions
Improved consistency: Standardized null checks (== null), error
handling patterns, and return statement formatting across all modules
Files changed:
- src/exporters/jsonExporter.js: Added filterEmptyArray,
filterEmptyObject, and createMetadata helpers
- src/processors/batch.js: Extracted executeTransform and
reportProgress functions
- src/processors/pipeline.js: Created executeStep and runStep helpers
- src/transformers/csvToJson.js: Added parseRow helper function
- src/transformers/normalize.js: Extracted normalizeString and
createNestedOptions utilities
- src/validators/currency.js: Added formatCurrency helper
- src/validators/date.js: Restructured with parseDateString and
validateDateComponents helpers
- src/validators/email.js: Moved regex to constant, simplified logic
- src/validators/phone.js: Added formatPhoneNumber helper
変更に問題がなければ、Open Pull Request をクリックしてリポジトリに PR を作成します。
マージ前に、リファクタリングされたコードが既存の機能を維持していることを確認してください。Chunk はテストスイートを実行して何も壊れていないことを確認しますが、変更がチームの期待に沿っているかどうかも自分で検証することをおすすめします。
より的を絞ったプロンプト
シンプルな「Refactor code」プロンプトは一般的なクリーンアップに効果的です。Chunk が変更する内容をより細かく制御したい場合は、的を絞ったプロンプトを試してください。
特定のタイプのリファクタリングを対象にする場合:
Remove code duplication in the validators directory
単一のファイルに絞る場合:
Refactor src/processors/pipeline.js to use async/await instead of callbacks
特定のパターンを適用する場合:
Extract shared validation logic into a common utility module
命名を改善する場合:
Rename variables and functions in src/transformers to follow camelCase conventions
構文をモダン化する場合:
Update the codebase to use ES6+ features like destructuring and arrow functions
プロンプトを具体的にすればするほど、Chunk のリファクタリングもより焦点を絞ったものになります。
高度な設定
基本的な使い方に慣れたら、Chunk がプロジェクトで動作する方法を細かく調整できます。
環境のセットアップ
依存関係が複雑なプロジェクト、外部サービス、または特定のランタイム要件がある場合、.circleci/cci-agent-setup.yml ファイルを用意して Chunk にテスト環境の準備方法を正確に伝えられます。
これはリファクタリングにおいて重要です。Chunk はテストスイートを実行してすべての変更を検証するため、テストに特定のセットアップが必要な場合、Chunk も同じ環境が必要になります。一般的なユースケースには以下が含まれます。
- データベースセットアップ: 結合テストにデータベースが必要な場合
- 外部サービス: API テスト用のモックサービスやコンテナ
- ビルドツール: 特定のコンパイラ、トランスパイラ、ビルドシステム
- ランタイム設定: コードの実行方法に影響する環境変数
Node.js プロジェクトの例:
version: 2.1
workflows:
main:
jobs:
- cci-agent-setup
jobs:
cci-agent-setup:
docker:
- image: cimg/node:20.11
steps:
- checkout
- run:
name: Install Dependencies
command: npm ci
- run:
name: Build Project
command: npm run build
環境の準備のみに集中してください。実際のテスト実行コマンドは含めないでください。Chunk はメインの config.yml をもとにテストの実行方法を判断します。
Chunk は必要に応じてこのファイルを自動的に作成しようとします。手動で生成する場合は、Organization Settings -> Chunk Tasks に移動し、タスクのメニュー(…)をクリックします。Chunk Environment をクリックし、Create File in GitHub をクリックします。詳細については、Chunk 環境ドキュメントを参照してください。
カスタム指示
リファクタリングされたコードがチームの標準に合うようにするには、リポジトリのルートに claude.md または agents.md ファイルを作成します。以下の設定を記述してください:
- 命名規則(camelCase、snake_case など)
- インポートの順序とグループ化のルール
- 非同期コードの推奨パターン
- エラーハンドリングの規約
- コード整理の原則
- リファクタリング作業に関連するその他の事項
Chunk はこれらのファイルを読み込み、リファクタリング済みコードを生成する際に設定を適用します。
安全なリファクタリング
Chunk はプルリクエストを作成する前に、テストスイートを実行してすべてのリファクタリング変更を検証します。リファクタリング後にテストが失敗した場合、Chunk はテストが通過するまで変更を繰り返し修正します。これにより、リファクタリングによってリグレッションが発生しないことが保証されます。さらなる安全性のために、マージ前に CI チェックを必須とするブランチ保護ルールを設定してください。
このテスト駆動の検証は、CI/CD パイプラインに AI エージェントを組み込む主要な利点の 1 つです。IDE ベースのリファクタリングツールは変更を提案できますが、それらの変更が実際のビルド環境で機能するかどうかを自動的に検証することはできません。
AI 開発エコシステムにおける Chunk
AI コーディングアシスタントが IDE でコードをより速く書く手助けをする一方、Chunk は実際のテストスイートとビルドプロセスに対してリファクタリング変更を検証できる CI/CD レイヤーで動作します。
これは AI 支援開発にとって自然なワークフローを生み出します。AI コーディングアシスタントを使ってフィーチャーを素早く生成し、その後 Chunk に蓄積した不整合をクリーンアップさせます。IDE ツールが個別ファイルを操作するのに対して、Chunk はコードベース全体のパターンを特定し、一貫したリファクタリングをあらゆる箇所に適用できます。
AI コーディングアシスタントを使用するチーム向けに、CircleCI は CircleCI MCP サーバーも提供しています。これは Model Context Protocol を使用して AI アシスタントをパイプラインに直接接続します。IDE ベースの AI ツールがビルド環境とテスト結果を把握できるようになり、コード生成と検証の間のフィードバックループが緊密になります。Chunk と MCP サーバーが連携することで、コード品質が自動的に維持される統合された AI 開発ワークフローが実現します。
まとめ
技術的負債がチームのスピードを落とす必要はありません。Chunk はコードベースを分析し、改善の機会を特定して、テストが引き続き通過することを確認しながら、ベストプラクティスに従ったよりクリーンなコードを生成します。AI 搭載の開発がコード変更の速度を上げるにつれ、コード品質を維持する自律型エージェントの存在が不可欠になります。
実際に試してみませんか?無料の CircleCI アカウントに登録して Chunk を有効にすれば、自動リファクタリングがすぐに始まります。