LIFULL Creators Blog

LIFULL Creators Blogとは、株式会社LIFULLの社員が記事を共有するブログです。自分の役立つ経験や知識を広めることで世界をもっとFULLにしていきます。

内製AIコードレビューActionsの導入

エンジニアの小林です。

LIFULLで社内ABテスト基盤を開発しています。その開発の中で社内の生成AI基盤「keelai」を活用した取り組みを紹介します。

www.lifull.blog

LIFULLではkeelaiという社内向けの生成AI基盤プロジェクトを運用しており、今回はこのkeelaiを利用したコードレビュー用のGitHub Actionsを実装した事例を紹介します。

www.lifull.blog

内製AI Agentによるコードレビュー

GitHub Actionsを活用して実現したAIレビューのワークフローは以下の通りです。

コードレビューの概要

GPTやClaudeなどのAPIを利用せず、内製AI Agent「keelai」を活用した理由は以下のとおりです。

  1. 社内固有の知識を活用可能 - 社内ドメイン知識を持ったレビューが可能です
  2. 継続的な改善サイクル - レビューActionsとAI基盤の両方を社内で改良できます
  3. 柔軟なモデル選択 - 用途に応じて複数のAIモデルを使い分けるなど高度なカスタマイズが可能です

以上の点から、内製のAI Agentを利用することに価値があると思っています。 keelaiは社内向けアプリケーションとしてSlack botとしての利用と各システムからAPIとして呼び出せる2つのインタフェースを提供しています。 今回の記事では、GitHub ActionsからAPIとして呼び出して活用する方法に焦点を当てています。

弊社ではkeelaiを中心にして、社内ドキュメント参照機能や営業支援など幅広い活用を進めています。 この社内エコシステムと各種モデルの進化を組み合わせることで、LIFULLの技術スタックやドメイン知識に最適化されたレビューを期待しています。

keelaiについての詳細は以下を御覧ください。

www.lifull.blog

開発の背景

端的に述べると「人が足りなかった」からです。

当時所属しているチームの開発を行いながら、サブタスクとしてABテスト基盤のデモ実装を行っていました。

同期エンジニア3名でフロントエンド、バックエンド、集計バッチの3領域を得意分野で分担実装していましたが、以下の課題がありました。

  • 本業務の合間を縫っての開発作業
  • チームメンバーの得意分野が異なるため、不得意分野のレビューに時間を要する
  • すべての変更を人間が詳細にレビューする時間的余裕がない

そこで、生成AIを使って最低限の品質維持のヒントになるようなレビューをできないかと考えました。 2024年秋ごろから話題になっていたCode Rabbitという生成AIレビューのSaaSを個人開発で利用していたこともあり、技術的な好奇心からも実装に踏み切りました。

実装プロセス

2024年3月時点でGitHub ActionsからkeelaiのAPIを呼び出せる環境が整備されていました。 当時所属していたチームで簡単な実験を行いました。

サンプルコードのレビュー実験

しかし先述した通り、個人的にCodeRabbitを利用していたため物足りなさを感じていました。 CodeRabbitの特徴としては以下の点が挙げられます。

  • 日本語によるレビューコメント
  • コード内インラインコメント機能

ただのコメントで複数のレビューが並べられてしまうと、どのファイル・どの行に対するレビューコメントなのかが追いづらくなってしまいます。 そのため、インラインコメントでレビューが返ってくることは被レビュー者にとって大きなメリットです。

そこでOSSを利用して手早く高機能なレビュー機能を用意することにしました。 Code Rabbitが旧バージョンのAIレビューシステムをai-pr-revewerとしてMITライセンスで公開していたため、これをフォークしてkeelai対応版として再構築しました。

keelaiは社内からの利用を前提とした認証になっています。 そのため、エンドポイントとAPI Keyの組み合わせでは利用できず、認証を含むクライアントを自作して差し替え、社内リポジトリで利用できるActionsとしてリリースしました。

社内普及まで

2024年8月にリリースを行い、ABテスト基盤チームの中で利用を開始しましたが、この時はまだgpt-4oがリリースされたばかりのころでした。 micro serviceが大量に存在する弊社全体での利用はコスト面でまだ現実的ではないとして数個のリポジトリで利用されるにとどまりました。

しかし、2025年2月にgpt-o3-miniがリリースされ、安い!賢い!早い!の3拍子であったため、弊社のkubernetes基盤KEEL用CLIであるkeelctlで全社配布することになりました。

keelctlについては以下を参照ください。

www.lifull.blog

機能

現状

PR要約

PRの内容を要約することで、レビュー者の認知負荷を下げます。

PRの要約

インラインレビューコメント

コード内の該当箇所に直接コメントを付与し、メンションを付けて返信するとチャット形式で対話可能です。

インラインレビューコメント

社内の評価

実際の運用から得られた評価をいくつか紹介します。

指摘内容:タイムアウト実装の漏れ

「リリース後の運用中に発生した障害で気付くことが多いものなので助かりました」

指摘内容:200レスポンス処理の重複

「人間が指摘するときは手間な気分になるので機械的に指摘してもらえた方が楽」

指摘内容:Goの型キャスト

「Goでinterface型の変数をキャストして利用する際の注意点を指摘してくれました。Goに慣れてない人でも危険なコードに気付けるのが良いと思いました!」

今後の展望と課題

LIFULLにおけるAIコードレビューの実装までの流れと、現状の機能について紹介しました。 現在のシステムをさらに発展させるため、以下の機能拡張を計画しています。

  1. リポジトリ固有のコーディング規約対応

    • 各チームのスタイルガイドに沿ったレビューの実現
    • リポジトリごとの設定ファイルによるカスタマイズ
  2. 言語・フレームワークに特化したレビュー

    • 各技術スタック特有の「ベストプラクティス」に基づく指摘
    • 新しいバージョンのAPIや推奨パターンの提案
  3. クロスファイル分析

    • 複数ファイル間の整合性チェック
    • アーキテクチャレベルの設計レビュー

この記事ではAIによるコードレビューについて触れましたが、keelaiや関連プロダクトは社内コードがオープンであるため、新機能を思いついたらすばやく拡張できる環境にあります。 KEELチーム(プラットフォーム)、keelaiチーム、プロダクトチームの有志が一緒になって自分たちのニーズを考え、既存コードを活かして最小限の修正で対応可能な環境が整っています。

最後に、LIFULLではともに成長できるような仲間を募っています。 よろしければこちらのページもご覧ください。

hrmos.co

hrmos.co