学習ロードマップ

イベント駆動アーキテクチャ

イベントソーシング・CQRS・Kafka 等のメッセージ基盤を使って、非同期システムを組み立てる力を養うロードマップ。

ソフトウェアアーキテクチャの基礎(第2版) : エンジニアリングに基づく体系的アプローチ つくりながら学ぶ! ドメイン駆動設計 実践入門 データプラットフォーム技術バイブル : 〜要素技術の解説から実践的な構築法、利活用まで〜 LightGBM予測モデル実装ハンドブック 【POD】オブジェクト指向WordPress 分散システムデザインパターン : コンテナを使ったスケーラブルなサービスの設計
SCROLL TO BEGIN

このロードマップが扱うもの

/ / CQRS

このロードマップの全体像

このロードマップは、同期呼び出し中心のアーキテクチャに限界を感じ、非同期 / イベント駆動型の設計に踏み出したいバックエンド / プラットフォームエンジニアを対象にしています。学び終えたときには、メッセージング、イベントソーシング、CQRS の考え方を理解し、用途に応じて組み合わせた非同期システムを設計・運用できる状態を目指します。

学習ステップ

1. 同期と非同期の設計差: リクエスト/レスポンスと、イベントベースの世界観の違い、トレードオフを整理します。 2. メッセージングの基本: Pub/Sub、キュー、配信保証(at-most-once / at-least-once / exactly-once 相当)、順序性の前提を押さえます。 3. Kafka などのログベース基盤: トピック、パーティション、コンシューマーグループ、保持期間による再処理可能性を学びます。 4. イベントソーシング: 状態ではなくイベント列を正として保存するモデル、スナップショット、再構築の戦略を理解します。 5. CQRS とリードモデル: コマンドとクエリの分離、目的別リードモデル、整合性の遅延許容の扱いを設計します。 6. 運用とガバナンス: スキーマ進化、冪等性、デッドレターキュー、観測性、スキーマレジストリ、組織的な責務分担を整えます。

注意点と周辺知識

イベント駆動は柔軟さと引き換えに「全体で何が起きているか」が見えにくくなり、デバッグや整合性管理が難しくなります。イベントのスキーマや意味が時間とともに変わるため、互換性を意識した設計と、履歴を再処理できる運用が欠かせません。CQRS やイベントソーシングは強力ですが、全領域に適用するとコストが釣り合わないため、適切な境界づけが重要です。周辺では、分散システム基礎、DDD、トランザクションと整合性モデル、スキーマ進化、可観測性(ログ・メトリクス・トレース)、運用とインシデントマネジメントを並行して理解しておくと、どこまで非同期に踏み込むかの判断がしやすくなります。

ロードマップ

6 つのステップで読み進める

  1. 01
    ステップ 01 ソフトウェアアーキテクチャの基礎(第2版) : エンジニアリングに基づく体系的アプローチ
    ソフトウェアアーキテクチャの基礎(第2版) : エンジニアリングに基づく体系的アプローチ
  2. 02
    ステップ 02 つくりながら学ぶ! ドメイン駆動設計 実践入門
    つくりながら学ぶ! ドメイン駆動設計 実践入門
  3. 03
    ステップ 03 データプラットフォーム技術バイブル : 〜要素技術の解説から実践的な構築法、利活用まで〜
    データプラットフォーム技術バイブル : 〜要素技術の解説から実践的な構築法、利活用まで〜
  4. 04
    ステップ 04 LightGBM予測モデル実装ハンドブック
    LightGBM予測モデル実装ハンドブック
  5. 05
    ステップ 05 【POD】オブジェクト指向WordPress
    【POD】オブジェクト指向WordPress
  6. 06
    ステップ 06 分散システムデザインパターン : コンテナを使ったスケーラブルなサービスの設計
    分散システムデザインパターン : コンテナを使ったスケーラブルなサービスの設計

第 1 章

