概要
Linear の高速なUI体験は、 ローカルデータベース や 非同期同期エンジン など、基礎から積み上げた設計と細かな最適化の積み重ねによるもの。 IndexedDB 活用によるネットワーク依存の排除、 バンドラ刷新 による初回ロード高速化、 サービスワーカー によるキャッシュ戦略が重要。 UI応答性 を最優先し、ネットワーク遅延をユーザーに感じさせない工夫が徹底。 クライアントサイドレンダリング のシンプルな構成を活かし、パフォーマンスと開発体験を両立。 この記事では、Linearの主要な高速化手法と、その設計思想を解説。
Linearの高速UIを支える設計思想
-
Linear は、従来のCRUD型Webアプリと異なり、 UIが直接IndexedDBを参照 するローカルファースト設計
-
ユーザー操作 はまずローカルで即時反映し、その後バックグラウンドでサーバーと同期
-
ネットワーク遅延 によるスピナーやローディング画面を極力排除し、 体感速度 を最大化
-
MobX のようなオブザーバブルストアでインメモリデータを管理し、UIを即座に再描画
-
WebSocket 経由で他クライアントともリアルタイム同期を実現
- 例:
- 従来型:APIリクエスト→レスポンス待ち→UI更新→スピナー表示
- Linear型:ローカル即時更新→非同期でsave()→UIは待たない
- 例:
-
オプティミスティックUI の思想を徹底し、失敗時のみロールバック
-
ネットワークをボトルネック と捉え、可能な限りリクエスト自体を隠蔽
Linearのスタックとシンプルな構成
-
フロントエンド
- React + react-dom(UIランタイム)
- MobX(オブザーバブルグラフ)
- TypeScript(フルスタック単一言語)
- Rolldown-Vite(バンドラ、過去はRollupやParcel)
- ProseMirror + y-prosemirror(リッチテキスト、Yjs CRDTでライブコラボ)
- Radix UI primitives、Emotion + StyleX、Comlink、idb、graphql-request、Sentry、Inter Variableフォント
-
バックエンド
- Node.js + TypeScript
- PostgreSQL(Cloud SQLで300分割)
- Memorystore Redis(イベントバス・キャッシュ)
- turbopuffer(類似課題検出用ベクタDB)
- Kubernetes(GCP上)
- Cloudflare Workers(エッジプロキシ)
-
その他クライアント
- Desktop: Electron
- Mobile: Swift(iOS)、Kotlin(Android)
-
マーケティングサイト
- Next.js(静的)、styled-components、インラインSVG
-
CSR(クライアントサイドレンダリング) を基本とし、サーバー/クライアントの切り分けの複雑さを排除
-
レガシーブラウザ非対応 による大胆な最適化とシンプルなアーキテクチャ
初回ロード高速化のための工夫
- バンドラ遍歴 (Parcel→Rollup→Vite→Rolldown)で、 出荷JS/CSSの最小化 を追求
- モダンブラウザ限定・デッドコード削除・徹底的なコード分割
- 50%のコード削減、30%の圧縮後サイズ減、初回ロード最大59%短縮、メモリ消費70〜80%減少
- コード分割 により21MBのJSを数百のチャンクに分割、必要時のみロード
- modulepreload を活用し、全チャンクを 並列プリロード
- <script type=module crossorigin ...>と<link rel=modulepreload ...>で依存チャンクを先読み
- ネットワークのウォーターフォール遅延を解消 し、初回アクセス時に全体をキャッシュ
サービスワーカーによるキャッシュ・オフライン対応
- サービスワーカー が未訪問ルートやアセット(約1200ファイル)をバックグラウンドでプリキャッシュ
- 2回目以降のナビゲーション はHTTPキャッシュすら経由せず、即座にサービスワーカーから応答
- オフライン対応 も実現し、常に高速なUXを維持
まとめ:Linearの高速化から学べること
-
UI応答性 を最優先し、ネットワーク遅延をユーザーに見せない設計
-
ローカルデータベース と 非同期同期 の組み合わせによる即時性
-
徹底したコード分割・プリロード・キャッシュ戦略 による初回ロード高速化
-
シンプルなクライアントサイド設計 による開発体験とパフォーマンスの両立
-
オプティミスティックUI や 最新技術活用 で、ネイティブアプリのような操作感を実現
- ほとんどのWebアプリでも、 Tanstack Query や SWR などのライブラリで オプティミスティック更新 を組み合わせるだけでも、体感速度は大きく向上可能
Linearの設計思想と手法は、現代Webアプリにおけるパフォーマンス・UX改善の最良のヒント集