CodeRabbit logoCodeRabbit logo
エンタープライズカスタマー価格表ブログ
リソース
  • ドキュメント
  • トラストセンター
  • お問い合わせ
  • FAQ
ログインフリートライアルを開始
CodeRabbit logoCodeRabbit logo

リソース

ドキュメント変更履歴ブログ主な機能トラストセンターエンタープライズよくある質問ホワイトペーパー

ナビゲーション

私たちについて販売サポートシステムステータス価格表カスタマー採用データ保護附属書パートナーシップスタートアッププログラム

プロダクト

プルリクエストレビューIDEレビューCLIレビュー

問い合わせ

サポートセールス料金表パートナーシップ

By signing up you agree to our Terms of Use and Privacy Policy

discord iconX iconLinkedin iconrss icon
footer-logo shape
利用規約プライバシーポリシー

CodeRabbit © 2024 2026

CodeRabbit logoCodeRabbit logo

リソース

ドキュメント変更履歴ブログ主な機能トラストセンターエンタープライズよくある質問ホワイトペーパー

ナビゲーション

私たちについて販売サポートシステムステータス価格表カスタマー採用データ保護附属書パートナーシップスタートアッププログラム

プロダクト

プルリクエストレビューIDEレビューCLIレビュー

問い合わせ

サポートセールス料金表パートナーシップ

By signing up you agree to our Terms of Use and Privacy Policy

discord iconX iconLinkedin iconrss icon

Aiコードレビューにおけるコンテキストエンジニアリングの技術と実践

by
Atsushi Nakatsugawa

Atsushi Nakatsugawa

Japanese,

July 17, 2025

1 min read

July 17, 2025

1 min read

  • コードレビューにおけるコンテキストエンジニアリングの本質
  • コンテキストエンジニアリングの最適解を探る
    • 1. AIエージェントの「ゴルディロックス問題」
    • 2. トークン単位での処理
    • 3. コンテキストウィンドウの制約
  • CodeRabbitのコンテキストエンジニアリング手法
    • リポジトリ・PR情報のインテリジェントな収集
    • 複数ソースからの知識統合
    • 戦略的なコンテキスト組み立て
    • プロンプトエンジニアリング
    • 検証エージェント
  • コンテキストエンジニアリングがレビュー品質に与える影響
    • 誤検知の削減
    • より深いアーキテクチャ洞察
    • ベストプラクティスの一貫適用
    • 継続的な学習と進化
  • 良いコンテキストエンジニアリングの重要性
Back to blog
Cover image

共有

https://incredible-friend-95c316f890.media.strapiapp.com/X_721afca608.pnghttps://incredible-friend-95c316f890.media.strapiapp.com/Linked_In_a3d8c65f20.pnghttps://incredible-friend-95c316f890.media.strapiapp.com/Reddit_feecae8a6d.png

他の記事を読む

Article Card ImageArticle Card ImageArticle Card ImageArticle Card Image

ユーザーにLlmモデルを選ばせるべきではない理由:「選択」が常にベストとは限りません

ユーザーに、LLMを選択するドロップダウンを用意するのは、しばしば正しいプロダクト判断に見えます。結局のところ、ユーザーにはお気に入りのモデルがあるかもしれませんし、最新リリースが出た瞬間に試したいと思うかもしれません。 問題が1つあります。各モデルが実際にどこで最も性能を発揮するのかを理解するために、定期的に評価(eval)やベンチマークを回しているMLエンジニアでもない限り、その選択はメリットよりもはるかに大きなデメリットを生みがちです。ユーザーが欲しいと思っているものを与えたつもりでも、結...

Article Card ImageArticle Card ImageArticle Card ImageArticle Card Image

Aiコードレビューツールを評価するための(本当に役立つ)フレームワーク

How to evaluate AI code review tools: A practical frameworkの意訳です。 ベンチマークは、常に客観性を約束してきました。複雑なシステムをスコアに落とし込み、競合を同じ土俵で比較し、数値に語らせるという発想です。 しかし実際には、ベンチマークが抽象的な意味での「品質」を測ることはほとんどありません。測っているのは、ベンチマーク設計者が何を重視するかを選び、そのテストがどのような制約やインセンティブの下で構築されたか に過ぎません。 データセ...

Article Card ImageArticle Card ImageArticle Card ImageArticle Card Image

CodeRabbit のAIコードレビューが NVIDIA Nemotron をサポート開始

AI Code Reviews now support NVIDIA Nemotronの意訳です。 TL;DR: フロンティアモデルとオープンモデルを組み合わせることで、コスト効率が向上し、レビューが高速化されます。NVIDIA Nemotron は、CodeRabbit のセルフホスト利用者向けにサポートされています。 CodeRabbit は、AIコードレビューで使用する大規模言語モデル(LLM)の構成において、NVIDIA Nemotron ファミリーのオープンモデルをサポートしたことをお...

