Skip to main content

32章 詳細アウトライン 📘✨

Part 0:ウォームアップ&環境(1〜4章)🔰💻

第1章:分散って何が大変なの?を先に体感😵‍💫🌍

  • 目的:単体アプリの常識が崩れるポイントを知る
  • 要点:遅延⏳/部分故障💥/二重送信📨/順序ズレ🔀
  • ハンズオン:わざと遅いAPIを作って「待ち」が起きるのを見る🐢
  • AI:Copilotに“遅延入りHTTPサンプル”を作らせて読む🤖📄

第2章:Windows+VS Codeで実験用プロジェクトを作る🧰✨

  • 目的:以後の章で迷わない“型”を作る
  • 要点:TS設定、実行コマンド、フォルダ構成
  • ハンズオンapps/apiapps/worker の2プロセス構成を作る📦
  • AI:設定ファイル雛形をAIに出させて“意味を説明させる”🤖📝

第3章:題材ドメインを決める(在庫・注文・決済)🛒📦💳

  • 目的:抽象話をやめて、全部“この話”で統一する
  • 要点:どこが即時一致必須?どこは遅れてOK?
  • ハンズオン:ユーザー画面の状態(処理中/完了)を紙に描く✍️
  • AI:ユーザーストーリーをAIに整形してもらう🤖✨

第4章:ネットワークの現実(タイムアウト・切断・再送)🔌📨

  • 目的:「失敗するのが普通」を身体に入れる
  • 要点:タイムアウト、リトライで二重になる危険
  • ハンズオン:通信をランダム失敗させるスイッチを付ける🎛️
  • AI:失敗注入(fault injection)のアイデアをAIに出させる🤖💡

Part 1:CAPの“肌感覚”(5〜10章)⚖️🔥

第5章:「整合性」って何が一致してる状態?🧠🔍

  • 目的:一致対象を言葉で分けられるようにする
  • 要点:状態(DB)/事実(イベント)/表示(画面)
  • ハンズオン:同じ注文でも「画面は処理中・DBは確定」状態を作る
  • AI:用語ミニ辞典をAIに作らせて貼る📖🤖

第6章:CAPを日常例で理解する(まずは暗記しない)🍞📦

  • 目的:C/A/Pの直感を作る
  • 要点:C=一致、A=応答、P=分断耐性
  • ハンズオン:分断中の挙動を2パターン作る(拒否 vs 受付)
  • AI:CAPの“たとえ話”を5案出させて一番良いの採用🤖✨

第7章:Partition(分断)を実験で起こす🧪🔌

  • 目的:「Pが起きうる」ことを疑わない脳にする
  • 要点:片方だけ落ちる、片方だけ遅い、が普通
  • ハンズオン:片方のプロセスだけ通信遮断して挙動を見る
  • AI:分断時のログ出力ポイントをAIに提案させる🤖🕵️‍♀️

第8章:CAPの結論(PがあるならCかAどっち?)⚖️💥

  • 目的:意思決定として説明できるようにする
  • 要点:P下ではCとAを同時に最大化できない
  • ハンズオン:「在庫は拒否(C寄り)」「注文受付(A寄り)」を作り比べる
  • AI:判断理由を文章化させて、自分の言葉で直す✍️🤖

第9章:どこは即時必須?どこは遅れてOK?を仕分ける🧩✅

  • 目的:業務ルールから“整合性の必要度”を分解する
  • 要点:危険度(お金💸/法務⚖️/UX😌)で分類
  • ハンズオン:題材ドメインを「強整合/遅延OK」に色分け🟥🟨🟩
  • AI:分類の基準チェックリストをAIに作らせる🤖📋

第10章:最終的整合性=“UXで支える設計”🎨⏳

  • 目的:「遅れる世界の見せ方」を学ぶ
  • 要点:処理中表示、後で確定、失敗時の戻し
  • ハンズオン:注文後に「反映待ち」ステータスを入れる
  • AI:画面文言(安心させる言い方)をAIに量産させる💬🤖

Part 2:最終的整合性の道具箱(11〜22章)🧰✨

