課題発見と実装修正を並行実行するClaude Code活用術

に公開

はじめに
この記事は、C3LとClaude hooksの破壊力 - 永久開発機関の完成の続きです。Agentic Coding 自動化を踏まえ、課題をIssue化する話へ発展しています。

課題調査の自動化

以下の図は、課題調査の自動化を行なった図です。

自動化した図

同じリポジトリに、異なる役割の Claude Code を走らせます。
worktreeにせず、まずは同一リポジトリに走らせました。

図は、左が課題発見のClaude、中央がIssue、右がIssueを元に実装修正するClaudeです。

この記事では、上図のように、課題調査・発見から Issue作成を介し、実装の自動化へ連携する方法について、記載しています。

claude --settings の活用

claude code は、help を見ると、様々なオプションが使えます。とくにドメイン固有の問題へ対処しやすいよう、MCPリスト変更や使用可能なツールの制限も行えるようになっています。

さらに sub agents を使えば、コンテキストの分割ができるようになっています。

なかでも、大元の settings を切り替えるオプションが --settings です。

claude --settings .claude/settings-something-other.json

のように、指定するだけで、別設定で動きます。

永久機関へIssue作成担当者を追加

C3LとClaude hooksの破壊力 - 永久開発機関の完成で実現した永久機関について、以下の対応を行いました。

  1. 実装修正は GitHub Issues が0件になると止まる
  2. Issue 作成は、課題発見がなくなると止まる

つまり、すべてのタスクが完了したと判断できた場合、永久機関は止まります。

新しい要件を手動で追加した場合、実装は進みます。

今回新たに、Issue作成処理を追加しました。
実装の不具合、重複コードの発見、ドメイン設計や規約への違反など想定しうる様々な問題を探し、全てを Issue化します。

実装が変わると、新たに課題が発見されます。
実装時にも課題発見時にも、同じ設計情報が参照されるため、方針に従った方法へ収束します。

claudeを2つにすると何がよいか

指示の違いが、役割の違いを明確にします。

もともと、人が追加する速度では Issue作成が間に合いませんので、Issue作成はClaudeに担ってもらう想定でした。

しかし、コーディングする claude に他の役割を担わせるのは難しくもあります。
コーディングと、文章を作らせてIssue登録をさせることは、別作業への分岐です。原因1つに対する対処方法が2つある状態です。そのため、いずれか選択する必要があります。

たとえば、テストでエラーが出た際に、実装を直す選択と、Issue化する選択があります。どちらを選択するか、判断が分かれてしまいます。

そこで、役割をIssue作成に限定した claude を増やしました。結果、無事に2つの役割を併存させることができました。

単純な分離ではない、指示系統の分離

以上のように、

  1. 別の settings を用いる
  2. Issueを介して行う
  3. 役割を分けて並走する

の3点を実施しました。

今回行なったclaudeの分離は、役割の分離です。
単に settings を別指定するだけでありません。
設定に依存した指示系統(処理系統)が変わります。
sub agent でも役割を変えられるのですが、それよりも基底側の設定で切り替えて、根本的に別の動きをするようにしています。

つまり、
コードベースや設計資料を共有したまま、起こる行動が「実装者」と「課題発見者」に分離する点のみを変えています。

実体としては、言語(Climpt/C3L)を変えており、(main と sub の関係ではなく)並列となっています。

コーディング担当は変わらない

今回追加したのは、Issue作成者です。コーディング担当者は変わっていません。
フローを変えて「すべてのタスクをIssue化をする」ように変更したのではありません。

コーディング担当者は、引き続きIssue作成せずに調査やCI経由でのエラー対応を行い、作業が終わればIssueから次の調査を選ぶ自由度を持っています。
(やらせていませんが、Issueを作っても構いません。)

あくまでも、コーディング担当者では拾いきれない、Issue化したほうがいい課題発見の役割を追加した点が、違いとなっています。
その結果、コーディング担当者へ指示を出していたときよりも、深い課題をIssue化することができました。

まとめ

以上、コーディング自動化の先にある、要件定義の自動化に向けて、まずは現状仕様書に基づく、課題の issue 化を行いました。
settings の切り替えによる分離など、claude code 活用の参考になれば幸いです。

Discussion