The art and science of context engineeringの意訳です。

平凡なAIエージェントと卓越したAIエージェントの違いは、ひとえに「コンテキスト」にあります。

最近「コンテキストエンジニアリング」という言葉が話題になっています。2024年6月末、Shopify CEOのTobi Lutkeがこの話題に触れ、Andrej Karpathyも、優れたコンテキストエンジニアリングがAIアプリの差別化要因だと指摘しました。

CodeRabbitは、コンテキストの重要性を示す好例です。私たちは毎日、ユーザーのプルリクエストやIDE上で数万件のコードレビューを行っています。CodeRabbitの各レビューコメントは、レビュー対象のコードに関連する多様な情報源からコンテキストデータを収集し、さらに検証エージェントがその提案がPRやコードベース全体の文脈に合致しているかを再確認する、非線形なレビュー・パイプラインによって生み出されています。

コンテキストエンジニアリングは、単に一般的なコーディング規約にパターンマッチするだけのAIコードレビューツールと、プロジェクト固有のアーキテクチャやパターン、目標を深く理解し、実際に価値あるレビューを提供できるツールとの差を生みます。

コードレビューにおけるコンテキストエンジニアリングの本質

CodeRabbitが扱うコンテキストは、次の3つに大別できます。

  1. 意図:開発者やチームがコード変更で達成しようとしている目的。プルリクエストの目的、解決したい課題、期待する成果などが含まれます。

  2. 環境:システムの現状。ファイルの関係性、コード依存関係、プロジェクト構造、既存のパターンなど技術的な背景です。

  3. 会話:通常のLLMのマルチターン会話でやりとりされるチャットメッセージやツールの応答など、その他の情報です。

これらの要素が適切にバランスされAIに提示されることで、単なる構文エラーだけでなく、アーキテクチャの不整合やパフォーマンスのボトルネック、設計上の改善点まで指摘できるインテリジェントなコードレビュアーが実現します。

コンテキストエンジニアリングの最適解を探る

AIによるコードレビューのために適切なコンテキストを用意するには、いくつかの課題を乗り越える必要があります。ここでは、特に難しい3つの課題を紹介します。

1. AIエージェントの「ゴルディロックス問題」

  • コンテキストが少なすぎると、AIは不足した情報を推測し「ハルシネーション(幻覚)」を起こしやすくなります。

  • 不要なコンテキストが多すぎると、重要な情報が埋もれ、AIが本質から外れた部分に注目したり、情報過多で混乱します。

  • ちょうど良いコンテキストは、AIエージェントが正確なインサイトを得るのに必要な情報だけをノイズなく提供します。

2. トークン単位での処理

人間はドキュメント全体をざっと見て重要な部分を直感的に把握できますが、AIモデルはトークン単位で情報を処理し、すべてのテキストに同じ重みを与えます。PRの全コード変更をそのままプロンプトに入れると、AIが些細な点に注目し、重大な問題を見逃すこともあります。重要な変更を優先し、不要な部分は除外する工夫が必要です。

3. コンテキストウィンドウの制約

最先端のAIモデルでも、一度に処理できるテキスト量(コンテキストウィンドウ)には限界があります。特に大規模なコードベースや複雑なPRでは、戦略的なコンテキスト選択が不可欠です。

CodeRabbitのコンテキストエンジニアリング手法

CodeRabbitでは、これらの課題を解決し、常に高品質なコードレビューを実現するために、多層的なコンテキスト準備手法を開発しています。私たちのシステムは、AIの理解力を最大化するために、情報を収集・フィルタリング・構造化する高度な非線形パイプラインを採用しています。上記の図は、私たちがコンテキスト準備で活用している多様な情報源の一部です。

リポジトリ・PR情報のインテリジェントな収集

まず、プルリクエスト自体に関する最も重要な情報を抽出します。

  • メタデータ:PRタイトル、説明、影響範囲のコミットなど、変更の「なぜ」を特定するための基本情報を収集します。

  • 差分分析:インクリメンタルレビューでは、前回レビューからの正確な変更点を算出し、AIが新規・修正部分だけに集中できるようにします。

  • パスフィルタリング:生成ファイルや依存ファイルなど補助的なファイルを除外し、本当に重要なコード変更にAIの注意を向けます。

複数ソースからの知識統合

優れたコードレビューには、現在の変更だけでなく、より広い技術的・ビジネス的な背景理解が不可欠です。

  • 過去の学び:エージェントが過去のレビューから得た知見をベクトルデータベースに蓄積し、関連するフィードバックやユーザーの好みを再利用して、コメントの構成に反映します。

  • PR意図分析:PRの説明や関連Issueを解析し、変更の根本的な目的を抽出。CodeRabbitのレビューが開発者の目標と一致するようにします。

  • コードグラフ分析:コード依存関係をグラフ構造で表現し、ファイル間の関係性をAIが理解できるようにします。これにより、アーキテクチャ全体への影響も考慮したレビューが可能です。