第11章:整合性レベル① Strong vs Eventual 🧱🕊️

  • 目的:まず2択で語れるようにする
  • 要点:強整合=遅い/落ちやすい、最終的=速い/ズレる
  • ハンズオン:同期確認あり/なしでレスポンス差を体感
  • AI:メリデメ比較表をAIに作らせる📊🤖

第12章:整合性レベル② セッション保証(自分の書き込みは見たい)👤✅

  • 目的:初心者が好きな“当たり前”を保証する発想
  • 要点:Read-your-writes、Monotonic read(入門)
  • ハンズオン:同一ユーザーだけ新しい値を優先して読む
  • AI:実装方針をAIに説明させて理解チェック🤖🧠

第13章:レプリケーション入門(Leader-Follower)🪞👑

  • 目的:複製の基本パターンを知る
  • 要点:Leaderに書く、Followerは遅れて追従
  • ハンズオン:Followerを遅延させて“古い読み取り”を再現
  • AI:図解(文章ベース)をAIに作らせる🗺️🤖

第14章:読む場所を選ぶ(Primary/Replica/Cache)👀🧭

  • 目的:「どこから読む?」でUXが変わるのを知る
  • 要点:速さ vs 新しさ
  • ハンズオン:読取先を切替できるフラグを実装🎛️
  • AI:判断フローチャートをAIに作らせる🤖🧩

第15章:書き方を選ぶ(同期/非同期/キュー)✍️📬

  • 目的:A寄り設計の“受付→後処理”を作る
  • 要点:非同期化、キュー、再試行
  • ハンズオン:APIは受付だけ→Workerが後で反映
  • AI:最小構成のタスクキュー案をAIに出させる🤖📦

第16章:クォーラムの直感(多数決)🗳️✨

  • 目的:多数決で“ある程度の一致”を作る感覚
  • 要点:N/R/W、R+W>N のイメージだけ押さえる
  • ハンズオン:3ノード擬似で「2票取れたらOK」を体験
  • AI:練習問題(N/R/Wの組み合わせ)をAIに作らせる✍️🤖

第17章:古い読み取りを減らす工夫(超入門)🧹📚

  • 目的:ズレを小さくする“地味テク”を知る
  • 要点:read repair(雰囲気)、更新直後はPrimary読む等
  • ハンズオン:更新直後だけPrimary読むルールを入れる
  • AI:適用条件(いつ使う?)をAIに整理させる🤖✅

第18章:キャッシュの整合性(速いけど古い問題)🧊⚡

  • 目的:現場で超よく出る問題に慣れる
  • 要点:TTL、無効化、キャッシュミス時の再取得
  • ハンズオン:TTLの長短で“古さ”が変わるのを確認
  • AI:TTL決めの考え方をAIに質問してまとめる🤖📝

第19章:マージしやすいデータ設計①(カウンタ/加算)➕🔢

  • 目的:収束しやすい形に“最初から”しておく
  • 要点:いいね数は「上書き」より「加算」
  • ハンズオン:加算型の更新に変更して競合を減らす
  • AI:上書きが危ない理由をAIに説明させる🤖🧠

第20章:マージしやすいデータ設計②(集合/履歴/イベント)📚🧩

  • 目的:上書きしない表現(履歴・集合)を知る
  • 要点:タグは集合、操作は履歴、表示は集計
  • ハンズオン:操作ログ→集計で画面表示を作る
  • AI:イベント設計の命名案をAIに出させる🤖🏷️

第21章:競合の正体(同時更新で壊れるパターン)💥⚔️

  • 目的:競合を“再現”できるようにする
  • 要点:lost update、二重反映、取り消し漏れ
  • ハンズオン:同時更新で値が変になるテストを作る
  • AI:競合テストケースをAIに量産させる🧪🤖

第22章:競合解決の選び方(LWW/ルール/マージ)🎛️🧠

  • 目的:「どの解決策が合うか」を判断できる
  • 要点:LWWは簡単だけど危険、ドメインルールが強い
  • ハンズオン:LWW版とルール版を比較して事故を見る😱
  • AI:解決策の選定基準をAIにチェックリスト化🤖📋

Part 3:順序・収束・CRDT(23〜26章)🔀🧲

