本文へ移動

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

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

経験・行動面接

★★★ 必須9トピック・面接 5問

国内の Web 系の面接では、最も比重が大きいのが経験の深掘りです。技術の説明のあとに「実際に作って、判断して、どうなったか」を数字つきで話せると評価が大きく変わります。エピソードは STAR(状況・課題・行動・結果)で準備します。

19.1STAR の書き方

用語★★★ 必須
ひとことで

エピソードを、状況・課題・行動・結果の4つに分けて話す型。行動に一番時間を使い、結果は数字で示す。

話す時間の半分を「自分の行動と判断」に使うS 状況サービス・規模・チームT 課題問題と自分の役割A 行動判断と理由・やったことR 結果数字・学び・仕組み化
STAR の配分の目安(%)
要素書く内容よくある失敗
Situation(状況)サービスの種類と規模、チームの構成、時期前置きが長すぎる
Task(課題)何が問題で、自分の役割は何だったか課題の大きさが伝わらない
Action(行動)自分が判断・実行したこと。なぜその方法を選んだか、他の案は何だったか「チームで」ばかりで自分が見えない
Result(結果)数字での成果(速さ・エラー率・売上・工数)、学び、その後の仕組み化数字がない・学びがない

数字は、正確な値が言えなくても「約半分に」「1秒台から 200ms 台に」程度で十分です。社外秘の数字は割合で言い換えます。

面接ではこう答える

STAR は、経験を Situation(状況)、Task(課題)、Action(行動)、Result(結果)の順で話す型です。状況と課題は短くまとめ、話す時間の半分ほどを、自分が何を判断して、なぜその方法を選んだかという行動に使います。結果は、応答時間やエラー率、工数などの数字で示し、学びとその後の仕組み化で締めます。チームの成果の中で、自分の役割をはっきりさせるのが大事です。

例は架空のものです。自分の経験で、同じ粒度で書いてみます。

要素例
Situation月間 50万人が使う EC サイトで、セールのたびに商品一覧の表示が遅く、離脱が増えていた。チームはバックエンド 3人・フロント 2人
Task一覧ページの改善の担当になった。目標は LCP を 2.5 秒以内(RUM の 75 パーセンタイル)
ActionRUM で遅いのは一覧の TTFB だと分け、APM で SQL が 1リクエスト 120 回出ている N+1 を見つけた。preload でまとめ、並べ替えの列に複合インデックスを足した。画像は CDN で WebP に変換し、最初の画像に fetchpriority を付けた。効果を分けて測れるよう、1つずつリリースした
ResultTTFB は 1.2 秒から 300ms に、LCP は 4 秒台から 2.2 秒に。セール時の一覧からの離脱率が下がった。N+1 を CI で検出する仕組みも入れ、同じ問題は再発していない

この例のよい点は、測って原因を分けたこと、1つずつ出して効果を確かめたこと、再発防止を仕組みにしたことが、行動の中に入っている点です。

要素例(障害対応)例(意見の対立)
Situation決済の API で、まれに二重決済の問い合わせが来ていた新しい画面を SPA で作るか、SSR で作るかでチームの意見が割れた
Task原因の調査と再発防止を任されたテックリードとして方針を決める立場だった
Actionログから、タイムアウト後のクライアントのリトライで2回処理されていると特定。冪等キーを導入し、決済サービスにも同じキーを渡した。既存の二重決済はサポートと返金の手順を作った両案の判断の軸(SEO の要否・初回表示・チームの経験・運用の費用)を表にし、1画面だけ両方で試作して LCP と開発の手間を測った
Result二重決済の問い合わせが 0 件に。冪等キーを他の作成系の API にも広げた数字を見てチーム全員が SSR に合意。判断の記録を ADR として残し、後から来た人にも理由が分かるようにした

意見の対立の話は、相手を論破した話にせず、判断の軸をそろえて、データで決めた話にします。

面接官は1つのエピソードを何段階も掘り下げます。次の方向に答えられるか確かめておきます。

