コンテンツにスキップ

学習ホーム

2026年11月の面接に向けて

経験を深めて、自分の言葉で伝える。

AWSの性能・ネットワーク調査を軸に。開発経験と知識をつなぎ、8つのエピソードを仕上げる。

第一候補

任天堂システムズ

サーバーアプリケーションエンジニア(本体機能)

求人・準備方針 →

バックエンドWeb開発

BFF移行・CMS開発 →

クラウド・サーバーの基礎

AWS・Linuxの調査経験 →

必須4要件と、説明に使う経験。要件を満たしたかの判定は別途確認。

優先して学ぶ

経験を起点に、一つずつ
01

AWS経験を前面に

性能・OS・ネットワーク

学習 2 回 · テスト 0

観測 → 仮説 → 検証 → 判断を、自分の経験から説明する。

次の焦点 CPU・I/O・接続プールの待ちを、観測値から切り分ける。

経験:DB遅延・DNS調査 ↗
記録と再確認の問い
  • 2026-09-15 [2026-09-15-network-dns-mtu-01] 次回、pcapとFlow Logを使って、問い合わせ/応答サイズ、TC、UDP/TCP、ICMPv6 Packet Too Big、fragmentation、capture位置をどの区間で観測するかを具体化する。 根拠: Issue #19「次回」の本人希望と未確認事項。実pcap・面接説明は未実施、今回の仕組み説明にはヒントあり。
  • 2026-09-15 [2026-09-15-network-dns-mtu-01] 元ケースで『大きい成功例にTCP/53があった』『失敗例でUDP復路欠落』という観測から、どの追加観測ならGRE/PMTU仮説を支持・棄却できるかを整理する。 根拠: Issue #19「次回」の本人希望と未確認事項。実pcap・面接説明は未実施、今回の仕組み説明にはヒントあり。
  • 2026-09-15 [2026-09-15-network-dns-mtu-01] GRE outer IPv4のDF、outer fragmentation、inner IPv6 PMTUD、tunnel MTUの関係を、pcap上でどのheader/flagを見るかまで確認する。 根拠: Issue #19「次回」の本人希望と未確認事項。実pcap・面接説明は未実施、今回の仕組み説明にはヒントあり。
  • 2026-09-15 [2026-09-15-network-dns-mtu-01] 他者事例から学んだこととして、HTTP/HTTPSを支えるネットワーク、クラウド接続、可用性、観測に基づく仮説修正の観点で短い面接説明を本人が試す。実務経験としては扱わない。 根拠: Issue #19「次回」の本人希望と未確認事項。実pcap・面接説明は未実施、今回の仕組み説明にはヒントあり。
  • 2026-09-15 (2026-09-15-systems-performance-01): run queueとCPU utilization/saturationの関係を、CPUが空いているのにrun queueが長い場合に何を疑うかまで再確認する。
  • 2026-09-15 (2026-09-15-systems-performance-01): connection poolのmax size、active、idle、wait timeを使って、pool待ちとdownstream latencyをどう切り分けるかを別条件で再確認する。
  • 2026-09-15 (2026-09-15-systems-performance-01): backpressureを、同期APIではbounded concurrency/queue/timeout/429・503、非同期処理ではqueue/consumer制御としてどう設計するかを次回確認する。
  • 2026-09-15 (2026-09-15-systems-performance-01): Issue #21の追記(2026-09-16)で希望: 性能劣化の最初の観測を、症状・影響区間・CPU/core/runnable・memory/I/O・app内待ちに対応するLinux/AWSコマンドと理由で短く説明する。追加テストは未実施。
02

開発経験と結ぶ

API・分散処理・設計

学習 0 回 · テスト 4

BFF・ウォレットでの判断から、負荷・整合性・再送を考える。

次の焦点 再送・重複・途中失敗への対処を、保証できる範囲まで説明する。

