なぜ注目されているか
技書の森解説
大規模な Web サービスの設計を、面接で出される設計問題とその解答例を通して身につけるための一冊が『システム設計の面接試験』です。著者はアレックス・シュウ (Alex Xu)、訳はイノウで、ソシムから 2023 年 3 月に刊行されました。原題は SYSTEM DESIGN INTERVIEW です。版元は、システム設計には従うべき一定のパターンが無いため習得が難しい一方で、IT エンジニアが日常的に求められる作業であることから、システム設計の面接試験が米国で広く採用されていると紹介しています。本書はその面接で問われる問題を出題し、回答を解説する形で設計力を養う構成です。
全 16 章の構成、土台の 3 章と 12 の設計課題
目次は、はじめにと 16 の章、おわりにで構成されています。1 章「ユーザー数ゼロから数百万人へのスケールアップ」、2 章「おおまかな見積もり」、3 章「システム設計の面接試験のフレームワーク」の 3 章は、個別の課題に入る前の土台に当たると読めます。4 章から 15 章までは章題がすべて「〜の設計」で、レートリミッター、コンシステントハッシュ、キーバリューストア、分散システムにおけるユニーク ID ジェネレーターと続いたあと、URL 短縮サービス、Web クローラ、通知システム、ニュースフィードシステム、チャットシステム、検索オートコンプリートシステム、YouTube、Google ドライブへ進みます。前半の 4 題は他の大きなサービスの部品になりうる仕組みで、後半の 8 題は利用者から見えるサービス全体を扱う並びです。最後の 16 章は「学習は続く」と題されています。
正解の無い設計を、見積もりと手順で組み立てる
システム設計が難しいのは、正解が 1 つに決まらず、読み書きの比率、許容できる遅延、データ量の伸び方といった条件によって最適な形が変わるからです。そのため面接でも実務でも、最初に要件と規模を確かめ、おおよその数字を見積もってから構成を描くという手順そのものが評価の対象になります。2 章の見積もりと 3 章のフレームワークが課題の前に置かれているのは、この手順を先に共有するためと読めます。課題の側で扱われる仕組みは、どれも大規模化で必ず突き当たる論点です。サーバーの台数を増やす 水平スケーリング では、データをどのノードに置くかが問題になり、ノードの増減で再配置を最小限に抑える コンシステントハッシュ がその代表的な答えになります。利用者ごとのリクエスト数に上限を設ける レート制限 も、アルゴリズムの選び方とカウンターを複数のサーバーでどう共有するかが設計の分かれ目です。こうした部品の考え方を先に身につけておくと、後半のサービス設計で何を組み合わせればよいかが見えやすくなります。
面接対策と実務の設計レビュー、向く読者の前提知識
書名のとおり想定の場面は採用面接ですが、要件を確かめてから規模を見積もり、構成案を示して論点を詰めるという流れは、実務の設計レビューにもそのまま通じます。外資系企業の面接を控えた人はもちろん、Web アプリケーションの開発には慣れたものの、利用者が桁違いに増えたときに構成をどう変えるかを考えた経験が無い人に向いています。データベース、キャッシュ、ロードバランサといった Web システムの基本的な構成要素を一通り知っていると読み進めやすいはずです。逆に、特定のクラウドサービスでの構築手順を学びたい人や、複製や一貫性の理論を深く掘り下げたい人には目的がずれます。後者には『データ指向アプリケーションデザイン』 (オライリー・ジャパン) のような、分散データシステムの原理を正面から扱う本を組み合わせるのが合っています。
設計の議論で「まず何を聞き、何を見積もるか」の型を持たないまま大きなシステムに関わっている人にとって、12 の具体的な課題で同じ手順を繰り返し確かめられる本書は、面接の準備と実務の両方で元が取りやすい一冊です。
この本に興味がある方におすすめ
関連する本

関連記事
技術書の作り方 - 企画から出版まで / 著者の印税 / 制作の裏側
技術書はどうやって作られるのか。企画の通し方、執筆期間、印税の相場、出版社ごとの特徴など、読者が知らない技術書制作の裏側を解説します。
「この技術、3 年後も使われてる?」を本で見極める方法
新しい技術を学ぶべきか迷ったとき、技術書の出版状況が判断材料になります。技術の寿命を本から見極めるための 4 つのシグナルと、その落とし穴を解説します。
読んだ本の数より「使った本の数」を数えよ
読書の成果は冊数では測れません。読んだ知識を実務で何回使ったかが、本当の読書の価値です。読書の成果指標を「冊数」から「使用回数」に切り替える方法を紹介します。
関連用語
SOLID 原則
オブジェクト指向設計の 5 つの基本原則で、保守性と拡張性の高いコードを実現する
Twelve-Factor App
クラウドネイティブなアプリケーションを構築するための 12 の設計原則
DRY 原則
Don't Repeat Yourself の略で、知識の重複を排除し、単一の正を維持する設計原則
依存性逆転の原則
SOLID の D - 上位モジュールは下位モジュールに依存せず、両者とも抽象に依存すべきという設計原則
多層防御
複数のセキュリティ層を重ねて、1 つの層が突破されても他の層で防御する設計原則
KISS 原則
Keep It Simple, Stupid - 設計をできるだけシンプルに保つことを求める原則