モデルにRobloxエンジニアのような思考を教えることで、AIコードの承認率を2倍にした方法
ドメイン対応コードインテリジェンス

誰もが次なる画期的なAIモデルに期待を寄せますが、Roblox社内でAIツールの有効性を倍増させた秘訣は、新しいモデルではありませんでした。 それは、当社のコードベースの歴史の中に埋め込まれていたのです。長年にわたるコードとドメインエキスパートによるレビューを活用することで、1万件のプルリクエスト(PR)セットにおいて、AIが生成したPR提案の承認率を約30%から60%以上に引き上げ、同期間中にエージェント型コードクリーンアッププロジェクトの評価精度を90%以上に高めました。
AIの品質ギャップを埋める
業界全体で、コーディング時間の50%から60%がソフトウェアのメンテナンスに費やされています。1 Robloxも例外ではありません。
理論上、要件が明確に定義され、問題領域が限定された反復的な保守タスクは、AIによる自動化に最適な対象です。しかし実際には、当社のAIアシスタントは評価精度とエンジニアによる受け入れにおいて苦戦していました。
Robloxにおける問題は、能力ではなく「文脈」にあります。汎用モデルには、Robloxのエンジニアリングが歩んできた20年の歴史がありません。過去3年間にマージされた70万件のプルリクエストを目にしたこともなければ、最も経験豊富なエンジニアたちがコーディング基準を定義し擁護する170万件のコードレビューコメントから学んだこともないのです。
こうした歴史を無視するAIアシスタントは、世界トップクラスのエンジニアの信頼を得ることができません。Robloxのエンジニアの半数がAIアシスタントを採用しているにもかかわらず、人間によるレビューを経て受け入れられるAI生成の提案はわずか20%程度に留まっています。四半期ごとのエンジニアリング生産性調査も、この現実を裏付けています。 エンジニアは、AIが生産性に与える影響を5点満点中4.02と評価していますが、AIによるコード品質への信頼度はわずか3.09にとどまっています。要するに、AIは役立つものの、特にレガシーなC++やより複雑なコード領域においては、依然として信頼は限定的です。
この認識のギャップを埋めるため、私たちはRoblox独自のエンジニアリング履歴を基盤とし、専門家の模範例と整合させ、厳格な評価を通じて検証された「エージェント型コードインテリジェンスプラットフォーム」に投資しました。このプラットフォームは、単にコードの提案を生成するだけでなく、Robloxエンジニアの組織的な知見を反映して反復的に改善されるよう設計されています。
Robloxのエンジニアリング経験の「ベスト」から学ぶ
Robloxのエンジニアリングコーパスは、20年近くにわたるコミット、設計ドキュメント、本番環境のテレメトリを網羅しており、当社のシステムがどのように進化し、エンジニアが困難な問題をどのように解決したかを捉えた、他に類を見ない豊富なデータセットです。
このコードインテリジェンスプラットフォームは、そのデータを構造化されたナレッジグラフへと変換することを目指しており、これは大きなエンジニアリング上の課題です。大規模な多言語環境において、コードは単なるテキストファイルではありません。それは、ビルドターゲット、C++テンプレートのインスタンス化、動的なLua依存関係が織りなす複雑な網の目のようなものです。単にテキストを解析するだけでは不十分であり、システムはコードベースそのものに埋もれた、当社の独自のアーキテクチャに特有の深い意味論的関係を理解しなければなりません。
もう一つの課題は、トレースと時間的整合性です。相互接続されたシステム全体を推論するためには、エージェント型システムが静的なコードリポジトリとノイズの多いランタイムテレメトリを結びつけ、コードベースが進化し続ける中でも、数百万もの本番環境のシグナルを、それらを生成したコードの正確なバージョンに紐づける必要があります。

