【目次】
はじめに
AIコードレビューの全体像
finishスキルのレビュー手順
公式のレビュー機能を選ぶ理由
レビューの仕組みを作る
細かすぎる指摘は却下する
完成したレビューの仕組み
作業ごとにworktreeを切る理由
PR2番で仕組みを試す
/simplifyの適用結果
Codexレビューの結果
AIが書くテストの質
良いテストとは
OpenClawのテスト監査スキル
テスト監査スキルを導入
テスト監査スキルの導入結果
テスト監査の実行結果
まとめ
MacにClaudeを入れるところから、Git・GitHubの解説、アプリの要件定義〜リリース、セキュリティ対策までを動画コースにしています
https://www.youtube.com/playlist?list=PLAoXsuYjy0E0
お仕事の無料相談、AI活用・動画の内容に関するご質問は公式LINEへお願いします
今回の内容の解説記事
感想
まだ感想はありません。最初の1件を書きましょう!
00:00
一番大事なのは、コードが壊れたときに気づけることです。 すべての検査が終わったら、コミットプッシュして、PR作成まで自動でやってくれます。
レビューの修正がゼロ件で終わることはほぼありません。 こんにちは、超実践AI論のたいちです。
今回は、AIコードレビューで、プログラムの無駄とバグをなくす、というテーマでお話しします。 前回の動画で、Webコンテンツ分析アプリのセキュリティ周りの設定まで完了しました。
この動画を含む、クロードコードを使ったアプリ開発の全工程は動画コースにしているので、全体を知りたい方は概要欄のリンクから見てみてください。
今回は、僕が普段やっているAIによるコードレビューを自動化する仕組みを導入しながら解説します。
オーパス5.5やフェイブル、アストラといった最先端モデルは賢いですが、それでも各コードにはまだまだ無駄やバグがあります。
僕は最先端モデルにコードを書かせた後、必ず別のAIによるレビューを入れていますが、レビューの修正がゼロ件で終わることはほぼありません。
修正内容も軽く目を通していますが、どれも妥当で、やらないと無駄にコードが増えたり、不具合に繋がったりするものです。
つまり、最先端モデルのコードでも、一発出しではまだまだ改善すべき点があるということです。
まずは、僕がどんな感じでAIによるコードレビューをやっているのか、その全体像を解説します。
クロードコードやコードXが作業を完了すると、ストップフックが実行されます。
ストップフックとは、AIの作業を完了時に必ず実行されるプログラムのことです。
クロードコード、コードX、どちらでも使える仕組みです。
このストップフックで未コミットの変更を検知すると、プログラムが作業が完了しているならフィニッシュスキルを実行して、とAIに指示します。
フィニッシュスキルにはコードレビューの具体的な手順が書かれています。
その内容は、まず作業内容をクロードコード公式のシンプリファイスキルで簡素化します。
具体的には、既に同じ処理があるのにゼロから同じ処理を書いている箇所を消して既存処理を使うようにしたり、無駄に複雑になっている条件分岐をシンプル化したりしてくれます。
シンプリファイによる簡素化が済んだら、次はコードX公式のレビューエージェントスキルでコードレビューをして不具合をつぶします。
そしてコードレビューも不具合がなくなるまで回し終わったら、コミット、プッシュ、PR作成までやるのがフィニッシュスキルのレビューの流れです。
僕がやることは、このAIによる簡素化やレビューが一通り済んだPRの最終確認だけです。
シンプリファイやコードXのレビューエージェントに相当するものは世の中にたくさんありますが、基本的には公式のものを使うのがいいと思っています。
信頼できますし、性能もある程度担保されていて、継続的なメンテナンスも期待できるからです。
では早速、クロードコードを開き、今回の作業用のワークツリーを作成してオーパス5.5指向レベルを最大にします。
そして今回のレビューの仕組みを作ってもらうプロンプトを貼り付けます。
指示内容を一応読み上げます。
コードレビューからPR作成までを自動化して、ストップフックで見込みと差分があったらこれから作成するフィニッシュスキルを呼ぶ、
フィニッシュスキルの内容は以下。
シンプリファイを実行、コードxexecレビューを実行、レビュー指摘がなくなるまでレビューと修正を繰り返す。
03:03
ただし、ミリ秒単位の競合など、現実的には問題にならないレビュー指摘は却下する。
上記工程が完了したら、コミット、プッシュ、PRを作成する。
フィニッシュを参考にEvalは不要。
5番目のフィニッシュを参考にEvalは不要の部分は、僕はすでに同じような仕組みを作っているので、そこを参考にしてという指示です。
そして、Evalというのはスキルの性能を評価する仕組みを作っているのですが、それはまだ作らなくてもいいという指示です。
そして、現実的には問題にならないレビュー指摘は却下するという指示は、僕がこれまでコードxのレビュー機能を使ってきた経験から達しています。
コードxのレビュー指摘は、確かにバグにつながるものもあるのですが、
1000分の1秒単位で同時に特定の操作をやった場合など、実際には起こり得ない、銃箱の隅をつつくような不具合を指摘してくることがよくあります。
なので、そういった細かすぎる指摘は却下するようにスキルに組み込んでおきます。
これでスキル作成の指示は以上なので早速対応してもらいます。
対応が完了しました。
これでAIが作業を完了したときは自動でストップフックが実行され、それによって未コミットの修正があるときはフィニッシュスキルが呼ばれます。
そして、修正差分をチェックし、シンプリファイでコードの無駄をなくして、コードxのレビューでバグをつぶします。
全ての検査が終わったら、コミットプッシュしてPR作成まで自動でやってくれます。
僕がアプリ開発をするときは、必ずデベロップから一つの作業ごとにワークツリーを切って対応します。
この運用を徹底している理由は、AIによるコードレビューの質を高めるためです。
一つの作業ごとにこのようにワークツリーを切ってPRを作成すれば、AIがレビューする対象はその作業の差分だけになります。
クロードによるシンプリファイもコードxによるコードレビューも、レビューする範囲を適切に絞ることで見落としを減らすことができます。
1回のコミットごとにレビューさせるのは細かすぎますし、かといってアプリ全体を定期的に一気にレビューさせるのも見る範囲が広すぎて見落としが発生しやすくなります。
なので、このように作業単位でワークツリーを切って特定作業のPR差分だけをレビューさせるのが、最もAIレビューを精度高く効率的に実行する方法だと思っています。
AIレビューの仕組みができたので、早速コンテンツ分析アプリの続きを開発していきます。
計画書にのっとって次に対応すべきはPR2番のDB周りの対応です。
クロードで作業用のワークツリーを開いてPR2番の対応を依頼します。
PR2番の対応も完了しました。
ストップフックによるシンプリファイとコードレビューの仕組みが動いているかも確認します。
シンプリファイはちゃんと適用されています。
例えば共通化できる処理を共通化してくれたり、よりパフォーマンスがいい処理方法があればそれを採用したりしてくれています。
そしてコードXによるレビューもちゃんと実行されています。
レビュー指摘の妥当性はクロードが判断して対応が必要だと思ったものは対応し、対応が不要なものは却下しています。
06:01
そして今回却下したものはクロード自身には判断ができなかったので、僕に質問した上で判断をしました。
これでAIによるコードレビューの仕組みもバッチリです。
AIがコードを書くと、その動作が正しいかを検証するテストも一緒に書いてくれます。
例えばこのようにデータベースの保存処理が期待される形式で保存されているかといったテストや、
このようにエラーになるべきときはちゃんとエラーになるかといったテストも書きます。
ただオーパス5.5やフェイブル5.1のような高性能モデルでもテストの質はイマイチです。
テストはたくさん書けばいいというものではありません。
たくさんあると実行に時間がかかりますし、品質が悪いテストだとコードを直すときに関連するテストもすべて直す必要があって運用コストがかかります。
では品質の良いテストとはどんなものでしょうか。
いろんなパターンが網羅的に検証されていること、もしくは実行時間が短いこと、確かにこれらも大事です。
でも一番大事なのはコードが壊れたときに気づけることです。
アプリ開発では機能追加や改善で既存のコードを直すことはよくあります。
そのときにもともと動いていた機能が壊れたらちゃんと検知できるのが良いテストです。
壊れたら検知できるテストが書いてあれば、修正で起きる本番障害に怯える必要がないのでアプリの改善を大胆にできます。
実はこの壊れたら気づけるというテストの価値を重視してAIの各テストを監査してくれるスキルがあります。
それがオープンクローのテスト監査スキルです。
オープンクローは今年の前半に一世を風靡したAIエージェントアプリで、開発者のピーターシタインバーガーさんは今オープンAIの開発チームに入っている実力者です。
そんな彼が自身のプロダクトであるオープンクローで使っているテスト監査スキルがGitHubで公開され継続的にメンテナンスもされています。
これを使わない手はありません。
オープンクローのテスト監査スキルは実際にテストが検証している対象のコードを壊して、テストがその故障を検知できるまで確かめてテストの価値を判断します。
だからこそAIがよく作りがちな無駄なテストはどんどん削ってくれて、逆にテストがないとコードが壊れたことを検知できない箇所はテストを増やしてくれます。
このオープンクローのテスト監査スキルは僕の他のプロジェクトでもいつも使っています。
早速テスト監査スキルを入れるためのワークツリーを切ってクロードコードに対応してもらいましょう。
指示内容はこんな感じです。
テスト監査スキルのURLを貼り付け続けてのスキルを入れてただしこのスキルはオープンクロー向けに作られたものなのでこのプロジェクトに最適化してテスト監査はフィニッシュスキルに組み込んでと指示します。
テスト監査スキルはオープンクロー用に作られたものなのでオープンクローに関する記述が書かれています。
なので導入するときは自分のプロジェクト向けに最適化してもらいます。
そして先ほどのコードレビューの仕組みで作ったフィニッシュスキルに組み込むことでAIの作業完了時に必ずトップフックでフィニッシュスキルが呼ばれその中でテスト監査のスキルも呼んでくれます。
最後の指示は僕はすでにこのテスト監査の仕組みを別のプロジェクトで導入しているのでそれを参考にするよう伝えています。
オープンクローのテスト監査スキルのGitHubのURLは概要欄の記事にも書いてあります。
09:03
直接見たい方はそちらを参照してください。
そして指示は以上なのでこれでクロードに対応してもらいます。
テスト監査スキルの導入も完了しました。
テスト監査スキルをこのプロジェクトに最適化した上でスキルとして登録し、またフィニッシュの中でテスト監査スキルを呼ぶよう設定もしてくれました。
実際にテスト監査スキルの実行もやってみました。
このように重複しているテストや何かを確かめているようで実際は何も検証できていないテストなど無駄なものをすべて削ってくれています。
一方でコードが壊れたときにそれがないと検知できないようなテストはコードを壊した上でちゃんと確かめて残してくれています。
ここで一つお知らせです。
業務のAI活用の個別サポートや研修、システム開発などのお仕事は概要欄の公式LINEからお問い合わせください。
相談は無料です。
動画の内容やその他のご質問にも公式LINEで回答しています。
今回の動画で対応する作業は以上なので内容をまとめます。
まずオーパス5.5やフェイブル5.1のようなハイエンドモデルでも一発出しのコードではまだまだ改善点があるので、
AIによるコードレビューの仕組みを導入しました。
具体的にはAIの作業完了時に必ず実行されるストップフックでフィニッシュスキルを呼びます。
そのフィニッシュスキルの中でクロードコード公式のシンプリファイスキルを使ってコードの無駄を削ります。
その上でCODEXのコードレビューを通して不具合を潰します。
そしてテストの修正があるときはオープンクロのテスト監査スキルも通して、
コードが壊れたときにちゃんと検知できるテストを残します。
これらのシンプリファイ、コードレビュー、テスト監査すべてが通ったら変更をコミットプッシュしてPR作成まで自動でやるのがフィニッシュスキルの全体像です。
フィニッシュスキルを使うとレビューや監査の分、実行時間やトークンはより多く消費します。
ですが、コードやテストの無駄をなくし、バグも潰してくれるので、長期で運用するアプリなら、トータルのコスト、作業時間、品質はフィニッシュスキルを使った方がより良いものになります。
ぜひあなたのアプリでも今回話した内容を参考にして、AIによるコードレビュー自動化を試してみてください。
概要欄にも今回の内容を解説した記事を貼っておきます。
それでは今日はこの辺で。
コメント
このエピソードのトピック
すべてのトピック →それぞれのトピックから、ほかの番組の会話も探せます。
スクロール