

Aravind Putrevu
May 27, 2024
10 min read
How to Use an AI Code Reviewer on GitHub in 4 Examplesの日本語訳です。
OSSプロジェクトのメンテナーになることの大変さを、事前に教えてくれる人はいません。始めたばかりのころは、プロジェクトを広めて話題を生み出すことに胸が躍ります。リポジトリのフォロワーとスターが増え、ソフトウェアを使う人が現れ、勢いがつき始めます。
しかし時間が経つと、物事は手に負えなくなることがあります。コードを使う人が増えるのは素晴らしいことですが、期待も高まります。仕事への向き合い方を変えなければなりません。新機能、パフォーマンス向上、バグ修正、そして何よりセキュリティへの圧力が増していきます。
趣味として始めたものが、すぐに大きな責任へ変わることがあります。
人気プロジェクトのメンテナーは、特にコードレビューでAIの支援を求めるようになっています。AIはプルリクエストをすばやくスキャンしてエラーとセキュリティ上の欠陥を探し、プロジェクトのメンテナーに余裕をもたらします。コントリビューターからのPRでは特に有用であり、メンテナーの時間を守る先回りした防衛線として機能します。
注目すべきリポジトリで見られる、特に効果的なユースケースを紹介します。
OSSプロジェクトの人気が高まるほど、コードのコントリビューションで実際に何が起きているかを追跡するのは難しくなります。メンテナーは、新しいPRと、それが導入するコード変更の簡潔な要約を必要とすることがよくあります。
インドのハイデラバードを拠点とするAIおよびブロックチェーン企業、VitwitのPR要約を見てみましょう。このPRの目的は、2024年1月に提出された、新しいウォレット切り替え機能の要望を完了することです。以下を読みながら、メンテナーが節約できる時間と労力を考えてみてください。クリック数が減り、認知負荷が下がり、コードベース全体のコンテキストを考慮した専門的な解説を得られます。

ひと目見るだけで、PRに2件のコードコミットがあり、6つのファイルに変更があることがわかります。6つのファイルをクリックしてコード変更をレビューする代わりに、導入する新機能と改善点の短い要約を確認できます。
さらに下には、変更内容の技術的なウォークスルーを含む自動コメントがあります。AIは機能の目的、必要なデータ連携、互換性に関する懸念を、平易な言葉を使った短く読みやすい段落で説明します。
ファイル単位の変更は短い表にまとめられ、その次の表では、コード変更が既存のソフトウェア要件へ実際に対応しているかを示します。メンテナーが機能要件への対応を手作業で確認する必要はありません。完全性を視覚的にすばやく確認できる形で、すべてが明記されています。

この情報をすべて収集して確認するには、熟練したメンテナーでも少なくとも30分かかります。 AIを使えば瞬時に得られます。AIはコンテキストを認識し、コード、PR、すべての未解決課題、スタイル上の期待、十分なドキュメントがあるかどうかを考慮します。メンテナーは変更をマージするリスクへ集中し、改善できる箇所を絞り込めます。
開発者のKevin Mesiab氏は、EquilibriaエンジンにSMSを使った対話型の通知機能を構築しました。このプルリクエストでは、PRの要約とコードウォークスルーを超え、対話的な知見と支援を活用しています。
AIはPingDatabase関数へデータベース接続のログを追加することを推奨しました。

以下の「Committable suggestion」セクションで、提案された変更を確認できます。

Mesiab氏はチャットで、ログは関数の外で別の方法によってすでに処理していると返答します。AIはフィードバックを受け入れ、その知識を将来のために保持します(すべての開発者がこれほど素直にフィードバックを受け入れる姿を想像してみてください)。
次にAIは、既存のGETベースの実装で潜在的な問題を見つけます。徹底したフィードバックと代替案を提示します。Mesiab氏がその提案を課題として登録するようAIへ依頼すると、AIは課題を作成してリンクを提示します。
多くの開発者が時間に追われていることを考えると、代替実装のコードまで含む徹底的な分析を提供する可能性は低いでしょう。仮に提供しても、AIの即時応答よりはるかに長い時間がかかります。Mesiab氏は自分の時間を節約するだけでなく、コードレビューを行う相棒から、かけた費用以上の大きな価値を得ています。 開発時間は安くないため、この短いやり取りが時間と費用を節約します。
Artemisは、学習を強化する個別フィードバックを備えた人気の対話型学習アプリです。ミュンヘン工科大学が開発、サポートしています。Artemisには多くのコントリビューターがいるため、コードベースは大きく、多くの可動部分があります。
このチャットでのやり取りでは、AIの提案をメンテナーが「star importをなくしたい」と却下しています。AIは「承知しました。今後のレビューのため、Artemisプロジェクトではワイルドカードimportより明示的なimportを優先することを記憶します」と応答します。

次にAIは、学習した内容と、以前のLearningsについて更新する内容を共有します。

AIが今後行うこと(そして行わないこと)として学んだ内容を確認できるだけでなく、Learningsを個々のPRまで追跡できることも明確にわかります。Learningsは、チャットで簡単に提案して修正できます。たとえば「今後は明示的なimportを使用しないでください。ワイルドカードimportへ戻します」と伝えられます。
OpenReplayは、実際の顧客の操作データを使って開発者による問題の再現を支援する、セルフホスト型のブラウザーセッションリプレイおよび分析ツールです。8,800を超えるスターを持つ人気リポジトリです。このプルリクエストには新機能、複数のリファクタリング、古いコードの削除があり、AIが要約しています。

特に、PRの終盤で行われる「codebase verification」機能に注目します。

AIは古いメソッド(GetHandler)への参照を検出し、「Router構造体でメソッド名をbGetHandlerへ変更した後も、すべての参照が更新されているわけではない」ことを発見します。更新後の関数名は修正が必要なタイプミスだった可能性も、意図的な名前変更を一貫して適用できていなかった可能性もあります。いずれにしても、コードベースへ破壊的変更が入り込む可能性がありましたが、AIが発見しました。
AIコードレビュアーを使うことで、メンテナーはクリーンで一貫性があり、機能するコードベースを維持するため、これまで以上の支援を得られます。上記の例から、AIが要約、ウォークスルー、対話型コードレビュー、一貫性の確保で開発者とメンテナーを支援できることが明確にわかります。また、PRがメンテナーへ届く前に、多くの作業を完了できることもわかります。
AIコードレビュアーは、次の方法でオープンソースプロジェクトへ大きな変化をもたらします。
結局のところ、重要なのは時間管理と専門知識です。OSSプロジェクトが拡大すると、コントリビューションと複雑さの両面で管理するものが増えます。さらに、AIが日常的で反復的な作業を処理することで、プロジェクトのメンテナーは、機能開発、バグ修正、コミュニティとの交流など、より戦略的な作業へ人的リソースを割り当てられます。ボランティアの時間をより効率的に使い、プロジェクト開発を加速できる可能性があるため、あらゆるプロジェクトにとって効果的な戦略です。
GitHub MarketplaceにはさまざまなAIコードレビュアーがあり、その多くは完全に無料で利用できます。オープンソースプロジェクトへ導入するには、次の手順に従います。
AIコードレビュアーを使うことで、プロジェクトのメンテナーはコードチェックの手作業による負担を大幅に減らし、より高い品質とセキュリティの基準を確保できます。貴重な時間を節約しながら、開発プロセス全体を強化します。最終的に、オープンソースプロジェクトをより堅牢で信頼性の高いものにできます。
完全に無料のAIコードレビュアーを使ってみませんか。CodeRabbitをお試しください。詳しくはCodeRabbit.aiをご覧ください。