深掘りの方向質問の例
判断の根拠なぜその方法を選んだのか。他にどんな案を考えたか
自分の貢献あなた自身は具体的に何をしたのか。チームの他の人は何をしたか
困難一番難しかったのはどこか。どう乗り越えたか
周りとの関係反対した人はいたか。PM やデザイナーとどう合意したか
測り方効果はどう測ったか。その数字は本当にその変更の効果か
振り返り今やり直すなら何を変えるか
再現性同じ状況が別のチームで起きたら、どう進めるか

3段階目くらいまで「なぜ」を聞かれても答えられるよう、エピソードごとに判断の理由と他の案をメモしておきます。覚えていないことは「正確な数字は覚えていませんが、約○○でした」と正直に言います。

カテゴリよく聞かれる質問アピールしたいこと
技術的に難しかったこと一番難しかった機能・バグは?原因の切り分け方、仕組みの理解、粘り強さ
性能・品質の改善遅さ・不具合をどう直した?測ってから直す、効果を数字で、再発防止
設計・技術選定その技術をなぜ選んだ?後悔はある?比較の軸、試作で確かめる、記録を残す
障害・失敗自分が原因の障害は?隠さず報告、影響を止める判断、仕組みで再発防止
協働デザイナー・PM と意見が違ったときは?ユーザーと事業の目的に立ち返る、代案を出す
技術的負債負債をどう返した?事業への影響で説明して時間を取る、少しずつ返す
学び・成長最近学んだ技術は?どう学ぶ?何を解決するかで理解し、試して確かめる
レビュー・育成レビューで気をつけていることは?正しさ・安全から指摘、理由を添える、人ではなくコードの話

カテゴリごとに1つずつ、最低5つのエピソードを用意します。1つのエピソードが複数のカテゴリに使えることもあります。

項目書くこと
見出し一言で(例:一覧 API の N+1 を直して応答を 5分の1に)
STAR4つの要素を各2〜3行で
数字前と後、期間、人数・規模
自分の判断選んだ方法と理由、捨てた案
困難一番難しかった所と、その乗り越え方
学び次に同じことがあったらどうするか
使えるカテゴリ性能・設計・協働 など

声に出して1回2分で話せるか測ります。長いエピソードは、状況を削り、行動の判断を残します。

過去の不満ではなく、次にやりたいことで話す避けたい言い方・今の会社の不満だけ・「技術を学びたい」だけ・どの会社にも言える理由伝わる言い方・今の経験で得たこと・次に挑戦したい課題・その会社でなぜできるか
転職の理由と志望動機の伝え方
要素例
今までで得たことEC のバックエンドで、性能改善と決済の信頼性を担当してきた
次にやりたいこともっと大きな規模で、設計から運用まで責任を持ちたい
なぜこの会社か技術ブログで読んだ、注文基盤の作り直しの課題に、自分の経験が活かせると考えた

「学びたい」だけだと受け身に聞こえるので、「自分の○○の経験で、御社の△△に貢献しながら、□□を伸ばしたい」の形にします。

19.8逆質問の例

★★☆ 重要
知りたいこと質問の例
開発の進め方仕様はどう決まりますか?エンジニアはどの段階から入りますか?
リリースデプロイの頻度と、リリースの手順はどうなっていますか?ロールバックはどうしますか?
品質テストやレビューの文化は?不安定なテストや技術的負債にはどう時間を取っていますか?
障害最近の障害と、その後に何を変えたかを教えてください
技術の選定新しい技術は誰がどう決めますか?最近採用・やめたものは?
役割と成長入社後の最初の3か月で期待されることは?評価はどう決まりますか?

調べれば分かること(福利厚生・使っている言語)より、実際の働き方と課題を聞きます。答えから、その会社で自分が活躍できるかを判断する材料にします。

場面気をつけること
オンライン面接音声・カメラ・画面共有を事前に試す。エディタと図を描く道具を開いておく
最初の1分結論から短く。自己紹介は2〜3分に収める
質問の意図が分からない「○○という意味で合っていますか?」と確かめてから答える
知らないこと知ったかぶりをしない。知っていることから推測を述べる
設計・コーディング考えを声に出す。迷ったら選択肢ごと話す
終わったあと答えられなかった質問をメモし、次に備える

この章のまとめ

