開発合宿で Claude Codeの「サブエージェント」について学んだ話 – カミナシ エンジニアブログ

こんにちは、エンジニアの倉澤です。普段は「カミナシ 教育」の開発に携わっています。

kaminashi.jp

今回は、10月に熱海で開催された開発合宿で Claude Codeの「サブエージェント」を教えてもらったので、それについて記事を書いてみました。
AIエージェントを使いこなすためのヒントになれば幸いです。

ちなみにこのブログは開発合宿の最後の仕事として合宿中に執筆しています。
合宿についてはきっと誰かが詳細なブログを書いてくれると思うのでそちらをお待ちください。

去年の合宿の様子はこちら👉 エンジニア開発合宿2024を開催しました! – カミナシ エンジニアブログ

1. 開発合宿のテーマとお題

今回の開発合宿は、「AIを上手に使いこなせるようになろう」的な目標が設定されていました。
お題としては、「AIエージェントのみを使って要件を満たすシステムを開発すること。人間は一切コードを書かない」というものが与えられ、4人ほどのチームに分かれて開発しました。

2. 普段のAIコーディングフローと課題

業務では主に Claude Code を活用して開発を進めています。基本的なAIコーディングのフローは、AIに適切なコンテキストを与えることに重点を置いています。

  1. 要求仕様(requirements.md)を作成
  2. 設計ドキュメント(designdoc.md)を作成
  3. 実装計画(plan.md)を作成
  4. 詳細なTodoリストを作成
  5. 実装

このフローに加え、リポジトリ全体に適用される開発ルールを記述した CLAUDE.md ファイルが重要な役割を果たします。

しかし、ここにちょっとした悩みがありました。普段はモノレポで開発しており、API、フロントエンド、BFF、テストなど様々なレイヤーが存在するため、CLAUDE.md が肥大化してしまうのです。

例えば、「API開発」をAIに依頼する際でも、本来不要な「フロントエンドのコンポーネント命名規則」といったルールまでAIに読み込ませてしまうため、ムダなコンテキストが増えたり、指示が混乱したりする可能性がありました。

3. タスク特化型「サブエージェント」を導入

この課題に対して、合宿で 「サブエージェント」という機能をチームメンバーから教えてもらいました。

サブエージェントとは、特定のタスク専用のコンテキストとルールセットを持たせることができる機能です。

サブエージェントを利用することで、肥大化した CLAUDE.md を分割し、以下のようなタスク専用のエージェントを作成できます。

  • フロントエンド開発用サブエージェント
  • API開発用サブエージェント
  • データベース設計用サブエージェント

これにより、API開発用のエージェントにはAPI開発に必要な最小限のルール(例:TypeScriptを使用、関数型で実装、テスト駆動開発を徹底など)だけを渡し、不要なコンテキストを完全に排除することが可能になりました。

4. 開発合宿での実践

合宿のお題では、以下のような専門エージェントを作成しました。

  • システムアーキテクチャ設計用エージェント
  • API開発用エージェント
  • フロントエンド開発用エージェント
  • データベース設計用エージェント

各エージェントには、その役割に特化したベストプラクティスや開発ルールをプロンプトとして学習させました。

例えば、API開発用エージェントの作成時には、以下のような具体的な指示を与えました。

API開発用のサブエージェントを作成してください。
言語はTypeScriptを使います。
すべての実装は関数型プログラミングのパラダイムに従ってください。
開発プロセスにおいては、テストを先に記述してから実装を開始する、テスト駆動開発を行ってください。

このプロンプトを実行すると、リポジトリ内に .claude/agents/api-developer.md のようなファイルが生成され、これを調整することでエージェントのルールをチューニングしていきました。
(後から知ったのですが、/agents コマンドもあるようなので、これを使って作成するのがいいのかもしれません。)

この仕組みを取り入れた結果、メインの CLAUDE.md をシンプルに保ちながら、各タスクを実行する際には関連するルールを覚えたサブエージェントにタスクを頼むことができるようになり、AIコーディングの指示出しがスムーズになりました。

5. まとめ

今回の開発合宿で、Claude Codeの「サブエージェント」という機能を活用し、CLAUDE.md を肥大化させずに、開発ルールを定義する方法を学びました。
AIに「すべて」を教え込むのではなく、「必要な時に、必要な情報だけ」を渡すことが、AIコーディングの効率と精度を向上させる鍵になると思います。

普段一緒に開発しないメンバーとの交流を通じて、新しい機能やベストプラクティスを学べ、本当にいい経験になりました。
とても実りの多い開発合宿になったことに感謝です!

宣伝

私の所属するチームではエンジニアを募集しています。
ご興味がある方がいましたら、カジュアル面談だけでもお待ちしております!

herp.careers

herp.careers




Source link

関連記事

コメント

この記事へのコメントはありません。