Dev & コード Aug 24, 2026ブックマークに追加

Cursorは、AIコードエディタが大規模なコードベースで正常に動作するために、Gitの真のスケーラビリティ問題を解決しなければなりませんでした。彼らが行ったことと、その理由について、シニア開発者にとってなぜ重要なのかを紹介します。
数百万行に及ぶコードベースを想像してみてください。これは大手テック企業、成熟したオープンソースプロジェクト、または急成長したスタートアップのモノレポで見られるような規模です。Gitの動作が遅くなり始めます。git statusが数秒かかり、日常的な操作がストレスになります。そこにリアルタイムでリポジトリの状態を理解して提案をコンテキスト化する必要のあるAIツール(Cursor)が加わると、問題は深刻になります。
Cursorはまさにこの問題に直面し、The RegisterがGitのスケーラビリティの限界をどのように回避したかを詳しく説明しています。
Gitは2005年にLinus TorvaldsによってLinuxカーネルを管理するために設計されました。これは人間のモデルに基づく大規模なコードベースでした。開発者がコミット、ブランチ、マージを行うというものです。Gitはリポジトリの状態を毎分数十回、数百回読み取り、リアルタイムで提案を生成する必要のあるAIツール向けに設計されていません。
既知のボトルネックは以下の通りです:
.git/indexファイルは、たとえ1つのファイルが変更された場合でも、ステータス操作のたびに完全に再読み込みされます。The Registerが明らかにしたCursorのアプローチは、2層アーキテクチャに基づいています。クラウドオブジェクトストレージのS3をリポジトリの真実のソースとし、高速NVMe(高性能SSD)上のローカルリポジトリをレイテンシに敏感な操作用として使用します。
具体的には、Cursorはスケーラビリティの限界を抱えるローカルGitリポジトリ上で直接AIを動作させるのではなく、S3に正規のコピーを維持し、高速なレスポンスが求められる操作にはローカルNVMeキャッシュを使用します。2つの層間の同期は、Gitインデックスの完全読み込みを最小限に抑えるように最適化されています。
これはシニア開発者にとっておなじみの問題です。標準的な抽象化はある程度機能しますが、その先に進むと、下層のレベルに降りる必要があります。この場合、Gitの呼び出しを最適化するのではなく、ストレージモデルを完全に再考することです。
Cursorのソリューションは彼らのツールを超えて影響を与えます:
CursorはGitのスケーラビリティの限界を回避するために、S3を真実のソースとして、ローカルNVMeリポジトリをレイテンシ向けに使用する2層アーキテクチャを採用しています。大規模なコードベースでコード解析ツールを開発する場合、このパターンは検討に値します。
本記事は人工知能により作成され、人間の編集管理のもとで校閲されています。