ENECHANGEのSREチームの id:tockeysan です。
弊社ではRubyやGo、Pythonなど様々な言語のプロダクトが存在しますが全社で標準的に使われているコードカバレッジツールが存在していません。また運用の仕方も各チームに一任されています。
具体的には以下のような課題があると認識していました。
- コードカバレッジツールの導入が各チームに依存しており、導入されていないプロダクトが複数存在する
- 導入されているコードカバレッジツールがバラバラで、横断的な分析ができない
- 仮に導入を進めたとしてもプロダクト数が非常に多いので各プロダクトがどの程度のカバレッジ率なのかを把握できない
そこで全社横断プロジェクトとしてコードカバレッジツールの導入を検討しOSSであるoctocovを採用することにしました。
この記事ではoctocovの詳細な導入手順ではなく、ClaudeCodeを利用してoctocovの特殊な使い方を模索した経験を共有します。
CI併用のハードル
弊社ではCIツールとしてGitHub Actionsの他にBuidlkiteを利用しています。各プロダクトによってまちまちなのですが、octocovはGitHub Actionsでの利用を前提としていました。Buidlkiteを利用しているプロダクトを急にGitHub Actionsに移行することは運用上難しい部分がありました。そのためBuidlkiteを利用しているプロダクトでCIはそのままにoctocovを導入するためには工夫が必要です。
octocovのREADMEを読んでみたものの私が求める外部CIを併用するような利用方法は記載されておりません。ただ、READMEにGitHub ActionsのVariablesをオーバーライドできる機能があると記載がありました。これを活用すればBuidlkite上でテスト実行後にGitHub Actionsでトリガーしてoctocov動かせるのではないかと考えました。
CluadeCodeに任せることができたもの
大まかなフローは私の頭の中でイメージできたものの細かい部分の実現可否が不明瞭でした。 実際に動作検証を行いつつClaudeCodeを利用してOSS側のコードを読み解くことにしました。
大まかに以下の3点をCluadeCodeに助けてもらいました。
コードベースの要約
コードのステップごとにどんな処理をしているのかを説明してもらいました。これは非常に正確でGo言語の単純な構文も知らない私にとっては非常に助けになりました。
プロンプトにはコードラインを示すリンクを毎回貼り付けていました。プロンプトの情報はなによりも重要なものなので優先的に読みに行ってくれます。逆にリンクを入れないとローカルコードから探すこともあったので、リンク読みに言って欲しいときは毎回
プロンプトにいれることをおすすめします。
問題の切り分け
octocovにはCentral modeという機能があります。これは複数のリポジトリに設定したoctocovのカバレッジレポートを収集して、1つのリポジトリに集約して表示してくれる機能です。 この機能を実行をしてみたところ、他リポジトリからレポートを収集してくれない事象が起きました。直接原因となるエラーログは出力されずに終了していましたが、少ないログからCluadeCodeにコードを追わせてどこまで処理が到達しているかを特定することで問題の切り分けができました。根本原因としてはprivateなリポジトリにアクセスするためにGithub Actionsに設定していたPrivate Access Tokenの権限不足でした。
シーケンス図の作成
試行錯誤を経て形になったものをシーケンス図にしてもらいました。この生成はおそらくAIエージェントがもっとも得意とすることでしょう。
自分の実装のためのものというよりは社内で共有するためのドキュメントとして活用しています。
どこまで信頼してよいかの線引は難しい
GitHub Actionsのログだけを渡して「期待値がこうなんだけど、原因を特定して」と伝えた場合、それっぽい原因を出してくれることもありますが、実際には全く違う原因であることも多々あります。逆に正しいことを言っているのにその裏取りに時間をかけてしまうこともあるので線引きが難しいです。前述のPrivate Access Tokenの権限不足は、CluadeCodeが早い段階で指摘してくれたのですが、自分の頭では適切な設定をしていると信じ切っていたために時間を浪費してしまいました。
まとめ
以上、ClaudeCodeを活用してOSSリーディングのサポートをしてもらい非常に助かった経験でした。
- OSSのリーティングはAIエージェントのおかげでハードルが低くなっている
コードを書くのはAIエージェントなので人間がリーディングしても意味がないのでは?という考えもありますが、AIエージェントが出してきたコードが実際には動かなかったり信頼に足るものか裏を取るには人間によるレビューが必要です。「書ける」というスキルのハードルは低くなってきていますが、「読める」というスキルは今後も必要なスキルであり続けると思っています。
octocovのコードベースの導入紹介は別途投稿する予定ですので、よければ見ていただけると嬉しいです。