ChatGPTとAWSでコードレビュー自動化によるUX改善を目指す

ノウハウ 公開日:
ブックマーク
ChatGPTとAWSでコードレビュー自動化によるUX改善を目指す
エンジニア育成においてコードレビューを行うことは受講者の本質的な理解を促すうえで重要な役割を担っています。一方でコードレビューを行うには時間的な制約が課題となることが多いです。本記事ではTECH PLAY Academyが導入を開始しているコードレビュー自動化ツールの仕組みついて解説しています。少しでもご参考にしていただければ幸いです。

こんにちは、 TECH PLAY Academyでメンターをしている久保です。本記事では弊社が技術研修に導入し始めているコードレビュー自動化ツールの仕組みに関して執筆します。

TECH PLAY Academyでは、企業のエンジニア向けにプログラミングの技術研修を提供しています。研修では、受講者が提出したコードに対して、その技術に精通したエンジニアが丁寧にレビューを行います。このレビューは、受講者がGitHub上で作成したプルリクエストにメンターがコメントを残す形式で行われます。このプロセスは、受講者にとって自分のコードを客観的に見直す機会となり、理解を深めるだけでなく、改善点を学ぶことで実践力の向上にもつながるため、学習効果を高める重要なプロセスとなっています。

しかし、毎日提出されるコードをメンターが全てレビューするには、時間的な制約が大きな課題となっています。そのため、レビューの質を維持しながら一定の自動化を進めることが求められています。これにより、メンターは時間を効率的に使えるようになり、より効果的なフィードバックに集中でき、受講者にとっても質の高い学習体験を提供することが可能になります。結果として、受講者とメンター双方のユーザーエクスペリエンス(UX)の向上が期待できます。

コードレビュー自動化ツールの利用方法

受講生がGitHub上でコードを提出し、プルリクエストを作成すると、ツールによって自動的にChatGPTによる初期レビューが開始されます。しかし、このレビュー結果はすぐに受講生に表示されるわけではなく、一旦「pending(保留)」の状態になります。その後、メンターがこの保留中のレビューを確認し、必要に応じて修正や追記を行います。最終的に、メンター(人間)が目を通した正確な情報が反映されたレビューが受講生に閲覧可能な状態となります。これにより、受講生はより信頼性の高いフィードバックを受け取り、コードの改善に役立てることができます。

コードレビュー自動化のためのシステム構成と技術的アプローチ

コードレビュー自動化のプロセスは、以下のシステム構成と技術的アプローチに基づいています。まず、受講生がプルリクエストを作成すると、GitHub Actions上で単体テストや静的解析が自動的に実行されます。この段階で、コードの品質や整合性をチェックすることで、基本的なエラーや不具合が早期に検出されます。

その後、受講者が変更したコードを含むデータがAmazon SQS(Simple Queue Service)に送信されます。SQSのFIFO(First In, First Out)の仕組みを活用し、ChatGPTの利用量が一定時間内に過剰にならないよう、リクエストを順序立てて処理しています。この仕組みによって、システム全体の安定性とパフォーマンスを維持しながら、効率的にレビューが進められます。

また、GitHub Actionsから直接ChatGPTにリクエストを送信せずに、SQSを経由させることで、GitHub Actionsの実行時間を短縮することができます。それにより、受講者はより早くCI(継続的インテグレーション)の結果を確認できるようになります。受講者はコードの修正や次のステップに迅速に移行でき、結果として受講者側のユーザーエクスペリエンス(UX)の向上にもつながります。

尚、ChatGPTのモデルによってはレスポンスが返るまでに5〜10分かかることがあります。そのため、GitHub Actions上でCIが完了するまでに、受講者は最大10分ほど待機しなければならない場合があります。しかし、この処理をSQSやLambdaに移行することで、GitHub Actions上での待機時間は平均1分30秒ほどに短縮され、受講者の待機時間を大幅に減らすことができるようになりました。

次に、AWS LambdaがSQSからのメッセージを順番に取得し、メッセージ内のコードデータをプロンプト形式に変換します。このプロンプトは自社Azure環境内にホストされているChatGPTへ送信され、AIによる初期レビューが生成されます。

ChatGPTから返ってきたレビュー結果は、Lambdaによって整形され、GitHub APIを介してメンターの名義で「pending(保留)」状態として送信されます。このレビューはすぐに受講生に公開されるのではなく、メンターが目を通し、必要に応じて修正や追加のコメントを行います。その後、最終的に受講生に表示されます。

なお、Azure環境を利用している理由は、セキュリティの確保を目的としたものです。特に、受講生のコードデータが扱われるため、安全な環境でのデータのやり取りが必要不可欠です。これにより、受講者とメンター双方にとって信頼できるフィードバック環境を提供しています。

