AI コーディングによる開発速度の向上がCI をボトルネックにしていたため、当社のCIプロセスを見直し、追いつけるように改良しました

2026/09/22 4:23

AI コーディングによる開発速度の向上がCI をボトルネックにしていたため、当社のCIプロセスを見直し、追いつけるように改良しました

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

Linear は、今年にテストスイートがほぼ 4 倍規模になったにもかかわらず、継続的インテグレーション(CI)のコストを大幅に削減し、ビルド時間を劇的に短縮することに成功しました。主要な成否は、コード変更の検証を本番環境へのデプロイよりも迅速に行えることを保証することであり、これはワークロードをサードパーティ製ランナーへ移行させ(平均的なジョブ実行時間が 34% 短縮)、ネイティブ TypeScript コンパイラを採用してタイプチェック時間を 73% 削減し、Lint ルールを効率的な静的解析を使用するように書き換えることで API の Lint 時間を 68% 削減したことを通じて実現されました。主な最適化策としては、最終確認から不要なファイルの書き込みを取り除き(PR あたり 42 秒節約)、共有依存関係の事前インストールを導入してセットアップ時間を 44% 削減し、7 つの独立したチェックを 2 つのジョブに統合して月に約 87,000 ランナー分を節約するとともに、Vitest でのテスト実行を最適化しました。これらの戦略は、インフラストラクチャのアップグレード、ジョブゲートイング、セットアップ削減、および実行効率向上をターゲットにしています。これらの変更を適用することで、Linear はテスト環境の複雑性をスケールさせたとしても、フィードバックループが遅くなったりランナー費用が高騰したりするとは限らないことを実証しました。類似した企業にとって、このモデルはコスト削減を図りながら機能リリースを遅らせるボトルネックを防ぐための青写真を提供します。今後の取り組みでは、テスト環境が引き続き拡大する中でこれらの成果を持続させ、迅速な検証が開発ワークフローの中心に保たれることを確実にすることを目指します。

本文

Linear で CI パフォーマンスを大幅に向上させた 14 つの対策

Linear の CTO トーマスは今年初め、「CI コストが高い」という課題と、CI の高速化という二つのタスクを私に割り当てました。コードのデプロイはエージェントによって劇的に加速されましたが、PR の検証速度はそれに追いついておらず、CI は開発活動のボトルネックとなっていました。

成果の概要

テストスイートがほぼ 4 倍 に増えたにもかかわらず、以下の指標を大きく改善しました。

  • PR 待機時間: 6 分以上 → 5 分未満(削減)
  • テストあたりのランナー時間: 約半分に削減

改善の 4 つの観点

Linear のコードベースは TypeScript ですが、これらの手法は言語やツールチェーンを超えて広く応用可能です。

  1. インフラストラクチャとツールのアップグレード
  2. 他の作業を制御するジョブの最適化
  3. 繰り返しのセットアップの削減
  4. テスト実行効率の向上

1. インフラストラクチャとツールのアップグレード

CI パイプライン自体を変えず、基盤を強化することで大きな改善を行いました。

  • ランナーの移行: GitHub Actions から、高性能 CPU・高速ストレージ・優れたキャッシュインフラを備えたサードパーティ製ランナーへ移行。
    • ジョブ実行速度平均:34% 向上
    • tsc
      (TypeScript コンパイル)のような特定負荷:52% 削減
  • コンパイラーの近代化:
    tsc
    からネイティブコンパイラ
    tsgo
    に切り替え。
    • tsc チェック
      の中央値:73% 削減
    • ボトルネック(型チェック)が完全に解消されました。

2. タイプチェッカーを使わないリンティング

型情報を必要とするルールを再実装し、メモリ消費量の多いリンティングジョブを軽量化しました。

  • 手法の転換: 型情報への依存を断ち、AST(抽象構文木)のみを静的解析する方式へ変更。
    • API リンティング時間:68% 削減
    • リポジトリ全体のリンティング時間:55% 削減
    • メモリ使用量:大幅に減少。
  • Oxlint への移行: 型依存を断つことで、
    Oxlint
    へのシームレスな移行が可能になり、CI ランナー時間をさらに削減しました。

3. 他の作業を制御するジョブの最適化

