本文へ移動

ホーム / EM / 第6部 面接の実践

第6部 面接の実践・第15章

設計とケースの面接

★★☆ 重要10トピック・面接 4問

EM の設計の面接では、システムの設計に加えて、それを誰が・どんな順で・どれくらいの期間で作るかまで問われる。マネジメントのケース面接(「〜な状況のチームを任されたら」)もあわせて押さえる。

60分の時間配分(例)要件8分見積5分全体構成12分深掘り15分進め方・体制12分質疑8分EM の面接では「進め方・体制」に時間を残しておくのが大事
時間は一例。面接官の興味に合わせて、深掘りの場所は変わる

正解の構成を当てる試験ではありません。要件を確かめ、規模を見積もり、トレードオフを口に出しながら、面接官と対話で設計を深めます。EM の面接では、最後に作り方(順番・人数・期間・リスク)まで話すことが期待されます。

段階やること
要件の確認機能・規模・SLO・期限・使える人数を質問する
見積もりリクエスト数・データ量を桁で出す。前提を口に出す
全体の構成まず単純な形を描き、データの流れを説明する
深掘りボトルネックや障害時の動きを1〜2か所選んで詳しく
進め方と体制MVP・段階的なリリース・監視・人数とスキル・期間・リスク

最初の数分で要件を確かめると、その後の設計がぶれません。EM の面接では、システムの要件に加えてチームと事業の制約も聞きます。

分類質問の例
機能必須の機能は何か、後回しでよい機能は何か
規模利用者数、ピーク時のリクエスト数、データ量の増え方
品質どれくらい止まってよいか(SLO)。多少古いデータでもよいか
期限いつまでに何を出す必要があるか。最初に出す範囲(MVP)は
人使える人数とスキル。採用できるか、他チームの支援はあるか
既存の資産今あるシステム・DB・基盤で使えるものは
予算・制約費用の上限、使えるクラウドや製品、法令の制約

全部を聞く必要はありません。答えが分からないと言われたら、「では1日100万人と仮定して進めます」のように仮定を置いて口に出して進めます。

見積もりは桁が合えば十分です。計算しやすい数字に丸め、前提を口に出します。

数字使い方
1日 ≒ 10万秒(86,400秒)1日のリクエスト数 ÷ 10万 ≒ 平均の秒間リクエスト数
ピーク ≒ 平均の2〜3倍仮定として置く。キャンペーンがあればもっと大きく
1,000万人 × 1日10回1日1億リクエスト ≒ 平均 1,000/秒、ピーク 2,000〜3,000/秒
1件 1KB × 1日1億件1日 100GB、1年で約 36TB
1人の1週間会議・割り込み・休みを引くと、開発に使えるのは7割ほど、と仮定して置く

人と期間の見積もり(例)

「4人で3か月」なら、4人 × 12週 = 48人週。開発に使えるのを7割と仮定すると約34人週です。作業の見積もりの合計がこれを大きく超えるなら、範囲を減らすか期間を延ばす提案をします。この計算を口に出すだけで、計画の現実性を考えていることが伝わります。

ひとことで

設計の質問でも、チームの体制・リスク・段階的な進め方まで話す。

EM の面接でもシステム設計の質問は出ます。ただし、構成図を描いて終わりではなく、チームの体制・リスク・段階的な進め方まで話せるかが見られます。

定番のお題

お題設計の論点マネジメントの論点
通知システム(メール・プッシュ)キュー、リトライ、重複の防止、配信の優先度外部サービスへの依存、オンコールを誰が持つか
URL 短縮・レート制限ID の作り方、キャッシュ、読み込みの多さへの対応MVP の範囲、SLO の決め方
チャット・タイムラインリアルタイム配信、データの持ち方、規模の拡大段階的な機能の追加、負荷試験の計画
モノリスの分割どこから切り出すか、データの分け方、移行中の整合性チームの分け方(コンウェイの法則)、移行期間の二重運用の負担
古いシステムの置き換え並行稼働、データ移行、切り替えと戻し方ビジネスを止めない計画、関係者との合意、撤退の判断基準
設計面接の進め方要件を確かめる規模・SLO・期限全体を描く単純な形から深掘り1〜2か所リスクと進め方MVP・戻し方体制人数・スキル・期間ここまではふつうの設計面接EM ならではの部分
構成図で終わらず、作る順番・リスク・チームの体制まで話す

