進化するコードレビュー サイゲームスが開発した社内向けAIツール「Lyra」とは

生成AI技術の応用がゲーム開発においても加速する今、サイゲームスでは社内向けAIコードレビューツール「Lyra(ライラ)」を開発し、すでに複数プロジェクトで運用しています。
「Lyra」は、通常はゲーム運用を支える基盤づくりを担うインフラチームが、新たな挑戦の一つとして開発したものです。今回は開発に携わったダイキに、開発の経緯やその特徴について語ってもらいました。

インフラエンジニアダイキ
gutenberg-examples
クラウドベンダーやゲーム会社でフロントエンドからバックエンドまで幅広くエンジニア経験を積み、2020年にサイゲームスへ合流。インフラセクションのTexチーム(※)にて、プロジェクト共通の基盤ツール開発や整備に従事している。

※ Texチーム……チームのSRE、共通基盤、開発ツールの提供を通じて、サービスの信頼性と開発組織全体の生産性を向上させるチーム。

AIコードレビューツール「Lyra」開発の経緯

「Lyra」はどのようなツールなのか、概要を教えてください。

前提として、サイゲームスのエンジニアは開発をする際に自分が書いたソースコードを他のスタッフに確認(レビュー)してもらってから組み込むようにしています。「Lyra」はGitHubまたはGitHub Enterprise上でプルリクエスト(※)を作ると、AIが自動でコードの差分を見て良い点や改善点などをレビューしてくれるツールです。

詳しくは後ほど説明しますが、担当者の作業の負担を軽減するため、レビューの要約を共有できる機能などが備わっています。また、レビューの基本機能だけでなく、様々なカスタムコマンドにも対応しています。

※ プルリクエスト……コードの追加や変更を行う際、直接編集するのではなく、まず他の人にレビューを依頼し、問題がなければ本流のコードベースにマージ(統合)するという機能

▲コードレビューを実行した際のフロー

開発経緯について教えてください。

2023年頃にOpenAIのGPT-4が公開され、世界中で生成AI技術に注目が集まっていた中で、社内でもAIテクノロジーという部署を中心に生成AIの活用が議論されてきました。セキュリティや倫理面での懸念から、タイトルのソースコードを社外のサービスで分析することは難しかったものの、直接製品に関わらない用途については前向きに運用を模索し始めました。その流れから、コードレビューツールにチャレンジしてみようという話になりました。

当時から既製のコードレビューツールはありましたし、そう遠くない時期に優れた他社サービスが出てくることは予測できました。ただ、すぐにAIによるコードレビュー環境を実現したいということに加えて、社内の各プロジェクトには、プルリクエストの要約フォーマットやレビュー方針など様々な独自ルールがあるため、それらに対応できるようカスタマイズ可能なツールを自社で開発することになりました。

各プロジェクトのニーズをヒアリングした結果、我々としてはなるべく早くリリースして運用を始めたいと考えました。2024年の2月初旬あたりからリサーチを始めて、4月頃にはおおよそ形になっていましたね。最初はプレビュー版を用意し、希望するプロジェクトから順にテスト運用を始めました。

テスト運用は上手くいきましたか?

いえ、当初はAIの誤回答(ハルシネーション)が多発したため、補助的な運用にとどめていました。でも、やはり本番のレビューに使いたいという各プロジェクトからの要望を受けて改良を重ね、かつその間により優れたGPTモデルが出てきたこともあり、2024年の11月頃に本番環境としての正式運用を始めました。運用開始当初は約10プロジェクトでスタートし、そこから次第に増えて、現在はその2倍以上のプロジェクトに利用されています。

「Lyra」の名称の由来は?

サイゲームスのAIツール群はタウラス(牡牛座)やキグナス(白鳥座)など星座にちなんで命名しており、「Lyra」もその一つです。プログラムの「コード」と楽器の弦(コード)をかけて「琴座」に、という遊び心からラテン語表記の「Lyra(ライラ)」と名付けました。 琴座が象徴する「調和」のように、Lyraはコードレビューのプロセスに調和とバランスをもたらすことを目指しています。

▲Lyraのアイコン

「Lyra」のシステム構成とコードレビューの流れ

「Lyra」はどのようなシステム構成になっていますか?