インフラ速度が向上したことで、クリティカルパス上の「小さなジョブ」への注目が集まりました。

  • 変更検出ジョブ: PR がどのファイル(パス)を変えたかを確認する前のゲート処理を高速化。
  • 取得データの最適化:
    • 完全な動作ツリーをチェックアウトせず、必要な小規模なサブセットのみを取得。
    • チェックアウト深さを制限し、不要なジョブからはチェックアウトを完全に排除。
  • ネットワーク安定性への対応:
    • サードパーティランナーは GitHub 外にあり、IP 接続が不安定な場合があります。
    • actions/checkout
      自前製コンパウンドアクションへ置き換え、後退戦略(backoff)付きリトライを実装。
    • GIT_HTTP_LOW_SPEED_LIMIT
      /
      TIME
      を設定し、停滞時に約 30 秒後に強制終了させることで固まりを防止。
    • ステイクリーディスク上に永続的な git ミラー(チェックアウトキャッシュ)を維持。

4. 繰り返しのセットアップを削減

各ジョブで繰り返されるオーバーヘッド(起動、インストール、ビルドなど)を劇的に削減しました。

  • 共有依存関係の事前インストール: CI イメージ内に Postgres クライアントなどを
    apt
    でインストールし、再インストール時間を排除。
  • 必要な依存関係のみをインストール:
    • pnpm
      ワークスペース全体をインストールせず、必要なパッケージ(API パッケージ)のみを対象化。
    • 後続ジョブでほぼ使われないキャッシュアップロード処理も排除。
    • 結果:
      pnpm install
      44〜73 秒 → 16〜18 秒に。
  • キャッシュの再考:
    node_modules
    キャッシュは復元に時間がかかり、ばらつきを増やすのみであるため不要と判断し、キャッシュ使用を停止。

さらに、入力が変わらないセットアップを再実行しない工夫も施しました。

  • スキーママイグレーションの最適化: フル履歴の再プレイではなく、スナップショットファイルを読み込むことで、セットアップ時間を 12 秒 → 1〜2 秒に削減。
  • 短いチェックのバッチ化: 7 つの独立した小規模ジョブ(それぞれ起動・インストールなど)を統合し、2 つのジョブ内で並列実行。
    • セットアップコスト支払い回数:7 回 → 2 回へ削減。
    • 月間ランナー分節約:87,000 ランナー分(CI 使用量の 11.8% に相当)。

5. テスト実行をより効率的にする

固定コストを下げることで、API スイートの並列化をさらに促進しました。

  • ワークロードのバランス:
    Vitest
    はファイル単位で分散するため、巨大なテストファイルがシャードを支配していました。
    • 大規模ファイルを分割・焦点化し、シャード数を適切に増加(初期は 3→4、現在は 8 シャード)。
    • 結果:最も遅いシャード時間は 5.25 分 → 4.33 分へ。
  • 共有状態の活用:
    isolate: false
    オプションを有効化し、再構築コスト(エンティティ・グラフなど)を削減。
    • 最も遅いシャード時間:約 379 秒 → 195 秒へ。
    • API シャードランナー全体時間:約 32.8 分 → 22 分へ。
    • 月額コスト:約 17% 削減
    • 注意: 共有状態によるリスクを回避するため、対象ファイルごとに明示的な
      opt-in
      コメントと適切なクリーンアップ実装が必要です。

6. シャーディングの限界について

シャーディングは有効ですが、セットアップオーバーヘッドが低く限定的です。

  • シャード数を 2 倍にしても、セットアップ時間は 2 倍になるため、メリットが減ってしまいます。
  • セットアップ時間が約 40 秒まで低下したことで、8 シャードにおける総セットアップ時間が 4 シャード時より少なくなるようになり、並列化度を 2 倍に高めることができました。

システム全体での波及効果

今年初めの意図的な改善努力がなければ、現在のテストスイートは約 11 分かかったでしょう(開発者が待つ時間のほぼ 2 倍)。

  • この改善は完了ではなく、コードベースの成長(週に約 2,000 のテスト追加)に合わせて継続的な取り組みが必要です。
  • これまでの知見を応用し、新たなボトルネックへの対応を通じて CI を高速化し続けることが重要であるためです。

同じ日のほかのニュース

一覧に戻る →

2026/09/22 5:58

輸入額が 800 ドル以下の小口免税措置の停止

