Tabelog Tech Blog

食べログの開発者による技術ブログです

社内AIチャットボットにコードレビューを手伝ってもらう

この記事は 食べログアドベントカレンダー 2024 の3日目の記事です 🎅🎄


こんにちは。食べログサービス本部デザイン部で飲食店様向けのUIデザインや実装を担当している、デザイナーの皆川です。

当社では、業務効率化を目的として、社内向けに生成AIを活用したチャットボットを導入しています。
今回、そのチャットボットにコードレビューを試験的に手伝ってもらい、そのプロンプトの最適化プロセスと所感をまとめました。本格的な効率化には他の方法も考えられますが、まずは手軽に試した結果をご紹介します。

また、本記事で触れるのはSlimのみですが、他言語でも応用できそうなので興味があれば試してみてください。

Slimのコードレビュー用プロンプト(暫定)

さっそくですが、いろいろ試した結果、それなりに安定したコードレビューをしてくれるであろうプロンプトがこちらになります。
(もちろんこれが正解というわけではなく、試したコードも限定的なのであくまで暫定)

あなたは優れたRuby on Rails開発者であり、Slimテンプレートエンジンの専門家です。
以下のSlimコードをレビューしてください。
コードの構造、品質、効率性、パフォーマンス、セキュリティ、可読性、保守性、ベストプラクティスに関するフィードバックを提供してください。
必ず出力形式に従ってください。

# その他確認ポイント

- HTML文書構造、インデントが適切であるか
- ダミーテキストが残っていないか
- 誤字や脱字が存在しないか
- 用語の一貫性が保たれているか(例:ひらがなとカタカナの使い分け、送り仮名の適用など)
- 数字やアルファベットは半角文字で統一されているか

# 出力形式

改善が必要な箇所とその理由を箇条書きで記載

プロンプト最適化までのプロセス

とりあえず、プロンプトの叩き台を提案してもらう

以下のように雑な感じでお願いしてみても、それっぽいものを回答してくれます。

プロンプトの叩き台の提案

まずは提案されたプロンプトそのままで試してみる

つらつらと提案してくれましたが、ライトな感じで試したいので、一部抜粋して実際にコードレビューしてもらうことにします。 また、レビューしてもらうコードは、あえて ❶〜❻ のようなツッコミどころを盛り込んだ内容にしました。 (実装詳しくない方でも伝わるように文言系多め)

提案されたプロンプトそのまま

以下、コードレビューの結果です。

コードレビューの結果

細かい指示はしていませんが、文言系(❶、❷、❺、❻)もチェックしてくれています。
一方で、肝心のコードの構造(❸)については見逃されているようですね…

フィードバックを繰り返して調整する

見逃された ❸、❹ について留意して再度レビューしてもらいます。

再度レビュー

むむ… インデントについて何やら述べてますが、期待した内容ではないですね…
もっと具体的に指摘してみましょう。

再再度レビュー

ようやく全部チェックされたので、 こちらからのフィードバックをふまえ、プロンプトを再提案してもらいます。

プロンプト再提案

・・・と、こんな感じでやりとりを続けると徐々に回答内容が安定していきます。
ただ、この段階ではまだ改善の余地があったため、この後も細かい調整を重ねました。(詳細は割愛)

最適化したプロンプトでコードレビューしてもらう

そんなこんなで最適化したプロンプト(冒頭でも紹介)を改めて。

あなたは優れたRuby on Rails開発者であり、Slimテンプレートエンジンの専門家です。
以下のSlimコードをレビューしてください。
コードの構造、品質、効率性、パフォーマンス、セキュリティ、可読性、保守性、ベストプラクティスに関するフィードバックを提供してください。
必ず出力形式に従ってください。

# その他確認ポイント

- HTML文書構造、インデントが適切であるか
- ダミーテキストが残っていないか
- 誤字や脱字が存在しないか
- 用語の一貫性が保たれているか(例:ひらがなとカタカナの使い分け、送り仮名の適用など)
- 数字やアルファベットは半角文字で統一されているか

# 出力形式

改善が必要な箇所とその理由を箇条書きで記載

このプロンプトでレビューしてもらうと…

最適化したプロンプトでコードレビュー

なかなかいい感じになりましたね!

まとめ

プロンプトの最適化プロセスから見て取れるように、現状の社内AIチャットボットのコードレビューは、補助的な役割なら多少は活用できそう…というのが正直な感想です。

ただ、チェックの目が増えること自体は悪いことではないですし、出力もほぼ一瞬です。 コードレビュー時にAIチャットボットを併用することで、作業負荷軽減に繋がるのではないでしょうか。

おまけ

チャットボットが無機質で味気ない、という方は気になるキャラの口調で回答してもらうのも 🙆

おまけ

明日は @ithrotty の「OJT初期に生成AIを使って素早くチームにジョインできた話」です。お楽しみに!