GitHub Copilotアプリ、100万行PRを高速表示
超巨大PRの実証
表示設計の刷新
配信と検証の工夫
詳細を読む
2026年9月23日、GitHubはGitHub Copilotアプリのプルリクエスト表示を刷新し、2200ファイル、変更100万行超、400件超の行内レビューコメントを含むオープンソースの巨大PRを開けるようにしたと公表しました。コード行と高さが変わるコメントを別々に扱い、画面周辺だけを計測する設計で、通常規模のPRに近いスクロールと操作性を実現しました。
基盤は、コード行の既知の高さと、コメントなど動的ブロックの高さを別の幾何情報として管理します。コード側は型付き配列の位置計算を維持し、動的ブロックは安定した識別子、内容の指紋、幅の区分と実測値を使います。コメントの伸縮でも全コード行の位置表を作り直さずに済みます。
計測はスクロール中を避け、表示領域から約2400ピクセル以内のブロックに限定します。画面内の高さは一括で読み、未表示の近接ブロックだけを最大1件ずつ事前描画するため、処理量は文書全体ではなく表示領域に比例します。ResizeObserverは原則として再計測の印だけを付け、利用者が展開した要素などは1フレーム1回まで即時反映します。
高さの補正前に閲覧中の行やコメントとその内部位置を記録し、補正後も同じ対象が画面内に留まるようスクロール位置を調整します。利用者のスクロールとアプリ自身のスクロールも区別し、サイドバー開閉などによる再配置で閲覧位置を失う不具合を防ぎました。データ側は構造を先に配信し、構文強調や大きなMarkdownを表示直前まで遅延させます。
メモリ消費を抑えるため、離れた差分は解放しつつ、直近数件だけをキャッシュします。さらに、実装には描画数、計測時間、スクロール補正、監視の解放状況などの構造化指標を常設し、巨大PRの合成データを使うE2Eテストで予算を検証します。実アプリを無人操作する自動ループも、空白や未描画コメントを検知し、再現しにくい性能劣化の発見と回帰防止を支えました。