## Japanese Translation: 個人処方箋輸入運動(CPPI)は、米国人がライセンス取得済みのカナダの薬局から処方薬を購入する権利を主張しており、これらの薬局が 100% の安全性記録を持つと述べている。この運動を支援することで、人々は健康を損なうことなく安価な医薬品にアクセスしながら資金を節約できる。CPPI は、公衆が即座に無料キャンペーンに参加することを招き、米国での医療費高騰に対する実用的な財務戦略として海外で医薬品を購入する原因を積極的に支持するために、事務所へ連絡すること(202-765-3290 または info@personalimportation.org(N.J. 08844, Hillsborough, 601 Rt. 206, Suite 26-423))を呼びかけている。

2026/09/22 7:33

データ保護委員会が位置情報の処理問題に対し、Google に4,030 万ユーロの制裁金科する

## 日本語翻訳: EU 欧州データ保護委員(DPC)は、GDPR ルールの遵守違反によりユーザの位置情報データを処理したことに伴い、Google アイルランドに巨額の 4030 ユーロの制裁金科しました。2020 年 2 月に開始された自主発議による調査および BEUC などの団体からの苦情に基づき、調査官らは 2018 年 5 月 25 日から 2020 年 2 月 4 日の間に発生した違反行為を特定しました。DPC は、Google が「Web & App Activity」と「Location History」の処理を法的かつ公正に行っておらず、また「Location Accuracy」に関する透明性および説明責任の義務も履行しなかったと結論付けました。コミッショナーズ Dr Des Hogan 氏、Mr Dale Sunderland 氏、Ms Niamh Sweeney 氏、副コミッショナー Graham Doyle 氏は、これらの無許可なデータ保持 practices がユーザが個人情報を制御する権利を損なう損失を増大させたことを指摘しました。したがって、Google は 2 つの特定の機能におけるデータの保持を停止し、6 ヶ月以内にすべての処理をコンプライアンスに合わせるよう命令されました。DPC は適時、本件の最終決定を発表する予定です。

2026/09/22 4:43

ビジュアルで解説するトランスフォーマー

## 日本語訳: 本稿の核心となるメッセージは、2017 年に論文「Attention is All You Need」によって紹介された Transformer アーキテクチャが、GPT、Llama、Gemini のような主要な AI モデルの基盤となるエンジンとして機能しているという点である。このアーキテクチャはテキスト、音声、画像認識、タンパク質予測、ゲームプレイなど多岐にわたる分野で活用されている。これらの大規模システムを抽象的に記述するのではなく、解説ではアクセス可能な GPT-2(小規模)モデル——パラメータ数が 1 億 2400 万、語彙数は 50,257 のユニークなトークン、そして 12 の Transformer ブロックを持つもの——を用いて、Transformer が実際どのように動作するかを具体的に示す。このアーキテクチャは、(1) エンベディメント:文字列の生のトークンをトークナイゼーション、エンベッディング、および位置符号化を通じて数値データに変換する部分、(2) Transformer ブロック:マルチヘッド自己注意機構(クエリ、キー、バリュー行列を 12 ヘッドにわたって使用)と MLP レイヤーを用い、データを順次処理しつつ、マスキングによって未来のトークンへのアクセスを防ぐ機構、(3) 出力確率:表現を高次元空間に射影し、それを確率に変換することで次の単語を数学的に予測する部分——という 3 つの不可欠な要素に依存している。これらの概念は、自然言語理解から複雑なタンパク質予測に至るまでの分野を革命させたが、「Transformer Explainer」という実装により、開発者や学生にとって具体的な形を与えられている。これは Andrej Karpathy の nanoGPT プロジェクトから派生したライブウェブ実装であり、高度なバックエンド知識を必要とせず、理論的研究と実践的な応用の間のギャップを埋める。このツールは、これらの数学的射影がリアルタイムでどのようにテキストを生成するかを可視化することを可能にする。ジョージア工科大学の Aeree Cho、Grace C. Kim、Alexander Karpekov、Alec Helbling、Jay Wang、Seongmin Lee、Benjamin Hoover、Polo Chau の開発により、プロジェクトは性能向上のための追加機能としてレイヤー正規化、ドロップアウト、レシデュアル接続も組み込んでいる。