「Lyra」はGitHub Apps(※)として実装していて、所定の権限を付与されたユーザであれば利用できます。Azure OpenAI APIを用いてソースコードに対するレビューを自動生成します。レビュー結果を社内向けチャットツールの「Slack」やゲーム開発の進捗管理で使用する「Jira」、社内向けのナレッジページ「Confluence」と連携することもできます。

※ GitHub Apps ……プログラムのコードを管理する「GitHub」の機能を拡張するツール。作業の自動化や外部サービス連携などを可能にする

コードレビューで「Lyra」を利用する際の具体的な流れについて教えてください。

まず準備段階として、コードレビューのルール設定を行います。基本的なレビューのルールは、我々がテンプレートとして用意したTOML形式の設定ファイルを編集することで、プロジェクトごとにカスタマイズできるようになっています。

例えば、基本的に自動レビューをしない設定にしていても必要なタイミングで手動でレビューを走らせることができますし、人がレビューした結果を要約するところだけ「Lyra」に任せるなど、運用の仕方はプロジェクトによって様々です。AIがレビューした結果は、プロジェクトの運営体制に応じてSlackやJira、Confluenceなどに投稿されます。「Lyra」はレビューを補助する役割で、プルリクエストに対する承認はあくまでレビュー担当者が行います。

カスタマイズではどのようなことができるのでしょうか?

AIモデルの種類や細かな設定値(パラメーター)も自由に設定できます。出力の形式を指定したり、セキュリティ面を重視したいといった方針を反映させたり、チューニングのレベルを調整したりと、かなり細かなところまでカスタマイズできるように工夫しています。使い方のマニュアルはConfluenceに共有し、色々なTipsも公開しています。

我々も開発時には想定していませんでしたが、プロジェクトによってはカスタマイズ機能を使ってレビューに遊び心を持たせているケースもあるようです。例えば、ゲームに登場するキャラクターのような口調で、厳しい指摘の中にも愛情を込めたツンデレ風のレビューコメントを設定しているチームもあります(笑)。

▲カスタマイズした「ツンデレ風コードレビュー」の例

「Lyra」は特定のレビュー担当者のみが使うことを想定しているのでしょうか?

使う担当者や場面はプロジェクトごとに決められ、縛りはほぼありません。現状はGit FlowやGitHub Flow(※)を採用しているプロジェクトが多いため、コードレビュー担当者(レビュワー)が使うことが多いです。しかし、トランクベース開発のようにチームのスタッフ全員が使うこともあり、プロジェクトに応じて柔軟に運用可能です。

※ Git Flow/GitHub Flow……コードを書き進めるときのルールの一つ。いずれもコードを個別に書いて提出し、レビューして、本流にマージ(統合)というフローをたどる。一方、「トランクベース」は基本的に全員が同じブランチに対し、細かくレビューしてマージしていくフローとなる

また、「差分をまとめて説明する」という長所を活かして、レビュー以外の用途で活用しているケースもあります。例えば特定のライブラリのバージョン差分を抽出して、社内のソフトウェア利用申請に必要な情報をまとめたり、危険なバージョンを警告してもらったりということにも役立っているようです。このように「Lyra」の活用方法は本当に自由で、各プロジェクトでの運用方針に委ねられています。

「Lyra」をリリースしてから、開発チームからの反響はいかがでしたか?

やはり、プルリクエストの内容を要約してくれるのがとても助かるという声をよく聞きます。これまではチームのレビュー方針に沿ってコードを分析し、担当者を気遣いながらも適切なレビューを返すという時間のかかる作業をすべて自分たちで行う必要がありましたが、「Lyra」がその大半を担ってくれて、かつ非常にわかりやすく情報をまとめてくれますので、大幅な時間短縮に繋がっているようです。

▲要約機能の例

「Lyra」の展望とTexチームの将来

ダイキさんはサイゲームスに中途で合流したんですね。

そうですね、サイゲームスに合流して5年目になります。それまではクラウド事業者やゲーム事業者などで、Webサイト構築をはじめとしたフロントエンドからバックエンドのサーバー開発まで幅広く携わってきました。元々ゲームが好きだったのでゲーム業界にはすごく興味があったんです。

ダイキさんの所属している部署について、どんなことをしているのか教えてください。