第23章:順序問題① 逆順・遅延・重複配達📨🔀

  • 目的:メッセージは“きれいに届かない”を理解
  • 要点:逆順、重複、遅延はセットで来る
  • ハンズオン:わざとシャッフルして処理し、壊れ方を見る
  • AI:シャッフル/遅延ユーティリティ案をAIに出させる🤖🧰

第24章:順序問題② 因果(ざっくり)とバージョン付け🧵🕰️

  • 目的:“どっちが先?”を判断する最低限の考え方
  • 要点:単純なversion番号、更新の前後関係
  • ハンズオン:versionが古い更新は弾く(もしくは再取得)
  • AI:設計の注意点(時計ズレ等)をAIに列挙させる🤖⚠️

第25章:CRDT入門①「勝手に収束する」ってどういうこと?🧲✨

  • 目的:CRDTの思想を雰囲気で掴む(数学はやらない)
  • 要点:マージ可能、順序が違っても収束しやすい
  • ハンズオン:収束する/しないデータの違いを比較
  • AI:説明用の例え話をAIに作らせる🤖🌈

第26章:CRDT入門② G-Counter風で“収束体験”🔢🌱

  • 目的:手を動かして“収束”を経験する
  • 要点:各ノードの値をマージして合意を作る
  • ハンズオン:ノード別カウント→合成→一致を確認
  • AI:コメントを丁寧に書かせて読みやすくする🤖📝

Part 4:信頼性(リトライ・冪等・配達保証)&運用(27〜30章)🔁🧷🕵️‍♀️

第27章:リトライ設計(バックオフ/ジッター/タイムアウト)🔁⏳

  • 目的:リトライは“薬にも毒にもなる”を理解
  • 要点:指数バックオフ、ジッター、最大回数
  • ハンズオン:失敗率を上げて、リトライで安定化させる
  • AI:よくあるミス(雪崩リトライ等)をAIに出させる🤖❄️

第28章:冪等性(同じ要求が何回来ても壊れない)🧷✅

  • 目的:二重実行の現実に強くなる
  • 要点:冪等キー、重複排除、状態遷移の二重適用防止
  • ハンズオン:同じ注文IDを2回送っても1回分にする
  • AI:冪等のテスト(同一キー2回)をAIに作らせる🧪🤖

第29章:配達保証の現実(Exactly-onceは幻👻)📨

  • 目的:現実的な前提(At-least-once)で設計する
  • 要点:重複が来る、欠落もある → だから冪等&再同期
  • ハンズオン:同じイベントを3回流しても壊れない設計にする
  • AI:設計方針を“人に説明する文章”にAIで整える✍️🤖

第30章:観測(ログ/相関ID/主要メトリクス)🕵️‍♀️📈

  • 目的:ズレや遅延が起きても追えるようにする
  • 要点:相関ID、遅延、失敗理由、リトライ回数
  • ハンズオン:1リクエストの流れをIDで追跡できるようにする🧵
  • AI:ログに出すべき項目テンプレをAIに作らせる🤖📋

Part 5:テスト&卒業制作(31〜32章)🎓🚀

第31章:分散っぽいバグを捕まえるテスト(故障注入)🧪🎲

  • 目的:遅延・分断・重複をテストで再現する
  • 要点:フェイク/スタブ、ランダム遅延、ランダム失敗
  • ハンズオン:故障注入ONでテストが落ちないように直す
  • AI:テスト観点(何を壊す?)をAIに洗い出させる🤖✅

第32章:卒業制作(ミニ分散EC)🛒📦🎓✨

  • 目的:CAPと最終的整合性を“選んで説明できる成果物”を作る

  • 要件

    • 注文は受付(A寄り)→後で収束(最終的整合性)⏳
    • 二重送信でも壊れない(冪等)🧷
    • リトライしても破綻しない🔁
    • 相関IDで追える🕵️‍♀️
  • 成果物:デモ動画orスクショ+「C/Aどっち寄り?なぜ?」の説明文📝

  • AI:READMEの構成案をAIに出させて、自分の言葉で仕上げる🤖✨


いい感じの運用ルール(この教材の“勝ち筋”)🏆😊

  • 1章ごとに「結論1行」を書いてから次へ✍️✨
  • 実装はいつも「最小で動く→壊す→直す」の順🧪🔨✅
  • AIは「生成」より「レビュー役」で使うと伸びるよ🤖👀