どのお題でも、トレードオフを口に出し、「この規模ならこちら、10倍になったらこう変える」と条件つきで判断を示すことが評価されます。

設計レビューの観点

面接ではこう答える

EM の設計の面接では、構成図を描いて終わりではなく、それを誰がどんな順で作るかまで話すようにしています。まず要件と規模を確かめて単純な構成を描き、ボトルネックや障害時の動きを1〜2か所深掘りします。そのうえで、最初に出す範囲、機能フラグやカナリアでの段階的な出し方、戻し方と監視、そして何人のどんなスキルのチームで何か月かかるか、足りないスキルをどう補うかを話します。

回答例の構成:通知システムアプリ各サービス通知 API受付・重複排除キュー優先度別送信ワーカーリトライメールプッシュ失敗が続いたら別のキューへ(後で調べる)
キューで受付と送信を分け、外部サービスが遅くても受付は止めない

お題:「4人のチームで3か月以内に、メールとプッシュの通知システムを作る」。

段階話すことの例
要件1日100万通、ピークは数倍と仮定。重要な通知(パスワード再設定)は数分以内に届ける
構成API で受け付けてキューに入れ、ワーカーが外部サービスに送る。重要度でキューを分ける
深掘り重複の防止(受付時の ID で2回送らない)、外部サービスの失敗時のリトライと間隔、送信数の上限
進め方1か月目:メールだけ・1つのサービスから。2か月目:プッシュと優先度。3か月目:移行と負荷試験
体制4人のうち1人はプッシュの経験者を。いなければ最初の1か月で調べるタスクを入れる
リスク外部サービスの制限、既存の送信処理からの移行、オンコールを誰が持つか

最後に「規模が10倍になったら、ワーカーを増やし、送信の上限を外部サービスと相談する」のように、条件が変わったときの方針も添えます。

回答例の進め方:モノリスの分割境界を見つける変更の多い所中で分けるモジュール化1つ切り出す価値が大きい所チームと合わせる担当を決めるいきなり全部を分けない。運用の土台(CI/CD・監視・トレース)を先に
分ける目的(リリースの詰まりを解くなど)を最初に確かめる

お題:「10年続くモノリスを、3チーム15人で開発している。リリースが詰まっている。どうする?」

段階話すことの例
目的の確認何が詰まっているか。リリース待ち、テストの遅さ、変更の影響の読めなさ
境界変更が多く、他との依存が少ない部分を探す(例:通知・検索)
まず中で分けるモノリスのままモジュールの境界を作り、依存を減らす
1つ切り出す価値が一番大きい1つを、入口で振り分けて段階的に移す
データDB を分けるのは最後。最初は API 経由でだけ読むようにする
チーム切り出したサービスの持ち主のチームを決め、オンコールも持つ
リスク移行中の二重運用、障害の調査の難しさ。分散トレースを先に入れる

大きな移行を段階的に進める

回答例の構成:API のレート制限利用者API キーごと入口(ゲートウェイ)回数を確かめるカウンター全サーバーで共有上限内 → API 本体超えた → 429 を返す429(Too Many Requests)と次に試せる時刻を返す
カウンターは全サーバーで共有する。1台ごとに数えると上限がずれる

お題:「公開 API に、利用者ごとのレート制限(回数の上限)を入れたい。2人で1か月」。

段階話すことの例
要件利用者(API キー)ごとに1分100回など。上限を超えたら HTTP 429 を返す。多少の誤差は許すか
方式一定時間ごとに数える方式(固定窓)は簡単だが、窓の境目で倍近く通ることがある。なめらかにするならトークンバケット
構成入口で数え、全サーバーで共有のカウンター(Redis など)を使う。数える処理はまとめて1回で行い、競合を防ぐ
障害時カウンターが落ちたら、制限をかけずに通すか止めるか。多くは「通す」を選び、アラートを鳴らす
進め方1週目:計測だけして制限はかけない(誰がどれだけ使っているかを見る)。2〜3週目:一部の利用者に適用。4週目:全体へ
関係者利用者への事前の告知、上限を上げたい顧客の窓口、営業・サポートとの合意