この全体のフローにより、メンターのレビュー作業は効率化され、同時に受講生も質の高いフィードバックを受けることができるシステムが実現しています。

コードレビュー自動化のためのプロンプトエンジニアリング

コードレビューを自動化するプロジェクトにおいて、プロンプトの設計がレビューの質や効率に大きな影響を与えます。効果的なレビュー自動化を実現するためにプロンプトには以下の内容を含めています。

明確化された着眼すべきレビュー項目

重複や冗長なロジック、テスト可能性、パフォーマンスに関する問題など、重点的にチェックすべき項目をリスト化しています。これらの項目は、これまで人間が実際に行ってきたレビューを集計・整理した結果に基づいており、レビューの焦点がぶれないように設定されています。

具体的な改善提案とその根拠 

単なる指摘にとどまらず、具体的な改善方法とその理由を明確に伝えることを重視しています。受講者が容易に理解し、効果的な修正を行えるようにするためです。改善方法については、コードブロックを使用して具体的な例を提示し、どのように修正すべきかを視覚的に示せるように指示しています。 

変更箇所に基づいたフィードバック

AIには、受講者によって変更が加えられたファイルと行番号にのみフィードバックを行い、「どのファイルのどの行をどのように変更すべきか」を明確に提案するように指示します。これにより、受講者は問題箇所を迅速に特定し、対応することが可能です。プロンプトにGitから自動取得した変更されたコードのファイルと行番号を含めることで、AIが提案すべき変更箇所をより明確にしています。

JSON形式での出力

AIによって生成されたレビュー結果を文章ではなく、JSON形式で出力させることで、フィードバック内容を統一し、後続のLambda上での分析や処理がしやすくなります。ただし、AIが常に正しいフォーマットのJSONを返すとは限らないため、出力されたJSONデータのバリデーションが必要です。バリデーションを行うことで、データの整合性を保ち、後続の処理と分析を可能にします。 

過去の人間によるレビューの参照

過去に人間であるメンターが行ったレビューを自動システムが参照し、その内容をプロンプトに含めることで、より実用的で自然なフィードバックを生成します。この方法により、従来の手動レビューに近い品質の結果を提供し、ユーザーにとって有益で理解しやすいフィードバックを実現します。

これらのプロンプトの工夫により、レビューの品質と一貫性が向上し、受講者が迅速かつ効率的に改善できる環境を整えています。

最後に

本記事では、TECH PLAY Academyにおけるコードレビュー自動化ツールの導入とそのシステム構成、プロンプトエンジニアリングの工夫についてご紹介しました。この取り組みは、受講者にとっての学習効果を最大化し、メンターの負担を軽減することを目指しています。自動化ツールによる初期レビューと、メンターによる最終確認の組み合わせにより、より高品質なフィードバックを効率的に提供できるようになります。

プロンプト設計においては、レビュー項目の明確化、具体的な改善提案、変更箇所に基づいたフィードバック、JSON形式での出力、そして過去のレビュー参照を通じて、レビューの質と一貫性を確保しています。これにより、受講者は迅速に問題を特定し、効果的に改善できる環境が整えられています。

しかし、現在のツールにはまだ改善の余地があります。例えば、ChatGPTのモデルをより応答速度の高いものに移行することで、フィードバックの提供時間をさらに短縮することが可能です。また、AIによって生成されたレビューをメンターが確認する必要があるため、今後は人間の関与をより減らし、完全な自動化を目指すことも課題です。

今後もこのシステムを進化させ、より優れた学習体験を提供するために、継続的な改善を行っていきます。引き続き、受講者とメンター双方の満足度向上に努め、テクノロジーと人間の知見を融合させた最適な教育支援を目指してまいります。

ご覧いただきありがとうございました。ご質問やフィードバックがございましたら、お気軽にお知らせください。

TECH PLAY Academyの研修詳細についてはこちらから
https://business.techplay.jp/engineer-bootcamp

TECH PLAY Academy が運営するテクノロジー人材育成に関するイベントページです。 TECH PLAY Academyは、テクノロジー活用によって事業を進化させるために実践者である現役テクノロジー人材を講師とした、ワーク中心の実践的な人材育成プログラムを提供しています。 本コミュニティでは、“IT時代で勝ち抜ける組織“を増やしていくための、イベントや記事等の情報発信をいたします。

テクノロジーと共に成長しよう、
活躍しよう。

TECH PLAYに登録すると、
スキルアップやキャリアアップのための
情報がもっと簡単に見つけられます。

面白そうなイベントを見つけたら
積極的に参加してみましょう。
ログインはこちら

タグからイベントをさがす