戦略的なコンテキスト組み立て

必要な情報を収集した後は、AIエージェントが理解しやすい形でプロンプトを最適化します。

  • パッキングとソート:ファイルを複数のグループに整理し、基盤となる変更から依存先へと論理的な順序でレビューできるようにします。

  • 適応的な複雑度管理:ファイルごとに異なるAIエージェントを割り当て、複雑さや重要度に応じてレビューの深さを調整し、効率とコストを最適化します。

  • スマートなコンテキスト削減:コンテキストがサイズ制限を超える場合は、要約や分割によって最も重要な情報を残しつつ、範囲を縮小します。

プロンプトエンジニアリング

次の段階では、AIに最適な指示を与えるプロンプトを作成します。私たちのプロンプトは、コードとコンテキストの比率が1:1になるよう設計しており、コンテキストの重要性を物語っています。

  • レベルに応じたプロンプト:ファイルの複雑さや重要度に応じて、基本的なチェックからアーキテクチャ分析まで、異なる深さのレビューを行います。複雑度ごとに異なるプロンプトやモデルを使い分けます。

  • 構造化されたレビューガイドライン:明確な指示により、AIエージェントが状況ごとに最も価値あるフィードバックに集中できるようにします。過去の有用なレビューコメントのデータも活用します。

  • コンテキスト強化:プロンプトには、プロジェクトのコーディング規約やパターン、過去の知見も含め、AIがチーム固有のベストプラクティスに沿った提案を行えるようにします。

  • コンテキスト選択:前段階のエージェントによるコンテキスト準備の結果をもとに、最終的なノイズカットを行います。

検証エージェント

レビュー工程の最終段階では、AIによる品質保証の役割を担う「検証システム」が自動的にレビューコメントの妥当性をチェック・改善します。AIレビュアーが自信を持てない場合に発動します。

  • 発動条件:メインレビュアーがコメントを生成した際、確信が持てない場合は特別な検証リクエストをコメントに含めて検証を依頼します。

  • 証拠収集:検証システムは探偵のように、

    • 実際にシェルコマンドを実行して主張を検証

    • ウェブ検索で追加情報を収集

    • システムの知識データベースから関連情報を取得

  • 反復的な分析:一度だけでなく、複数回の調査を重ねて分析を深めます。各ラウンドが前回の結果を踏まえて進行し、徹底的な検証が行われます。

  • 意思決定:証拠をもとに、

    • 元のコメントが正しいと判断し解決

    • 人間による確認が必要(結論保留)

    • 問題が確定し修正が必要

    • 元のコメントが誤りと判断し撤回 のいずれかを決定します。

コンテキストエンジニアリングがレビュー品質に与える影響

私たちのコンテキストエンジニアリングパイプラインの高度化は、レビュー品質の向上に直結しています。

誤検知の削減

適切なコンテキストをAIに与えることで、開発者の時間を浪費するような的外れな提案や誤った指摘を大幅に減らせます。プロジェクト固有の慣習を理解し、意図的なパターンを問題として誤検知しません。

より深いアーキテクチャ洞察

コードの関係性やプロジェクト構造を把握することで、単なるリントやパターンマッチでは見抜けないアーキテクチャ上の問題も指摘できます。実際、多くのユーザーが「CodeRabbitがPRの変更による他の依存箇所への影響まで指摘してくれた」と評価しています。

ベストプラクティスの一貫適用

過去の知見やチーム固有の知識を取り入れることで、すべてのレビューでコーディング規約やベストプラクティスを一貫して適用できます。最近では、お気に入りのコーディングエージェントからコーディングガイドラインをインポートする機能も追加され、チームでの共有がより簡単になりました。

継続的な学習と進化

この手法により、レビューのたびにプロジェクト固有の知見が蓄積され、将来のレビューがさらに価値あるものへと進化します。

良いコンテキストエンジニアリングの重要性

コンテキストは、LLMの技術的要件にとどまらず、効果的なAIエージェントに不可欠な要素です。情報を丁寧に収集・フィルタリング・構造化・提示することで、CodeRabbitは単なるコードレビューにとどまらず、コードの全体像を深く理解し、開発者の生産性向上や堅牢なコード、チームの効率化に貢献します。現在のAIコーディングエージェントは「AIスロップ(粗雑なAIアウトプット)」を多く生み出しがちですが、こうしたアプローチがますます重要になっています。

AIコードレビューにおけるコンテキストエンジニアリングは、まだ始まったばかりです。私たちは今後も品質向上のために手法を磨き続けます。モデルの進化とともに、さらに多くのことが実現できるようになるでしょう。

コンテキストがレビューにどれほど影響するか、ぜひ14日間の無料トライアルで体験してください