ソフトウェアアーキテクチャの基礎(第2版) : エンジニアリングに基づく体系的アプローチ

  1. ソフトウェアアーキテクチャの基礎(第2版) : エンジニアリングに基づく体系的アプローチ

    ソフトウェアアーキテクチャの基礎(第2版) : エンジニアリングに基づく体系的アプローチ
    この章の 1 冊 ソフトウェアアーキテクチャの基礎(第2版) : エンジニアリングに基づく体系的アプローチ

    現代のアーキテクチャスタイルとトレードオフを体系的に判断できるようにする

    この本で身につくこと
    • モジュール凝集度・結合度を測定する指標(イシュー可能性、抽象度、不安定度)を実際のコードベースに適用できる
    • レイヤード・モジュラーモノリス・マイクロサービス・イベント駆動など8以上のアーキテクチャスタイルを、トレードオフを根拠に選択できる
    • アーキテクチャ特性(可用性・スケーラビリティ・デプロイ容易性等)を要件から導き、スタイルとの対応を説明できる
    • CQRSパターンとドメイン・オペレーションの結合分離を設計に取り込める

    想定読者: 設計の判断根拠を言語化したいミドル〜シニアのソフトウェアエンジニア、およびアーキテクト職を目指す開発者。モノリシックからマイクロサービスへの移行、クラウド環境での設計判断に直面している実務者に特に向く。

    本の詳細を見る →
  2. つくりながら学ぶ! ドメイン駆動設計 実践入門

    つくりながら学ぶ! ドメイン駆動設計 実践入門
    この章の 1 冊 つくりながら学ぶ! ドメイン駆動設計 実践入門

    TypeScriptでDDDを設計から実装まで体得する

    この本で身につくこと
    • イベントストーミングで業務知識を整理し、境界づけられたコンテキストとサブドメインを特定できる
    • 値オブジェクト・エンティティ・集約・ドメインサービスをTypeScriptで実装し、不変条件を型で表現できる
    • リポジトリパターンとアプリケーションサービスを使ってドメイン層をインフラ詳細から隔離できる
    • Outboxパターンによって分散環境でのイベント発行の信頼性を確保する実装判断ができる

    想定読者: DDDの書籍を読んで概念は知っているが、戦略的設計と戦術的設計の連携や実装への落とし込み方で行き詰まった経験のある中級TypeScriptエンジニア

    前提知識: TypeScriptの型システム(interface・type alias・ジェネリクス)を実際に書いた経験 / Webアプリケーションにおける三層アーキテクチャ(プレゼンテーション・ビジネスロジック・データアクセス層)の基礎知識 / SQLによるCRUDとトランザクション(ACID)の概念

    本の詳細を見る →
  3. データプラットフォーム技術バイブル : 〜要素技術の解説から実践的な構築法、利活用まで〜

    データプラットフォーム技術バイブル : 〜要素技術の解説から実践的な構築法、利活用まで〜
    この章の 1 冊 データプラットフォーム技術バイブル : 〜要素技術の解説から実践的な構築法、利活用まで〜

    データプラットフォームの要素技術を体系化し、実践的な構築・改善まで一貫して習得する

    この本で身につくこと
    • Lambda / Kappa / Lakehouse / Medallion など主要アーキテクチャパターンのトレードオフを自分の業務要件で比較できる
    • Fluentd によるログ転送設計と、Apache Kafka / Amazon Kinesis を使ったストリーミングパイプラインの違いを構成図レベルで説明できる
    • ETL(Spark / Embulk)と ELT(dbt)の使い分け基準を、データ量・変換複雑度・チームスキルの観点から判断できる
    • Apache Hudi / Iceberg / Delta Lake のテーブルフォーマット比較と、ユースケース別の選定指針を説明できる

    想定読者: データ基盤の新規構築・刷新を担当するデータエンジニアおよびアーキテクト。個別ツール(Spark、dbt、Airflow 等)の断片的な知識を持ちながら、全体設計の判断軸を持てていないと感じているエンジニアに特に合う。

    本の詳細を見る →
  4. LightGBM予測モデル実装ハンドブック

    LightGBM予測モデル実装ハンドブック
    この章の 1 冊 LightGBM予測モデル実装ハンドブック

    LightGBMの仕組みをアルゴリズム遡及で理解し、実務予測モデルを組み上げる

    この本で身につくこと
    • 線形回帰→回帰木→勾配ブースティング→XGBoost→LightGBM というアルゴリズムの系譜を数式レベルで追い、LightGBM の設計上の工夫を説明できる
    • 探索的データ解析(EDA)の段階から特徴量エンジニアリング・クロスバリデーションまでを一貫したハンズオンで実装できる
    • Optuna などを用いたハイパーパラメータ最適化の手順を実際のコードで組み込める
    • SHAP 等を用いて予測値を特徴量貢献度に分解し、モデルの予測根拠を関係者に説明できる

    想定読者: Pythonで機械学習を始めており、勾配ブースティング系アルゴリズムを業務予測タスクに活用したいデータサイエンティスト・ML エンジニア

    本の詳細を見る →
  5. 【POD】オブジェクト指向WordPress

    【POD】オブジェクト指向WordPress
    この章の 1 冊 【POD】オブジェクト指向WordPress

    WordPressにOOPを持ち込みMVCと連結してWebアプリを設計する

    この本で身につくこと
    • WordPressのイベント駆動型モデルとMVCモデルを連結するプラグイン設計パターンを理解する
    • 継承とオーバーライドを活用して類似コードの再利用性を高め、保守コストを下げる実装手法を習得する
    • UMLのシーケンス図・クラス図を用いてWordPressの内部構造を視覚的にモデル化する読み解き方を身につける
    • サブクエリをER図の主キー・外部キー関係から抽象化し、データ指向でWordPressを理解する視点を獲得する

    想定読者: WordPressでカスタム投稿タイプ・カスタムタクソノミーを多用した複雑なWebアプリを開発しており、コードの再利用性を高めたいPHP開発者

    本の詳細を見る →
  6. 分散システムデザインパターン : コンテナを使ったスケーラブルなサービスの設計

    分散システムデザインパターン : コンテナを使ったスケーラブルなサービスの設計
    この章の 1 冊 分散システムデザインパターン : コンテナを使ったスケーラブルなサービスの設計

    コンテナを使った分散システムの設計をパターンで体系化する

    この本で身につくこと
    • サイドカー・アンバサダーなどシングルノードの再利用可能パターンを実システムの設計に適用できる
    • Webアプリケーションを前提にしたマルチノード分散パターンを目的から選択し、設計根拠を説明できる
    • イベント駆動処理に適した分散アーキテクチャパターンを構成要素から判断して使える
    • 大規模バッチデータ処理のワークフロー統合パターンを設計に組み込める

    想定読者: クラウドネイティブなサービスを設計・運用する中級以上のバックエンドエンジニア・SREエンジニア

    前提知識: Dockerコンテナの基本操作(docker run、Dockerfile作成程度) / 分散システムの基礎概念——冗長性・可用性・スケーラビリティが何を意味するかの理解 / KubernetesまたはDockerSwarmの概要レベルの知識(Podやサービスという概念が分かる程度)

    本の詳細を見る →