この課題を解決するため、当社の戦略は、バージョン管理、ビルドグラフ、および実行時テレメトリを、構文、意味、および関係を保持したハイブリッドな記号・ベクトル表現に統合することです。これにより、コードインテリジェンスプラットフォームは、シニアエンジニアと同様にコードを理解できるようになります。つまり、コードを孤立したテキストファイルとしてではなく、設計の根拠、トレードオフ、およびパフォーマンスデータによって形作られる相互接続されたシステムとして捉えるのです。
模範例のアラインメントによる専門家の知見の抽出
真の専門知識は、パターン、レビューコメント、コミット履歴、そして微妙なコードの慣用表現の中に隠されています。コードインテリジェンスは、模範的なアラインメントエンジンを通じてこの暗黙の知恵を引き出し、エンジニアが理想的な実装やレビューの根拠となる「ゴールド」な例をキュレートできるようにします。
以前は、経験豊富なエンジニアが毎週何時間もプルリクエスト(PR)のレビューに費やし、高頻度ループ内でのブロックするFetchData呼び出しを繰り返し指摘していました。このパターンは意味的には正しく見えますが、Robloxのスケールでは深刻なレイテンシを引き起こします。もしその専門家が不在だったり、エラーを見逃したりした場合、その知識が反映されず、アンチパターンが本番環境に紛れ込み、コミュニティにサービス停止を引き起こす可能性がありました。
アラインメントエンジンを使用すれば、そのエンジニアは自身の判断を自然言語の模範例としてコード化できます。これは、コードパターン(「何」)と推論(「なぜ」)を組み合わせた構造化された定義です。これにより、システムはブロックする呼び出しを自動的に検出し、フラグを立て、レイテンシのリスクを説明し、非同期処理のベストプラクティスに関する内部ドキュメントに直接リンクします:
高頻度ループ内でのブロッキングは、レイテンシの増加とスレッドの枯渇につながります。非同期タスク内で `FetchData` 呼び出しが行われた場合、レイテンシとスレッドの枯渇について作成者に警告してください。タスクがすでに待機済みである限り、`FetchData` は問題ありません。非同期のベストプラクティスへの直接リンクを提供してください:internal_guidance/async。 |
これは、エンジニアが長年の経験を通じて得た貴重な知見を効果的に体系化したものです。システムは、単発のレビューコメントを、永続的で自動化された安全装置へと変換します。
「このアラインメント・エンジンの真の強みは、単にコードの品質を向上させるだけではありません。メンターシップをスケールさせる点にあります。私たちは、最も経験豊富なエキスパートたちの専門知識と直感を、プラットフォームそのものに組み込んでいます。それはまるで、Robloxのシニア・ドメイン・エキスパートが、毎日一日中、あなたとペアプログラミングをしているようなものです。」 —トム・クニッチ、シニア・テクニカル・ディレクター
しかし、当社の専門家たちも多忙を極めているため、重要な洞察をすべて思い出し、書き留めるよう依頼することは、せいぜい時間がかかり、情報も失われがちなプロセスです。では、Robloxでの勤務期間を通じて、彼らが最良のアドバイスを確実に記録できるようにするにはどうすればよいでしょうか?
その答えはすでにそこにあるのです。彼らの綿密なコードレビューのコメントに記され、本番環境にデプロイされるすべてのプルリクエスト(PR)に刻まれているのです:

過去のPRコメントをパイプラインに投入し、Robloxの体験から最も価値の高いテーマを抽出・精選します。当初、ノイズの多いデータには称賛や誤字修正といった実用性のないコメントが混在しており、一方で価値あるフィードバックは文脈に大きく依存する略語で記述されていることが多々あります。例えば、「ここで新しいパターンを使用」といったメモは、具体的なファイルや差分を理解していなければ意味を成しません。システムは、こうした具体的なやり取りを、再利用可能で一般化可能なルールへと変換する必要があります。
この課題を解決するため、私たちは人間の介入なしに数千件のプルリクエスト(PR)にわたって繰り返されるテーマを検出する多段階アルゴリズムを採用しています。システムは過去のコメントをベクトル空間に埋め込み、貪欲クラスタリングを用いて関連するフィードバックの近傍を見つけ出し、LLM(大規模言語モデル)による精緻化を適用して、それらを高価値なパターンに統合します。
その結果、出現頻度や異なるレビュアーによる引用頻度に基づいて優先順位付けされた、候補となる模範事例(または知見)のランク付けリストが生成され、元のコメントへの引用情報も完備されます。 その後、当社のドメインエキスパートが候補をレビューし、必要に応じて編集を行い、どの項目をコアなベストプラクティスとしてナレッジベースに昇格させるかを決定します。このパイプラインの最初のプレビュー後、リポジトリのリーダーたちは、自分たちが重視するトピックが重要な指針として浮上しているのを見て大いに期待を寄せ、直ちに自身のリポジトリを分析対象として登録したいと希望しました。