「まず計測だけして、影響を見てから制限をかける」という段階的な進め方は、EM の面接で特に評価されやすいポイントです。

ひとことで

「〜な状況のチームを任されたら」という形の面接。状況確認・仮説・優先順位・行動計画・見直しの順で答える。

ケース面接の答え方の型状況確認質問する仮説原因の候補優先順位何から行動計画30・60・90日見直し何で測るか
いきなり打ち手を言わず、まず状況を質問する

マネジメントのケース面接は、「〜な状況のチームを任されたら、どうしますか」という形の質問です。いきなり打ち手を並べず、まず状況を質問するのが一番大事です。

よく出るケース最初に確かめること
遅れているプロジェクトを引き継ぐ期日の重さ、範囲を減らせるか、遅れの原因
離職が続いているチーム辞めた人の理由、残っている人の負担、オンコール
障害が多いチーム障害の種類、リリースの出し方、監視とアラート
チーム間の対立何でもめているか、責任の境目、上の判断が必要か
新しいチームを0から作る目的、期限、予算と人数、既存のシステムとの関係

行動計画は、最初の30日は聞く・観察する、60日で小さく変える、90日で仕組みにするのように段階で話すと、急ぎすぎない姿勢が伝わります。最後に、うまくいったかを何で測るかを添えます。

面接ではこう答える

マネジメントのケース面接では、いきなり打ち手を並べず、まず状況を質問するようにしています。期日の重さや範囲を減らせるか、問題の原因の候補などを確かめてから仮説を立て、何から手をつけるかの優先順位を話します。行動計画は、最初の30日は聞いて観察し、60日で小さく変え、90日で仕組みにする、のように段階で示し、最後にうまくいったかを何で測るかを添えます。

お題:「期日まで2か月のプロジェクトが大きく遅れている。前の EM が異動し、あなたが引き継ぐことになった」。

段階話すことの例
状況の確認期日は動かせるか(法令・契約か、社内の目標か)。必須の範囲は。今の残りの見積もりは
仮説範囲が増え続けている、見積もりが楽観的、割り込みが多い、メンバーの疲れ
最初の1週間メンバー全員と 1on1。残りの作業を洗い出して見積もり直す。PdM・事業側と現状を共有
判断範囲を減らす案・日付を動かす案・両方の案を出し、関係者と決める。人を足すのは切り離せる作業がある場合だけ
進め方週1回、残りの量と見込みの日付を共有する。新しい要望は期日後に回す
人への配慮残業でしのがない。疲れている人の負担を減らす
測り方残りの作業量の減り方、見込みの日付の変化、メンバーの声

「人を足せば間に合う」とすぐ答えないのがポイントです。遅れているプロジェクトに人を足すとさらに遅れることがある(ブルックスの法則)を踏まえていると伝わります。

15.10よくある失敗

★★☆ 重要

設計とケースの面接で、よくある失敗と直し方です。

失敗直し方
要件を聞かずに描き始める最初の5〜8分は質問と仮定に使う
最初から複雑な構成にする単純な形から始め、規模に合わせて足す
構成図で終わる作る順番・人数・期間・リスクまで話す時間を残す
1つの案に固執する選ばなかった案と理由、条件が変わったときの方針を話す
黙って考え込む考えていることを口に出す。面接官は考え方を見ている
ケースでいきなり打ち手を並べるまず状況を質問し、仮説を立ててから
「人を足す」「残業で」で解決する範囲・日付・やり方の選択肢を並べる
知らない技術を知っているふりをする「詳しくないので、考え方として」と前置きする

この章のまとめ

🖨 まとめシート(印刷・PDF)
  • 要件確認 → 見積もり → 全体構成 → 深掘り → 進め方と体制 の順で進める
  • 構成図で終わらず、作る順番・リスク・チームの人数と期間まで話す
  • マネジメントのケース面接は、状況確認 → 仮説 → 優先順位 → 行動計画 で答える

この章のクイズ

面接ではこう聞かれる

まず答えを見ずに声に出して答え、そのあと開いて比べる。

Q1「4人のチームで3か月以内に通知システム(メール・プッシュ)を作る」とします。設計と進め方を話してください。