🖨 まとめシート(印刷・PDF)
  • エピソードは STAR で整理し、自分の判断と数字の結果を必ず入れる
  • 「なぜ」「あなたは何を」の深掘りに3段階まで答えられるようにする
  • 逆質問で、開発の進め方・品質の文化・リリースの頻度を確かめる
  • STAR の書き方:エピソードを、状況・課題・行動・結果の4つに分けて話す型。行動に一番時間を使い、結果は数字で示す。

この章のクイズ

面接ではこう聞かれる

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

Q1最近作った機能で、一番工夫したことを教えてください。

模範回答

STAR で話します。例えば「月間 50万人の EC サイトで、商品一覧が遅く離脱が増えていました」と状況を短く述べ、「一覧の改善の担当として、LCP を 2.5 秒以内にすることが課題でした」と自分の役割を示します。

行動では、RUM で TTFB が原因だと分け、APM で N+1 を見つけて preload とインデックスで直し、画像の配信も変えた、と判断の順に話します。1つずつリリースして効果を測ったことも入れます。結果は「TTFB 1.2 秒が 300ms、LCP は 2.2 秒に」と数字で示し、N+1 を CI で検出する仕組みを入れたことで締めます。

深掘りされたら

  • なぜその順番で直したのですか?
  • 他にどんな案を考えましたか?

見られているポイント測って原因を分けたか、自分の判断と数字の結果があるか

Q2自分が原因で起きた不具合や障害の経験を教えてください。

模範回答

例えば、キャッシュのキーにユーザー ID を入れ忘れ、ログイン中の別のユーザーの情報が数分間見えてしまった、という経験を話します。気づいたらすぐに報告し、キャッシュを無効にする設定で影響を止め、影響したユーザーを調べて関係者に伝えました。

そのうえで原因を直すだけでなく、ユーザーごとのデータには必ずキーにユーザー ID を含める共通の関数を作り、他人のデータが見えないことを確かめるテストを追加しました。失敗を隠さず報告したこと、影響を止める判断を先にしたこと、仕組みで再発を防いだことを伝えます。

深掘りされたら

  • 報告するのは怖くありませんでしたか?
  • 同じ失敗を他の人がしないために何をしましたか?

見られているポイント隠さない姿勢、影響を止める判断、仕組みでの再発防止

Q3デザイナーや PM と意見が分かれたとき、どう進めましたか?

模範回答

例えば、デザイナーが提案したアニメーションの多い画面が、安いスマホで重くなる懸念がありました。反対するだけではなく、まず目的が「商品の魅力が伝わること」だと確かめ、試作を作って実機で INP を測り、数字を共有しました。

そのうえで、目的を保ちつつ軽くできる代案(transform だけを使う・最初の表示では動かさない)を出し、一緒に決めました。意見の対立は、どちらが正しいかではなく、ユーザーと事業の目的に照らして判断の軸をそろえ、データで決めるようにしています。

深掘りされたら

  • 合意できなかったらどうしますか?

見られているポイント目的に立ち返る、データと代案で合意を作る

Q4技術的負債にどう向き合ってきましたか?

模範回答

負債は「返すべきもの」ではなく、「開発の速さや障害の多さという形で、事業に利息を払っているもの」として説明するようにしています。例えば、テストのない注文の処理を誰も触りたがらず、変更に毎回2日かかっていました。変更の頻度と障害の件数を数字にして PM と共有し、スプリントの2割を改善に使う合意を取りました。

一度に作り直すのではなく、変更のある所からテストを足し、少しずつ処理を分けました。結果として、同じ種類の変更が半日で出せるようになりました。

深掘りされたら

  • 作り直すべきか、少しずつ直すべきかはどう判断しますか?

見られているポイント負債を事業への影響で説明し、少しずつ返す進め方

Q5新しい技術をどう学び、どう採用を決めますか?

模範回答

新しい技術は、まず「何の問題を解決するものか」を調べ、今のチームにその問題があるかを確かめます。例えば Server Components を検討したときは、JS の量と初回表示の遅さが課題だったので、1画面だけで試作し、送る JS の量と LCP を測りました。

採用するときは、チームの学習の手間、運用の変化、やめるときの戻しやすさも含めて比較し、判断と理由を ADR に残します。流行っているからではなく、課題と数字で決めることを大事にしています。

深掘りされたら

  • 採用してうまくいかなかった技術はありますか?

見られているポイント課題から出発する選び方と、試して確かめる姿勢