経験:BFF移行・ウォレット運用 ↗
記録と再確認の問い
  • 2026-09-08 / 2026-09-08-architecture-api-idempotency-01: 次回はヒントなしで、注文作成APIの契約としてidempotency keyの生成主体・scope・payload mismatch時の扱い・DB一意制約・再送時のresponse再現まで一連で説明する。
  • 2026-09-08 / 2026-09-08-architecture-api-idempotency-01: 外部決済を含む場合、order_idとpayment_attempt_idを分け、外部決済サービス側のidempotency key、状態照会/reconciliation、ローカルstate machineをどう組み合わせるかを再出題する。 2026-09-10 [2026-09-10-int-burst-01-01] provider keyの提案は条件提示後・解法ヒントなしで再確認。key/照会のあり・なし別にretry、照合、手動復旧、at-most-onceを説明し、ローカルclaimとの保証境界を再確認する。外部key非対応の限界は今回独力未解決。
  • 2026-09-08 / 2026-09-08-architecture-api-idempotency-01: paginationは `ORDER BY created_at DESC, order_id DESC` と複合cursorを前提に、次ページWHERE条件をヒントなしで説明する。offsetとの差をinsert/delete両方で説明する。
  • 2026-09-08 (2026-09-08-architecture-queues-01): 次回、Transactional Outboxを名称なしで再出題し、orders更新とoutbox event作成を同一transactionに置く理由、およびoutbox→queue間では重複を許容する理由を自発的に説明できるか確認する。 根拠: 同sessionの回答・説明後の理解。自力での再確認は未実施。 2026-09-10 [2026-09-10-int-burst-01-01] 受付のDB正本への変更は観点ヒント後。DB/queue間の失敗条件に未投入再送・重複許容を説明したが、受付commitと照会契約は次回独力再確認。
  • 2026-09-08 (2026-09-08-architecture-queues-01): at-least-once / at-most-once / exactly-once side effectの違いを、queue deliveryと実際の外部副作用を分けて再度説明する。特に『exactly-once delivery』という語に引きずられず、consumer冪等性との組み合わせを説明できるか確認する。 根拠: 同sessionの回答・説明後の理解。自力での再確認は未実施。 2026-09-10 [2026-09-10-int-burst-01-01] 外部key非対応で自前exactly-once案が未解決。at-most-once選択は解法説明後。
  • 2026-09-08 (2026-09-08-architecture-queues-01): idempotency keyの実装をさらに深掘りする。ローカルDB内でUNIQUE制約+transactionにより実現できる範囲と、外部副作用をまたぐときに下流のidempotency / transaction ID / status query / reconciliationが必要になる理由を再出題する。 根拠: 同sessionの回答・説明後の理解。自力での再確認は未実施。
  • 2026-09-08 (2026-09-08-architecture-queues-01): source of truth / authoritative ledgerとreconciliationを、銀行・決済以外の例でも説明できるか確認する。 根拠: 同sessionの回答・説明後の理解。自力での再確認は未実施。
  • 2026-09-08 (2026-09-08-architecture-queues-01): SQS等を題材にvisibility timeout、ack/delete、receive count、retry、DLQ、redriveのライフサイクルを図なしでも説明できる状態を目指す。 根拠: 同sessionの回答・説明後の理解。自力での再確認は未実施。 2026-09-10 [2026-09-10-int-burst-01-01] 原稿Q3は未出題。今回の不足認定ではなく未実施の再確認として残す。
  • 2026-09-08 (2026-09-08-architecture-queues-01): queue運用ではqueue depthだけでなくoldest message age、enqueue/consume rate、retry count、error rate、DLQ depth/ageをどう組み合わせて見るかをproduction scenarioで再出題する。 根拠: 同sessionの回答・説明後の理解。自力での再確認は未実施。
  • 2026-09-08 (2026-09-08-architecture-queues-01): DLQ大量復旧時に、redrive rate・consumer concurrency・下流rate limit・新規トラフィックの公平性をどう調整するか、より深いcapacity planning問題へ進む。 根拠: 同sessionの回答・説明後の理解。自力での再確認は未実施。
  • 2026-09-08 / 2026-09-08-architecture-scaling-01 / DB connection pool問題を別条件で再出題し、connection総数だけでなくconnection hold time、query/transaction/lock wait、pool waitを自発的に切り分けられるか確認する。 根拠・ヒントは本sessionの該当観察を参照。
  • 2026-09-08 / 2026-09-08-architecture-scaling-01 / arrival rate・processing rate・burst duration・backlog・deadlineから、許容arrival rateやdrain timeを式で自力計算する問題を再出題する。今回、drain timeを一度見落としたため。 根拠・ヒントは本sessionの該当観察を参照。 SLOの起点とburst後の通常流入をまず確認する。 2026-09-10 [2026-09-10-int-burst-01-01] 原稿Q2は未出題。backlog、burst集団完了、全queue解消を別sessionで独力確認する(今回の不足認定ではない)。
  • 2026-09-08 / 2026-09-08-architecture-scaling-01 / rate limit / quota / priority / tenant isolationを同じnoisy-neighbor scenarioで比較し、公平性・SLO・UX・system protectionのtrade-offを理由付きで選べるか確認する。 根拠・ヒントは本sessionの該当観察を参照。 quota質問への説明はあり。ただしAWSではrateもquotaに含むため、AI説明の単純化を訂正して再確認する。
  • 2026-09-08 / 2026-09-08-architecture-scaling-01 / 負荷試験でcapacityを固定してloadを増やし、throughputの飽和、tail latency、error、queue/DB/network等からknee pointを判定する設計をヒントなしで再説明する。 根拠・ヒントは本sessionの該当観察を参照。
03

必要な基礎を補う

データベースの基礎

学習 1 回 · テスト 2

経験の少ない領域。APIの正しさと性能に必要なところから。

次の焦点 分離レベルとロックを使い分け、実際の実行計画を読む。