大きな括りでは、インフラチームに所属しています。開発チームが使うツール群のインストールやセットアップ管理、セキュリティ管理などを担う部署ですが、その中には物理サーバーチームやクラウドサーバーチームなど様々なチームがあり、私はプロジェクト共通の基盤ツールを開発・整備するTexチームで活動しています。

カッコいい名前のチームですね!インフラ部署の中に基盤ツールを開発するチームがあるのは珍しいと思いますが、Texチームは以前からあったんですか?

そうですね、私が合流する前からあり、発足15年目になります。他社さんと情報交換するときにも「そういうチームがあるのは良いですね」とよく言われますし、インフラの中でコードを書いて開発するような部署があるのは珍しいと思います。実際、色々なことにチャレンジできるのでとても面白いです。

Texチームに所属しているのは何名ですか?また、「Lyra」の開発体制について教えてください。

現在Texチームには7名いて、1名はインフラチームのサブマネージャーです。他のスタッフは基本的にインフラ本来の日々のタスクをこなしつつ、やりたいことがあれば自由に手を挙げて挑戦できる環境ですね。本来、「Lyra」のようなAI技術を活用するツールは別の専門部署が担うものではあるのですが、今回は私が希望して、Texチーム内の2名で開発を行っています。

「Lyra」は本番環境での運用がますます増えてくると思いますが、今後はどのように進化させたいと考えていますか?

現在、運用に際して必要な機能はおおよそ揃っていて、いま最もよく使ってもらっている『Shadowverse: Worlds Beyond』をはじめ、各プロジェクトから寄せられる要望には大体対応できている状況です。タグ付け機能をはじめ、まだ実験段階で公開していない機能もいくつかあるので、今後そのあたりを拡充していきたいです。

また、現在「Lyra」が対応しているのはGitHubやGitHub Enterpriseのみですが、今後は自社開発のゲームエンジンであるCyllista Game Engineとの連携も見据えてPerforceなど他の開発環境にも対応させたいと考えています。これから出てくる新しいGPTモデルにもどんどん対応していきたいです。

「Lyra」の他にAIを活用したチャレンジの予定はありますか?

例えば、インフラにはタイトル開発チームへのオンコール(※)対応業務があります。基本的にオンタイムで対応しなければならないし、担当者だけでなくプロジェクト側とも連絡を取り合わなければならず、なかなか労力がかかります。そのあたりに上手くAIを導入したいですね。できるだけ初期対応をAIがカバーして、人が直接対応する業務を軽減できたら良いなと思っています。

※ オンコール……インフラやシステムの障害発生時などに技術者が時間外に待機し、迅速に問題解決を行うこと

それは多くの人が助かりますね!最後に、サイゲームスへの合流を検討している方に向けてメッセージはありますか?

サイゲームスは、「最高のコンテンツを作る会社」というビジョンに沿っていれば、所属部署の前例にとらわれずにやりたいことを提案して取り組める会社です。

特にインフラチームは調査や学習を目的とした外部カンファレンスへの参加も認められており、タスク管理や時間配分も主に個人の裁量に委ねられています。私たちは普段から開発プロジェクトへの導入に向けた技術調査や検証に多くの時間を費やしていますし、やらなければならないことは多いですが、仕事を抱えすぎてやりたいことができないという環境ではありません。挑戦したいことがあれば会社や部署が必要なチーム体制を整えて、後押ししてくれます。

また、社内の風通しも良く、色々な技術分野についてみんなで情報交換しながら楽しく探求していく雰囲気ができています。必ずしもゲーム業界の経験が必要ではないと思いますが、ゲームが好きで、熱意のある方とぜひ一緒に働きたいと思っています。「Lyra」のようなAIを活用したチャレンジにあたっては、やはりAI分野に明るく、導入に向けて積極的なアイディアを共有できる方と一緒にお仕事したいですね。


以上、AIコードレビューツール「Lyra」を開発したダイキに、ツールの全容や開発の経緯、チームの様子について語ってもらいました。

サイゲームスでは現在一緒に働く仲間を募集しています。ご興味を持たれた方はぜひご応募ください。

インフラエンジニア/東京の募集要項 AIエンジニア(自然言語処理)/東京