ClaudeCodeのセッションログを分析し、AIの「学習過程」を可視化する手法
本記事は、AIコーディングアシスタント「ClaudeCode」のセッションログ(JSONL形式)を活用し、AIの実際の作業プロセスや効率性を定量的に分析する手法について解説している。筆者は、単に便利な機能(CLAUDE.md、Skills、Rulesなど)を導入するだけでなく、それらが実際にプロジェクトの成長や作業フローに合致しているか、つまり「ハーネスを育てる」ことの重要性を指摘している。セッションログは、AIがどのように意図を汲み取り、どのような行動をとったかを示す「宝の山」であり、これを分析することで、AIの潜在的な問題点や非効率なパターンを発見できるとしている。
分析のプロセスとして、まずLLMを使わずにスクリプトで機械的なデータ抽出を行う。具体的には、`tool_use`と`tool_result`のペアを収集し、以下の多角的な指標を抽出する。これには、ツール使用回数の分布(Read/Edit/Bash/Grepなど)、ファイルごとの読み込み・編集回数、サブエージェントとメインエージェントの重複読み込みの有無、エラー発生箇所と直後のリトライパターン、大型ツール結果の蓄積量、セッション開始直後の行動(初動の数手)、使用モデルの内訳、セッション時間とユーザー操作間隔などが含まれる。
次に、抽出された統計データと、不要な情報を削ぎ落とした軽量化されたセッションログをLLMに渡して再分析させる。この際、単なる感想文を避けるため、「重複作業」「トークン効率」「目的外作業」といった採点軸を事前に固定し、LLMに具体的な数値を根拠として引用させる工夫がなされている。さらに、改善案はそのままコピペできる形式で出力させることで、実用性を高めている。
実際にこの手法を適用した結果、筆者は「serena-first.md」というルールファイルに記載した「Kotlinファイルを読む前にSerena MCPのfind_symbolで対象シンボルを絞り込め」というルールが、実際のセッションでは完全に無視され、代わりにGrepが12回も使われていたという具体的な矛盾を発見した。これは、スキルからサブエージェント起動時のMCP呼び出し方法の考慮が漏れていたことが原因であった。また、iOSデバッグセッションにおける構造的な手戻りの多さや、エラー後の即時リトライ率の高さなど、これまで「気のせい」だと思っていたものが定量的に可視化されたことを報告している。この分析を通じて、AIの行動の「輪郭」を数字で捉え、より洗練された開発プロセスを構築できる可能性を示唆している。
背景
近年、AIコーディングアシスタントの進化に伴い、開発プロセスにおけるAIの役割が拡大している。しかし、単にツールを導入するだけでは不十分であり、AIが実際にどのように、どのプロセスで作業しているかを把握し、改善する必要性が生じている。本記事は、その「ブラックボックス化」したAIの思考過程を、ログデータという客観的な指標を用いて可視化する手法を提案している。
重要用語解説
- ClaudeCode: AIコーディングアシスタントの名称。セッションログが残る主要なツールであり、開発プロセスにおけるAIの行動を記録する。
- セッションログ: ClaudeCodeが特定のタスクを処理した際の、詳細な行動履歴(JSONL形式)が記録されたファイル。AIの思考や実行過程の「宝の山」とされる。
- ハーネスエンジニアリング: システムやプロセス全体を円滑に機能させるための環境整備や仕組み作りを指す概念。AIの利用においても、単なる機能追加ではなく、ルールや手順の確立が重要とされる。
今後の影響
本手法は、AIツールの利用を単なる「利用」から「最適化」のフェーズへと進化させる。開発者は、ログ分析を通じてAIの非効率な行動や盲点を発見し、プロンプトやルールを改善することで、開発の生産性を飛躍的に向上させることが期待される。これは、AIを活用したソフトウェア開発の標準的なプロセスとなり得る。