仕組みから学ぶ Web

学習ロードマップ

段は「何を先に知っている必要があるか」だけで決まっています。難易度順ではありません。 読了にした記事は緑になり、前提が揃っていない記事は点線で表示されます。 飛ばして読んでも構いませんが、点線の記事は途中で前提知識を補いながら読むことになります。

1

第 1 段

前提なしで読める。ここから始める

— / 12
2

第 2 段

第1段のどれかを読んでいれば入れる

— / 12
3

第 3 段

土台が要る。ここから実務の判断に効いてくる

— / 22
ネットワーク / Web応用

CDN — 利用者の近くに置いて、オリジンを守る

ネットワーク / Web応用

キャッシュ戦略 — いつ捨てるかを設計する

ネットワーク / Web応用

メールが届かない — 「送れた」と「届いた」は別の話

ブラウザ応用

CORS — 壁に穴を開けるのは「読まれる側」

ブラウザ応用

ブラウザのストレージ — 読めるか、と、送られるかは別の話

ブラウザ応用

アクセシビリティ — div にクリックを付けた日から、誰かが使えなくなる

認証 / セキュリティ応用

JWT — 取り消せない代わりに、問い合わせが要らない

認証 / セキュリティ応用

XSS・CSRF・SQLi — データとコードの境界が壊れる

認証 / セキュリティ応用

認可 — ログインしている人が、そのデータを触ってよいとは限らない

認証 / セキュリティ応用

パスワードの保存 — 漏れたあとに、何日持ちこたえられるか

認証 / セキュリティ応用

依存パッケージ — 自分が書いていないコードが、本番で動く

データ / DB 設計応用

N+1 問題 — 1回で済むはずの問い合わせが100回になる

データ / DB 設計発展

実行計画 — DB が何をしようとしているかを読む

データ / DB 設計応用

RDB と NoSQL — 問い合わせの形を、いつ決めるか

データ / DB 設計応用

論理削除と物理削除 — 「消した」を、すべてのクエリが覚えていられるか

設計 / アーキテクチャ発展

ドメインモデリング — 業務の言葉をコードの形にする

設計 / アーキテクチャ応用

I/O と並行処理 — 待っている間に、何をするか

API 設計応用

リソース設計 — 一度公開したら変えられない契約

運用 / 開発プロセス応用

フィーチャーフラグ — 消し忘れたスイッチが、本番を壊す

運用 / 開発プロセス応用

バックアップと復旧 — 取れていることと、戻せることは別

運用 / 開発プロセス応用

設定の管理 — 環境ごとに違う値を、どこに置くか

運用 / 開発プロセス発展

SLO とエラーバジェット — どこまで壊れてよいかを、先に数字で決める

4

第 4 段

積み上げた上で初めて腑に落ちる層

— / 16
ブラウザ応用

Service Worker — 直したのに、利用者の画面だけ古い

ブラウザ応用

画像と動画の配信 — 軽くしたはずの画像が、ページを遅くしている

ブラウザ発展

描画をどこでするか — HTML を作る時と場所を、データごとに選ぶ

認証 / セキュリティ発展

OAuth 2.0 と OIDC — 「代理で使わせる」と「誰かを証明する」は別物

認証 / セキュリティ応用

監査ログ — 「誰がやったか」を、あとから言えるか

認証 / セキュリティ応用

セキュリティヘッダ — 最後の1枚を、ブラウザに張らせる

認証 / セキュリティ応用

プロンプトインジェクション — 読ませた文章が、命令に変わる

データ / DB 設計応用

ID の設計 — 連番を外に出した日から、数えられてしまう

データ / DB 設計応用

全文検索 — LIKE '%...%' が効かなくなる日

設計 / アーキテクチャ応用

時刻とタイムゾーン — 保存した「0時」は、どこの0時か

設計 / アーキテクチャ応用

文字コードと正規化 — 同じに見える文字が、一致しない

設計 / アーキテクチャ応用

状態をどこに置くか — URL に無いものは、共有できない

API 設計応用

冪等性 — 同じリクエストが2回届く前提で設計する

API 設計応用

エラー設計 — 呼び出し側が正しく振る舞える情報を返す

API 設計発展

REST と GraphQL — 何を楽にして、何を難しくするか

API 設計応用

ページネーション — 数えて飛ばすか、続きから取るか

5

第 5 段

さらに前提を重ねた層

— / 7
6

第 6 段

さらに前提を重ねた層

— / 4
7

第 7 段

さらに前提を重ねた層

— / 3
8

第 8 段

さらに前提を重ねた層

— / 2