単純なレビューはAIにお任せ!効率化を実現するシェルスクリプト
この記事は「BEMA Lab Advent Calendar 2024」の3日目の記事です。
はじめに
はじめまして。株式会社メンバーズの假屋陽介と申します。
現在はアカウントリーダーとして、クライアントのシステム開発支援を実施しております。
今回の記事では、コードレビューをする際のAI活用について紹介させていただければと思います。
コードレビューをする際にタイプミスや、Docコメントの記載漏れや誤りなど動作には問題がないものの修正が必要な点が出てくることがあります。
特にまだプログラミングに慣れていないメンバーのコードをレビューする際は、複数のレビュー指摘が入ってしまうこともよくあると思います。
私自身、メソッドの型指定を変えた後にDocコメントの修正が漏れてしまうことがよくありました。
レビュー前にチェックリストで確認をすることはしているのですが、タイプミスなどは書いた本人が気付きづらいと言った課題がありました。
そのため、私たちのチームではそれを事前に防ぐためにAIの導入を始めました。これにより、コードレビューの負担軽減、品質向上を実現できました。
AIで機能のすべての整合性を確認することは難しいですが、タイプミスや引数の型記載の漏れなどを防ぐことは十分できると思います。
作成したシェルスクリプト
シェルスクリプト
ーーーーーーーーーーーーーーーーーーーーーーーーーーーー
#!/bin/bash
# 差分を取得(引数で範囲を指定可能)
DIFF=$(git diff "$@")
# 差分がない場合
if [ -z "$DIFF" ]; then
echo "差分がありません。変更を加えた上で再度実行してください。"
exit 0
fi
# 出力ファイル名
OUTPUT_FILE="ai_review.txt"
# テンプレート生成
REVIEW="以下のコード差分についてレビューしてください。
確認してほしい点
1. 誤字脱字、タイポがないか
2. docコメント記載されているか、また誤りがないか
3. メソッドの引数の型指定が抜けていないか
4. メソッドの返り値の型指定が抜けていないか
5. 良い点
6. 改善が必要な点
コード差分:
---------------------------------------------------------
$DIFF
---------------------------------------------------------
"
# テンプレートを出力
echo "$REVIEW"
# テンプレートをファイルに保存
echo "$REVIEW" > "$OUTPUT_FILE"
echo "レビュー依頼内容を $OUTPUT_FILE に保存しました。”
使用方法
- すべての差分について確認する場合
./review.sh - 特定の差分について確認する場合
./review.sh exemple/test.txt
shellを実行すると、AIに依頼するレビュー内容がテキストファイル(ai_review.txt)に保存されます。
このテキストをアップロードまたは入力することで、記載された内容をAIが確認してくれます。
使用しているプログラミング言語に応じて観点を変更することで、よりそれにあった確認ができます。
例:
・typescriptの場合は型指定がされているか
・console.log()など残っていないか
・不要なインポートがないか
出力例
以下のコード差分についてレビューしてください。
確認してほしい点
1. 誤字脱字、タイポがないか
2. Docコメントが記載されているか、また誤りがないか。
3. メソッドの引数の型指定が抜けていないか
4. メソッドの返り値の型指定が抜けていないか
5. 良い点
6. 改善が必要な点
コード差分:
---------------------------------------------------------
diff --git a/tests/Feature/QuestionControllerTest.php b/tests/Feature/QuestionControllerTest.php
index 47e1bc4..dc671f4 100644
--- a/tests/Feature/QuestionControllerTest.php
+++ b/tests/Feature/QuestionControllerTest.php
@@ -85,4 +85,17 @@ public function dataProvider() {
'レベルが範囲外 4' => [['category' => "1", 'level' => 4], 422],
];
}
+
+ /**
+ * 単一の問題を取得することを確認
+ * @test
+ * @return void
+ */
+ public function get_question_success(): void {
+ $response = $this->json('GET', '/api/questions/1');
+ $response->assertStatus(200)
+ ->assertJson(['data' => [
+ ['id' => 1, 'category' => 1, 'level' => 2],
+ ]]);
+ }
}
---------------------------------------------------------
まとめ
チームでgitのcommit前にこのシェルを実行することで、レビュー前にコードの不備に気づくことができてレビュー指摘を減少させることができました。
誤字脱字や型記載の確認など定型的なものはAIに任せて、機能が要件を満たしているかなどをしっかり人が見ることでプロダクトの成長を促進させることができると思います。
この記事を書いた人
関連記事
- レコメンド(推薦)システム入門
秋田 大介