「system design primer」は、Donne Martin氏がGitHubで公開している学習リポジトリ donnemartin/system-design-primer を指します。大規模システムの設計を学び、システム設計面接に備えるための教材で、2026年10月28日時点のスター数は375,889、フォークは59,029です。この記事では、リポジトリをクローンして中身を数えた結果をもとに、何が入っていて、日本語版はどこまで最新で、どう使えば面接や実務に効くのかを整理します。
まとめ:system design primerの要点
- 正体:GitHubリポジトリ donnemartin/system-design-primer。2017年2月作成、ライセンスはCC BY 4.0、無料。書籍や有料講座ではない。
- 中身:設計トピックの目次、学習時間別ガイド、面接の4ステップ、解答付きの設計演習8問とオブジェクト指向設計6問、Ankiデッキ3種(計56枚)、レイテンシ表などの付録。
- 日本語版:README-ja.mdで中核は読める。ただし最終更新は2025年11月で、英語版が2026年3月に直したリンクは反映されていない。
- 更新の実態:2026年の更新はリンク切れの修正と文法修正が中心。Ankiデッキは2017年4月を最後に更新されていない。
- 使い方:面接まで時間がなければ目次を一巡して演習を数問、時間があれば演習の大半とAnkiまで。Kubernetesやレート制限の実装など、収録されていないテーマは別の資料で補う。
system design primerの正体:donnemartin/system-design-primer
READMEの冒頭には「Learn how to design large-scale systems」「Prep for the system design interview」と目的が2つ書かれています。Web上に散らばったシステム設計の資料を1か所に整理した教材で、各トピックの解説には長所・短所と、元になった外部記事へのリンクが付きます。
| 項目 | 内容(2026-10-28にGitHub APIで確認) |
|---|---|
| 作者 | Donne Martin |
| リポジトリ作成日 | 2017-02-26 |
| スター/フォーク | 375,889/59,029 |
| ライセンス | CC BY 4.0 |
| READMEの最終更新 | 2026-03-20(UDPとTCPのリンク修正) |
| リリース(配布物) | 0件 |
LICENSE.txt には、個人のリポジトリなので当時の勤務先(Facebook)ではなく本人がライセンスを与える旨と、CC BY 4.0であることが書かれています。翻訳や改変も認められますが、公開・共有時には作者・著作権表示等の保持、ライセンス本文またはリンクの提示、変更した旨の明示などが必要です。日本語版や中国語版は、この条件のもとでコミュニティが翻訳したものです。
同じ名前の別物:System Design Schoolの「primer」とGitHubの「Primer」
検索結果の上位には、名前が似た別の教材やプロダクトも出てきます。取り違えると探している資料にたどり着けません。
- systemdesignschool.io/primer:System Design Schoolが自社の講座の入口として公開している英語の「System Design Primer」。ページ自身が「This primer is a short overview」と書く講座の概要で、donnemartin版とは作者も中身も別です。
- Primer(primer.style):GitHubが自社のUIに使っているデザインシステム。「primer design system」と検索するとこちらが出ます。システム設計の教材とは無関係です。
リポジトリの中身:目次・演習・付録
中身は「読む」(トピック目次と付録)、「解く」(解答付き演習)、「覚える」(Ankiデッキ)の3つに分かれます。1本のREADME.mdが約11万バイトあり、そこから各演習の解答フォルダへリンクする構成です。
システム設計トピックの目次
READMEの中核は、システム設計の主要トピックを1つずつ解説する目次です。初学者向けには、ハーバード大学のスケーラビリティ講義(動画)と、スケーラビリティの連載記事を先に読む「start here」の順序が示されています。
| 分類 | 主なトピック |
|---|---|
| トレードオフ | 性能とスケーラビリティ、レイテンシとスループット、CAP定理 |
| 一貫性・可用性 | 弱い/結果/強い一貫性、フェイルオーバー、レプリケーション |
| ネットワーク | DNS、CDN(プッシュ型/プル型)、ロードバランサー、リバースプロキシ |
| アプリ層 | マイクロサービス、サービスディスカバリー |
| データベース | レプリケーション、フェデレーション、シャーディング、非正規化、NoSQL 4種 |
| キャッシュ | キャッシュアサイド、ライトスルー、ライトビハインド、リフレッシュアヘッド |
| 非同期・通信 | メッセージキュー、タスクキュー、バックプレッシャー、HTTP・TCP・UDP・RPC・REST |
各トピックは独立して読めるので、ロードバランサーの振り分け方式や種類、リバースプロキシとの違い、一貫性パターンの章に出てくる結果整合性と強整合性の違いだけを拾い読みする使い方もできます。通信の章でRPCの代表的なフレームワークとして挙がるのはProtobuf・Thrift・Avroで、gRPCには触れていません。今のRPCを学ぶなら、gRPCの仕組みとRESTとの違いを別に押さえてください。
解答付きの設計演習8問とオブジェクト指向設計6問
演習はsolutionsフォルダに解答(議論・図・コード)があります。システム設計はPastebin(またはBit.ly)、Twitterのタイムラインと検索、Webクローラー、Mint.com、SNSのデータ構造、検索エンジン向けのキーバリューストア、Amazonのカテゴリ別売上ランキング、AWSで数百万ユーザーに耐えるシステムの8問です。オブジェクト指向設計は、ハッシュマップ、LRUキャッシュ、コールセンター、トランプのデッキ、駐車場、チャットサーバーの6問です。
解答のPythonコードは、そのまま動かす実装ではありません。たとえばPastebinの解答にあるpastebin.pyは、mrjobのMapReduceでアクセス数を月別に集計する処理の骨組みで、URLを取り出すメソッドの中身は pass です。コードは「どの単位で集計するか」を示す擬似コードとして読み、動かしたいなら自分で中身を埋める前提で使います。
解答の無い追加問題も23問あり(Dropbox型のファイル同期、Googleドキュメント、APIのレート制限、証券取引所など)、各問題に参考資料へのリンクが付いています。Amazonなど各社の実際のアーキテクチャ記事や、エンジニアリングブログの一覧も付録に入っています。
付録:レイテンシ表・2の累乗表・稼働率の早見表
付録には、面接で概算見積もりをするときの数字がまとまっています。稼働率99.9%なら年間の停止許容は8時間45分57秒、99.99%なら52分35.7秒という早見表や、「L1キャッシュ参照0.5ns、メインメモリ参照100ns、SSDから4KBをランダムに読む150μs、同一データセンター内の往復500μs」といったレイテンシ表です。
このレイテンシ表は、2009年のJeff Dean氏の講演資料や2012年ごろに広まったGistを出典にしています。SSDの応答時間は機種や負荷、測定条件で変わるため、この表は当時の概算例として読み、現在の設計には対象環境の仕様や実測値を使ってください。面接で「メモリはディスクより何桁速いか」を説明する程度なら、今でも十分に通用します。
Ankiデッキ3種の枚数と取り込み方
リポジトリの説明文が「Includes Anki flashcards」とうたうとおり、resources/flash_cardsに間隔反復アプリAnkiのデッキ(.apkg)が3つ入っています。中身のデータベースを開いて数えた結果は次のとおりです。
| デッキ | 枚数 | 内容 |
|---|---|---|
| System Design | 42枚 | CAP定理、シャーディング、キャッシュ方式、HTTP、MD5、Base62など |
| System Design Exercises | 8枚 | 設計演習8問の解答 |
| OO Design | 6枚 | オブジェクト指向設計6問の解答 |
カードはすべて英語で、日本語版のデッキはありません。最後に更新されたのはSystem Designが2017年4月9日、ほかの2つが2017年3月8日で、READMEをその後に直した分はカードに反映されていません。同梱カードは学習履歴を持たない新規の状態です。既存の学習データがある場合は、取り込み時に学習進捗の設定を確認してください。取り込みはAnkiのメニューから.apkgファイルを読み込むだけで、手順はAnki公式マニュアルのImporting Packaged Decksにあります。
56枚という量は、目次を一通り読んだ後の確認用にちょうどよい分量です。逆に、カードだけで学ぶには少なすぎます。読んで理解した論点を、面接の直前に思い出せる状態にしておく道具として使ってください。
日本語版README-ja.mdの更新状況と英語版との差分
README-ja.md は翻訳の状況をまとめたTRANSLATIONS.mdで「Live」(masterに統合済み)に分類されており、目次・学習指針・面接の進め方・演習の一覧まで日本語で読めます。概念の全体像をつかむだけなら、日本語版だけで足ります。
注意したいのは更新の遅れです。GitHubのコミット履歴では、README-ja.mdの最終更新は2025年11月3日です。英語版のREADME.mdはその後、2026年3月にリンクの修正5件と文法の修正1件を取り込みました(リンクはUDPとTCPの比較、PayPalの開発者ブログ、レイヤー4ロードバランシング、プッシュ型/プル型CDN、Redis型キーバリューストアの参考資料)。たとえばレイヤー4ロードバランサーのNATの説明は、英語版ではWeb Archiveのリンクに差し替えられていますが、日本語版はnginx.comの元のURLのままです。
この差は概念の説明ではなく、外部の参考資料へのリンクに出ます。日本語版で読み進め、深掘りしたいリンクが開けなかったら、英語版の同じ節のリンクを使ってください。韓国語版とロシア語版は翻訳中(In Progress)で、まだmasterには入っていません。
手元で読む手順:クローンとePub化
GitHub上でそのまま読めますが、オフラインで読みたいならクローンしてePubを作れます。リリースに配布物は無いので、電子書籍は自分で生成します。同梱の generate-epub.sh はpandocを使い、英語版(演習の解答を含む)・日本語版・簡体字版・繁体字版の4冊を作ります。
git clone --depth 1 https://github.com/donnemartin/system-design-primer.git
cd system-design-primer
brew install pandoc # macOSの例。Linuxはディストリビューションのパッケージで入れる
./generate-epub.sh
# 生成物:README.epub(英語+解答) README-ja.epub README-zh-Hans.epub README-zh-TW.epub
pandocが入っていない状態で実行すると、スクリプトは「Error: pandoc is not installed.」と表示して終了コード1で止まります(2026-10-28にクローンして確認)。日本語版のePubには演習の解答が含まれません。解答まで電子書籍で読みたいなら、英語版のREADME.epubを使います。クローンの容量は浅いクローンで約24MBです。
学習時間別の進め方と面接の4ステップ
READMEは「面接のためにここを全部知る必要があるか」という問いに「No」と答えています。何を聞かれるかは経験年数、応募する職種、企業によって変わるため、広く浅く始めて一部を深くする進め方を勧めています。
学習時間別ガイド(Short/Medium/Long)
| プラン | トピックの深さ | 演習の量 |
|---|---|---|
| Short | 広く(breadth) | 一部(some) |
| Medium | 広く+一部を深く | 多く(many) |
| Long | 広く+より深く | 大半(most) |
どのプランでも、目次の通読、応募先企業のエンジニアリングブログ、実際のアーキテクチャ記事、面接の進め方の確認は共通です。プランでは、演習の量に加えてトピックを学ぶ深さも変わります。面接まで1〜2週間しかないなら、目次を一巡したうえでPastebinとTwitterの2問を解答と突き合わせるところから始めるのが現実的です(この2問はこの記事の提案で、公式のShortプランにはオブジェクト指向設計問題や追加問題も一部含まれます)。
システム設計面接の4ステップと概算見積もり
教材は、システム設計面接を受験者が主導する「open-ended conversation」と位置づけ、次の4ステップで進めるよう勧めています。
- ユースケース・制約・前提を整理する:誰がどう使うか、ユーザー数、秒間リクエスト数、読み書きの比率を質問して確かめる。
- 高レベル設計を描く:主要なコンポーネントとつながりを描き、その理由を説明する。
- 主要コンポーネントを詳細に設計する:URL短縮なら、ハッシュの生成(MD5とBase62)、衝突、SQLかNoSQLか、スキーマを詰める。
- スケールさせる:ロードバランサー、水平スケール、キャッシュ、シャーディングでボトルネックに対処し、トレードオフを議論する。
手計算の見積もりを求められたときは、前述の2の累乗表とレイテンシ表を使います。設計の判断と根拠を言葉で説明する練習には、結論と代替案を書き残すデザインドックの書き方も役に立ちます。
収録されていないテーマと補い方
system design primerの骨格は2017年に作られ、その後はリンク修正が中心です。概念の地図としては今も有効ですが、2020年代のシステム設計で当たり前になったテーマの多くは入っていません。英語版READMEを語で検索した結果は次のとおりです。
- Under development(未完成と明記):MapReduceによる分散処理、コンシステントハッシュ、スキャッター・ギャザー。
- 本文に1度も出てこない語:Kubernetes、Docker、gRPC、WebSocket、GraphQL、サーキットブレーカー、オブザーバビリティ、クォーラム、ブルームフィルター。
- 追加問題の題名にあるだけで解説の無い語:APIのレート制限(Stripeのブログへのリンクのみ)。
この教材は、主要な部品とトレードオフを説明する練習に使えます。面接対策の範囲は、職位だけでなく応募先と募集要件に合わせて決めてください。募集要件に分散合意、可観測性、コンテナ基盤が含まれるなら、これらを別の資料で補い、設計判断の理由まで説明する練習が必要です。キャッシュやNoSQLの章を読んだ後に、KVSを実際にRedisで動かしてみると、読んだ内容が手に残ります。
実務で使う場合も同じです。マイクロサービスかモノリスかといったアーキテクチャ方式の選び方は、primerの「アプリケーション層」の章では数段落しか扱っていません。用語の地図はprimerで作り、個別の製品や最新の仕様は各公式ドキュメントで確かめる、という役割分担で使ってください。
よくある質問
system design primerは無料で使えますか?
はい。GitHubで公開されているオープンソースの教材で、閲覧もクローンも無料です。本文はCC BY 4.0で提供され、作者表示やライセンスの提示、変更表示などの条件を守って共有・翻訳できます。
system-design-primerとthe system design primerは同じものですか?
同じ教材です。リポジトリ名がハイフン区切りの system-design-primer で、README.mdの見出しが「The System Design Primer」です。一方、systemdesignschool.io/primer は別の教材で、GitHubの「Primer」はデザインシステムです。
日本語だけで学べますか?
概念の全体像はREADME-ja.mdで日本語のまま学べます。ただし日本語版の最終更新は2025年11月で、英語版より新しいリンク修正が入っていません。Ankiデッキと演習の解答は英語のみです。
初心者がいきなり読んでも理解できますか?
READMEの「System design topics: start here」が初心者向けの順序を示しています。スケーラビリティの講義動画と連載記事を先に読み、その後でトレードオフの3章、DNSやCDNなどの個別トピックへ進むと迷いません。
system design primerだけで設計面接に合格できますか?
主要な部品とトレードオフを説明する力は身につきますが、これだけで十分とは限りません。Kubernetesやレート制限の実装など、収録されていないテーマは別の資料で補い、演習を自分の言葉で説明できるまで繰り返す必要があります。