模範回答

まず要件を確かめます。1日に何通送るか、遅れてよい時間、重複して届くのはどこまで許されるか、配信の失敗をどう扱うか、です。設計は、各サービスがキューに通知の依頼を入れ、送信の担当(ワーカー)が取り出して外部のメール・プッシュのサービスに送る形にします。外部サービスの失敗に備えてリトライと上限を決め、同じ通知を二度送らないよう依頼ごとの ID で重複を防ぎます。送った・失敗したの記録も残します。

進め方は、最初の1か月でメールだけの最小の形(MVP)を作り、社内向けの通知から段階的に切り替えます。2か月目にプッシュ通知と、送信数・失敗率・遅れの監視とアラートを入れ、3か月目に負荷試験と主要な通知の移行をします。外部サービスへの依存が一番のリスクなので、早い段階で送信の上限や料金を確かめます。

体制は、4人のうち1人にこのシステムの設計の責任を持ってもらい、オンコールを誰が持つかもリリース前に決めます。足りない経験があれば、他チームの SRE に設計レビューを頼みます。

深掘りされたら

  • 送信数が10倍になったら、どこを変えますか?
  • 3か月で間に合わないと分かったら、何を削りますか?

見られているポイント要件確認・設計の要点・段階的な進め方と体制

Q2「離職が続いているチーム」の EM を任されました。最初の90日で何をしますか?

模範回答

最初の30日は、聞くことに使います。メンバー全員と 1on1 をして、仕事の負担、オンコール、評価、キャリア、チームの雰囲気について聞きます。辞めた人の退職面談の記録があれば読み、上司や人事からも話を聞きます。この段階では大きく変えません。

60日までに、聞いた内容から原因の仮説を立て、すぐできることを1〜2個変えます。例えば、オンコールの負担が原因ならアラートを減らす、期待が不明確なら役割を書いて合意する、などです。90日までに、それを仕組みにし、1on1 の定着や評価の基準の共有などを進めます。効果は、メンバーのアンケート、オンコールの数字、離職の兆しの変化で確かめます。

深掘りされたら

  • すでに辞めると言っている人がいたら、どうしますか?
  • 前の EM のやり方を否定せずに変えるには?

見られているポイントいきなり打ち手を並べず、聞いて仮説を立て、段階的に変えるか

Q3新しいプロダクトのチームを、0から立ち上げることになりました。どう進めますか?

模範回答

まず、目的と期限、予算と人数、既存のシステムとの関係を確かめます。何を検証するためのチームか、いつまでに何を出せばよいかで、必要な人とやり方が変わるからです。

最初は少人数、例えば TL とエンジニア2〜3人で始め、最初に出す範囲を小さく決めます。技術の選択は、チームが扱えて運用の手間が少ないものを選び、やり直しにくい決定は ADR に残します。人は一度に増やさず、オンボーディングの準備をしてから順に増やします。開発の進め方、レビュー、リリース、オンコールの約束事は最初に決めておき、ふりかえりで直していきます。

深掘りされたら

  • 最初の採用で、どんな人を優先しますか?

見られているポイント目的と制約から逆算し、小さく始めて仕組みを先に作るか

Q4公開 API にレート制限を入れることになりました。設計と進め方を話してください。

模範回答

まず、利用者ごとに1分何回までにするか、上限を超えたら HTTP 429 を返すか、多少の誤差は許すかを確かめます。構成は、入口のゲートウェイで回数を数え、全サーバーで共有するカウンターを Redis などに置きます。サーバーごとに数えると上限がずれるからです。方式は、簡単な固定窓か、なめらかなトークンバケットかを、精度の要件で選びます。

進め方は段階的にします。最初の1週間は計測だけして制限はかけず、誰がどれだけ使っているかを見ます。そのうえで一部の利用者に適用し、問題がなければ全体へ広げます。カウンターが落ちたときは制限をかけずに通してアラートを鳴らす方針にし、利用者への事前の告知や、上限を上げたい顧客の窓口を営業・サポートと決めておきます。

深掘りされたら

  • 固定窓とトークンバケットの違いを説明してください。

見られているポイント共有のカウンター、障害時の方針、段階的な導入と関係者の調整