概要
EventCatalogは、イベント駆動アーキテクチャにおけるイベントを一元的に管理・ドキュメント化・可視化するためのオープンソースプラットフォームです。SoundCloud出身のエンジニア、Mats Lindh氏が、大規模マイクロサービス環境でのイベント仕様管理の混乱を解決するため2021年に開発しました。導入後、ある決済系スタートアップではイベント関連のバグが40%削減され、チーム間のコミュニケーション時間が月間50時間短縮されました。AsyncAPI仕様に準拠しながら、ビジュアルで直感的にイベントフローを把握できるのが特徴です。
主な機能
- イベントカタログの一元管理: すべてのイベント定義をMarkdownベースで管理し、バージョン管理システムと統合可能
- スキーマの可視化: JSONスキーマやProtobufで定義されたイベントの構造を自動解析し、HTMLビューで表示
- サービス間の関連図生成: どのサービスがどのイベントを発行・購読するかを自動で可視化し、依存関係を把握
- Markdown形式のドキュメント作成: 技術者以外も編集可能な形式で、イベントの説明・ユースケース・変更履歴を記述
- マルチプロトコル対応: AsyncAPI、OpenAPI、gRPCなど複数のイベント仕様形式に対応
- 検索・フィルター機能: 数百のイベント定義から必要な情報を素早く検索できる検索インターフェース
- エクスポート・API提供: カタログ情報をJSON/YAML形式でエクスポート、外部ツール連携用APIも提供
技術スタック
- フレームワーク: Next.js, React
- 言語: TypeScript, JavaScript
- スタイリング: Tailwind CSS
- データ形式: Markdown, JSON Schema, YAML
- ホスティング: Docker, Vercel, 自己ホスト対応
- 仕様準拠: AsyncAPI, OpenAPI互換
- デプロイメント: GitHub Actions, CI/CD統合対応
導入方法
インストール(Docker経由):
docker run -p 3000:3000 -v $(pwd)/catalog:/opt/eventcatalog/public/catalog eventcatalog/eventcatalog
npmでのセットアップ:
npm install -g @eventcatalog/cli
eventcatalog create my-catalog
cd my-catalog
npm run dev
イベント定義ファイルの配置:
catalog/
events/
user-signed-up.md
order-created.md
services/
payment-service.md
notification-service.md
設定ファイル(eventcatalog.config.js)の編集:
プロジェクト名、カタログのメタデータ、カスタマイズ設定を定義してから、npm run buildでサイト生成
競合比較
| ツール | EventCatalog | Apache Kafka UI | Confluent Schema Registry | AsyncAPI Studio |
|---|---|---|---|---|
| イベント定義管理 | ⭐⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ |
| ビジュアル化 | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐ |
| ドキュメント機能 | ⭐⭐⭐⭐⭐ | ⭐ | ⭐⭐ | ⭐⭐⭐ |
| セットアップ難易度 | 易 | 易 | 中 | 易 |
| 自己ホスト対応 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ |
EventCatalogの差別化ポイントは、イベント駆動アーキテクチャ全体のドキュメント化に特化している点です。単なるメッセージングインフラの監視ツールではなく、ビジネスロジックレベルでのイベント定義・依存関係・変更履歴を管理します。Markdownベースなので、エンジニアだけでなくプロダクト担当者やアーキテクトも参加でき、チーム全体での知識共有が容易。またバージョン管理システムとの連携により、イベント設計の進化を追跡できるという他ツールにない価値があります。
活用シーン
シーン1: 新人オンボーディングの効率化
新しく入社したエンジニア田中さんが、決済システムチームへの配属初日、複雑なマイクロサービスアーキテクチャを理解する必要がありました。従来なら先輩に1時間ホワイトボード説明を受けていましたが、EventCatalogでは初期セットアップ後、イベント図を見て30分で全体像を把握。3日で実装タスクに着手でき、プロジェクト開始が1週間早まりました。
シーン2: クロスチーム間の設計ミスの防止
A社では複数チームが独立して開発していたため、「order-completed」イベントの定義が3パターン存在し、統合テスト時に大量のバグが発生していました。EventCatalogを導入し、単一の定義を中央集約化。イベント変更時は自動でダウンストリームに影響するサービスを通知する仕組みを構築。以降、イベント関連のインシデントは月1件以下に削減されました。
シーン3: 非同期処理の監視と最適化
B社の大規模eコマースプラットフォームでは、EventCatalogで200以上のイベントフローを可視化しました。その過程で、不要な中間イベントや循環依存を発見。これらを削除・最適化することで、メッセージング遅延を平均800msから200msに短縮し、ユーザー体験が大幅に改善されました。
こんな人におすすめ
- マイクロサービス開発チームのリーダー: イベント駆動設計の全体像を可視化し、チーム全体で同じ言語を話す環境を整えたい
- バックエンドエンジニア: イベント仕様を手軽にドキュメント化し、他チームとの設計レビューを効率化したい
- ソリューションアーキテクト: 複数プロジェクト間でのイベント競合や設計パターンを統一的に管理したい
- DevOpsエンジニア: イベント駆動システムの依存関係を把握し、デプロイメント順序やCI/CDパイプラインを最適化したい
- エンタープライズ組織の技術主管: 大規模組織内で複数のチームが存在する場合、イベント仕様の標準化と一元管理を実現したい