経験:APIの更新・検索を題材にする ↗
記録と再確認の問い
  • 2026-09-14 (2026-09-14-database-query-plans-02): 実際のPostgreSQL EXPLAIN (ANALYZE, BUFFERS)出力を木構造の下側から読み、各nodeのactual time、rows、loops、Buffersから支配的コストを自力で特定する。
  • 2026-09-14 (2026-09-14-database-query-plans-02): Nested LoopとHash Joinについて、build/probe側、外側行数、selectivity、index lookup回数、memory/spillを条件にして、説明なしでjoin strategyを選び直す。
  • 2026-09-14 (2026-09-14-database-query-plans-02): 推定誤差を、統計の古さ、単一列skew、複数列相関、parameterized Generic Planに切り分け、対応策を対応付ける短い再テストを行う。
  • 2026-09-14 (2026-09-14-database-query-plans-02): Sort Method、Memory、Disk、Buffers、Rows Removed by Filterを含むplanを読み、行数見積もりが正しいのに遅いケースを診断する。
  • 2026-09-17 (2026-09-17-database-transactions-01): READ COMMITTED / REPEATABLE READ / SERIALIZABLEを、同じ具体シナリオで『何が見えるか』『いつ待つか』『いつabortするか』『retry要否』まで再確認する。今回REPEATABLE READとSERIALIZABLEは説明を受けながら理解した部分が多い。
  • 2026-09-17 (2026-09-17-database-transactions-01): FOR UPDATE / NOWAIT / SKIP LOCKED / optimistic locking / 条件付きUPDATEを、競合率・latency・connection pool・retryコストの観点で使い分ける練習を別条件で再確認する。
  • 2026-09-17 (2026-09-17-database-transactions-01): write skewとSERIALIZABLEのread/write dependency検出を、別の複数行不変条件の例で自力説明できるか確認する。
  • 2026-09-17 (2026-09-17-database-transactions-01): 高競合時に条件付きUPDATEを第一候補にできるケースと、明示ロック・queueing・data model変更が必要なケースの境界を整理する。
  • 2026-09-17 (2026-09-17-database-transactions-01): deadlock(複数行を異なる順序でロックするケース)は終了時に未出題のまま残したため、次回扱う候補とする。
  • 2026-09-17 (2026-09-17-database-transactions-01): 楽観ロックのUPDATEも未commitの競合更新を待ち得る。commit済みversion不一致の0件と、競合writerの待機を別条件で確認する(Issueの待機不要という説明は一般化しない)。
04

開発経験を掘り下げる

テスト・リリース・保守性

学習 1 回 · テスト 0

互換性検証・共通化・段階移行を、今の知識で説明し直す。

次の焦点 何を検証でき、何を見逃したか。継続・中止の判断を説明する。

経験:開発手順・互換性検証・CMS ↗
記録と再確認の問い
  • 2026-09-10 [2026-09-10-software-testing-01] unit / integration / E2E の用語を別の小例で再度独力分類し、名称だけでなく『何を本物にして何を偽物にするか』『何を保証するか』まで説明する。 根拠: 分類軸の説明後に実MySQLとmock Serviceを分類。独力の別例は未確認。
  • 2026-09-10 [2026-09-10-software-testing-01] DI/interfaceを導入する判断を、testabilityの利益と抽象化コストのtrade-offから別例で再確認する。 根拠: 初回は「常に良い」、説明後にClockの利益を回答。
  • 2026-09-10 [2026-09-10-software-testing-01] time / timezone / DSTの境界値テストを、仕様上必要なケースと過剰なケースに分けて再確認する。 根拠: 境界説明後に22:00直前/境界を選択、ZoneId整理後の回答。DSTは存在を問う追質問あり。
  • 2026-09-10 [2026-09-10-software-testing-01] 今回未回答で終了したCIテスト戦略を続ける。unit 500 / integration 80 / E2E 20という演習条件で、毎PR・main merge後・夜間の振り分けを、検知速度・flakiness・実行コスト・failure localizationから判断する。 根拠: CIの問いを提示後に終了。未回答・解法ヒントなし。

同期済みセッションを分野ごとに集計。同じ分野内は重複せず、複数分野を扱った回はそれぞれに含みます。回数は習得度を表しません。

8エピソードを仕上げる

進め方 →

自分の担当 → 観測・課題 → 判断と代案 → 結果。経験の想起と、関連する知識の補強を一緒に進める。

  1. DB製品の処理遅延を調査・検証

    観測と仮説の切り分け

    説明練習0記録なし
  2. 説明練習0記録なし
  3. Rubyパッケージの不具合調査・連携

    再現条件とチームへの伝達

    説明練習0記録なし
  4. 説明練習0記録なし
  5. 説明練習0記録なし
  6. 説明練習0記録なし
  7. フルノードの必須アップデート管理

    期限・安全性・顧客との調整

    説明練習0記録なし
  8. 3名チームでCMSをリリース

    要件・役割分担・リリース判断

    説明練習0記録なし

説明練習は、そのエピソードを実際に話す練習まで確認できた回だけ集計。棚卸し・教材作成・関連技術の学習とは分けています。