最後のステップはアラインメントエージェントです。これは、すべての変更を標準ナレッジベースと照合することで、人間のエンジニアとAIコーディングエージェントの両方を支援します。この柔軟な評価は、ソフトウェア開発ライフサイクル全体を通じて適用可能です。コーディング時、マージ時、さらにはナレッジベースの拡大に伴いRobloxのコードベースを自律的に整備する継続的改善エージェントにおいても活用できます。
このコンテキスト学習を活用してAIの挙動をRobloxの基準に定着させることで、あるAIコーディングエージェントのゴールデン評価データセットにおける合格率が84%から100%へと飛躍的に向上しました。私たちは単にRobloxのAIにコーディング方法を教えているだけでなく、Robloxのエンジニアがどのように考えるかをAIに教えているのです。
ネガティブシグナルからの学習
模範コードとの整合性によりコードベースの品質基準は大幅に向上しましたが、私たちの最終目標は、AIが提案したコードの初回パスが、最も経験豊富なエンジニアの成果物と同等の信頼性を獲得する段階に到達することです。そのため、却下されたAIの提案、失敗したリファクタリング、あるいは回帰を引き起こしたマージなど、あらゆる事例を、システムにフィードバックできる高価値なシグナルとして活用しています。これにより、エージェントが自らのミスから継続的に改善し、学習するためのパイプラインが構築されます。
ネガティブな結果は、ドメインの専門家によって、詳細な理由付け、思考の連鎖、および失敗に関する追加のコンテキストと共にフィルタリングされ、ラベル付けされます。このデータはその後、意味的に埋め込まれ、検索用にインデックス化されます。当社のコードインテリジェンスプラットフォームが新しい出力を提案する際、このデータに対して意味検索を実行し、過去のミスやレビューアからのフィードバックを呼び起こすことで、それらの繰り返しを回避します。
この閉ループ型のフィードバックにより、各コードレビューが構造化された学習データへと変換され、敵対的学習や批評ベースのトレーニングを通じて、エージェントの将来の挙動が継続的に洗練されていきます。
堅牢な評価フレームワークの構築
信頼は、測定から始まる信頼性が高く予測可能な行動を通じて築かれます。当社は、エージェントのパフォーマンスを長期的に追跡するための専用の評価システムを設計しました。

このフレームワークには以下が含まれます:
- タスクレベルのベンチマーク:リファクタリング、テスト、バグ修正などの数千件に及ぶRobloxエンジニアリング活動における精度と再現率。
- シミュレーション用データセット:再現可能な評価を実現するための、確定的な結果を持つ合成プルリクエスト。
- ヒューマン・イン・ザ・ループ・パネル:AIの出力とゴールドスタンダードの実装を専門家が比較評価します。
- 実行フレームワーク:エージェントの改善をマージする際、関連する評価を並列化し、マージ前の継続的インテグレーション(CI)スイートの一部として実行することで、エンジニアは自身の変更に対して高い確信を持てるようになります。
- 経時的なメトリクス:マージ後のリグレッション、リバート頻度、およびレイテンシの変化をリリースごとに追跡します。
- 広範な可観測性:エージェントの活動を自動的にトレースおよび可視化し、エージェントとRobloxの他の部分との関連性を把握するとともに、オンラインおよびオフラインの評価にシームレスに反映させる。
このシステムは、時間の経過に伴うパフォーマンスの変化を正確に追跡するエージェント品質スコアを生成し、エージェントのリビジョンやモデルバージョン間の標準化された比較を可能にします。模範的なアラインメントと完全な評価スイートを導入して以来、あるRobloxコードインテリジェンスエージェントのPR提案の受け入れ率は、10,000件のPRセットにおいて約30%から60%以上に改善しました。これは、信頼性が高く、ドメインに適合したパフォーマンスの初期的な兆候です。 同様のプロセスを通じて、当社のフィーチャーフラグクリーンアップエージェントの全体的な精度は46%から90%以上に向上しました。
今後の展望:あらゆるツールに専門家の知見を織り込む
MCPとツールラッパーのレイヤーを構築し、コードインテリジェンスプラットフォームを特定のタスクからRobloxのコードベースを健全に保つシステムへと進化させることで、既存の社内システムの有用性を高めています。
私たちは、実行時のコンテキストや専門家の判断といった、従来はスケールさせることが難しかった知識が、あらゆるツールやワークフローに織り込まれるエンジニアリングの未来を構想しています。コードインテリジェンス、模範的なアラインメント、そして可観測性が一体となることで、私たちは持続的なレバレッジを解き放ちます。それは、品質の向上、デリバリーの高速化、そしてより健全で進化し続けるコードベースです。 長期的な目標は、すべてのエンジニアに組織の記憶の力を与え、すべてのチームに迅速なリリースへの自信を持たせ、そしてすべてのエンジニアがメンテナンスではなくイノベーションに集中できる自由を手にすることです。


