Slide 1

Slide 1 text

ネットシェア可 イベントソーシングとAIの親 和性ー物語とLLMに理解でき るデータ 株式会社ジェイテックジャパン 高丘 知央 2025年5月19日(月曜日) イベントソーシング・CQRS勉強会 #2 #イベントソーシング勉強会

Slide 2

Slide 2 text

自己紹介 高丘 知央 - Tomohisa Takaoka X: @tomohisa GitHub: @tomohisa Works at: 株式会社ジェイテックジャパン、J-Tech Creations, Inc. JTS Group - 株式会社ジャパンテクニカルソフトウェア 品川 CTO: 中小企業の受託開発をモダンな開発スタイルで。イベントソ ーシング、CQRSなどのソフトウェアアーキテクチャに関するコンサ ル業務 Microsoft MVP for Developer Technologies from Nov 2024- OSS: Sekiban - Event Sourcing and CQRS Framework. 2 / 19

Slide 3

Slide 3 text

本日のアジェンダ 1. AI x イベントソーシングの実例 2. LLMとイベントソーシングの相性 3. 実際にやってみる:倉庫管理システム 4. まとめ 3 / 19

Slide 4

Slide 4 text

1. AI x イベントソーシングの実例 4 / 19

Slide 5

Slide 5 text

1-1. ジェイテックジャパンの事例 ジェイテックジャパン (Sekiban開発) LLM(Cline + Sonnet 3.7)とイベントソーシング(Sekiban)を組み合わせ開発。 「LLM+イベントは相性がいい。イベントはストーリーだから、コンテキストを LLM、ビジネスオーナー、プログラマにとって理解しやすい」と指摘。 イベントソーシング+アクターモデルによる新規プロジェクト自動生成に成功。 「イベントソーシングとアクターモデルの組み合わせは、AIプログラミング時代 に最適なアーキテクチャの一つ」とまで言及。 午前11時にアンケートシステム実装開始、午後4時の登壇までに完成。 5 / 19

Slide 6

Slide 6 text

1-2. IoCloud Systemsチームの事例 IoCloud Systems (Spider Campos氏、Timur Sharaftinov氏ら) 汎用コード補完AIではDDDやCQRS、ESといった高度なアーキテクチャパターンに 沿ったコード自動生成は難しいと指摘。(IoCloud Systems) 解決策として「LLM (GPT)に人間が実装したベストプラクティスのコンポーネント ライブラリを活用させるハイブリッド手法」を提案。(IoCloud Systems) VESA (Vertical Event Sourcing Architecture) ライブラリとAIコードジェネレータ を開発。 「この手法により得られるコードは驚くほど簡潔であり、最新のアーキテクチャ パターンに沿ったエレガントなものになる」と述べる。(IoCloud Systems) https://medium.com/@iocloudsystems/introducing-the-vertical-event-source- architecture-vesa-component-library-part-1-ae95ac106a15 6 / 19

Slide 7

Slide 7 text

1-3. Pyloom (OSS) の事例 Pyloom (開発者: Teng Hu氏 元AWS MLエンジニア) 「Pyloomは状態変化を追跡し…『Git for Agent』を実現し、イベントをリプレイ してLLMエージェントを再構築できる」と説明。(Teng Hu氏) エージェント開発のデバッグ困難という課題をイベントソーシングで解決するフ レームワーク。 イベントソーシングにより、LLMエージェントのデバッグと再現性を向上。 https://github.com/TengHu/pyloom 7 / 19

Slide 8

Slide 8 text

2. LLMとイベントソーシングの相性 8 / 19

Slide 9

Slide 9 text

2-1. なぜ相性が良いのか?:物語としてのデータ イベントソーシングは「何が起きたか」を時系列で記録する。(Martin Fowler氏) データの変更を永続的なイベントとして記録。 状態はイベントの再生によって導出される。 https://martinfowler.com/eaaDev/EventSourcing.html "We can query an application's state to find out the current state of the world, and this answers many questions. However there are times when we don't just want to see where we are, we also want to know how we got there." 「アプリケーションの状態を問い合わせれば、今この世界がどうなっているかは分かります。それだけで解決 する疑問も多いでしょう。しかし、私たちが求めるのは現在地だけでなく、そこに至るまでの道のりを知る ことがあるのです。 」 このイベントの連なりが「物語」となり、LLMが理解しやすい。 「イベントはストーリーだから、コンテキストをLLMにとって理解しやすい」 LLMは文脈や因果関係の理解に優れている。 9 / 19

Slide 10

Slide 10 text

2-2. LLMにとってのイベントソーシングの価値 履歴コンテキストによる理解深化 イベントの完全な履歴が、システムの進化と現在の状態の理由をLLMに提供。 LLMは履歴コンテキストを使い、より情報に基づいた予測やコード生成が可能。 パターン認識の向上 イベントデータの詳細かつ時系列的な性質が、LLMによる微妙なパターンや異常 の識別を可能に。 (イベントソーシングとLLMの相乗効果に関する一般的な考察より) 10 / 19

Slide 11

Slide 11 text

2-3. 具体例:倉庫管理システム 集約の設計 倉庫ID、商品IDをキーにした在庫集約。 コマンドの設計 入庫 (GoodsReceived) 出庫 (GoodsShipped) 入庫予約 (IncomingStockReserved) 出庫予約 (OutgoingStockReserved) 予約キャンセル (ReservationCancelled) 返品 (GoodsReturned) これらのコマンドがイベントとして記録される。 11 / 19

Slide 12

Slide 12 text

2-4. 倉庫管理:分析の可能性 単純な在庫数以上の分析 現在の在庫量だけでなく、過去のイベント履歴から様々な分析が可能。 顧客行動分析 予定通りに購入してくれる優良顧客の特定。 キャンセルが多い顧客の傾向分析。 需要予測 過去の入出庫、予約イベントから将来の需要を予測。 (イベントソーシングの予期せぬ分析価値に関する一般的な考察より) 12 / 19

Slide 13

Slide 13 text

3. 実際にやってみる:倉庫管理システム 13 / 19

Slide 14

Slide 14 text

3-1. LLMへの指示 (例) あなたはC# とSekiban フレームワークのエキスパートです。 以下の仕様で倉庫管理システムのイベントソーシングモデルを実装してください。 アグリゲート名: InventoryItem イベント: - GoodsReceived ( 商品ID, 数量, 日付) - GoodsShipped ( 商品ID, 数量, 日付) - IncomingStockReserved ( 商品ID, 数量, 予約ID, 日付) - OutgoingStockReserved ( 商品ID, 数量, 予約ID, 日付) - ReservationCancelled ( 商品ID, 予約ID, 日付) - GoodsReturned ( 商品ID, 数量, 理由, 日付) コマンドハンドラとアグリゲートのロジックも実装してください。 14 / 19

Slide 15

Slide 15 text

3-3 LLMの使い方のおすすめ タスクリストとタイムスタンプ付き設計ファイルを使 って既存プロダクト開発にもCline,Copilot AgentでAI コーディングする まず設計ファイルを書かせて、それをレビューしてから実践する。 (小さなイテレーションにおすすめ) 大きな変更の場合は、タスクを書いて一気に開始させることもあり https://zenn.dev/jtechjapan_pub/articles/d441feb5123c9f 15 / 19

Slide 16

Slide 16 text

3-3. ライブコーディング ここで実際にClineとGitHub Copilot (またはSonnet 3.7)を使い、 上記の指示書を元にSekibanで倉庫管理システムの一部を ライブコーディングで実装してみます。 (時間の都合上、スタート部分のみの実装となる可能性があります) https://github.com/tomohisa/EsStudy0519 16 / 19

Slide 17

Slide 17 text

4. まとめ 17 / 19

Slide 18

Slide 18 text

4-1. まとめ イベントソーシングの「物語」としてのデータ構造はLLMと非常に相性が良い。 (Martin Fowler氏などの考えに基づく) AI支援開発において、イベントソーシングはコード生成の質と追跡可能性を向上させ る。 (ジェイテックジャパン、IoCloud Systemsの事例より) 履歴データを活用することで、LLMはより深い文脈理解と高度な分析が可能になる。 Sekibanのようなフレームワークは、イベントソーシング導入の敷居を下げる。 イベントソーシングは、AI時代のソフトウェア開発において、より重要な役割を担 うでしょう。 18 / 19

Slide 19

Slide 19 text

ネットシェア可 Thank you! 株式会社ジェイテックジャパン https://www.jtechs.com/japan/ Sekiban - イベントソーシング・CQRSフレームワーク https://github.com/j-tech-japan/sekiban Zenn - ジェイテックジャパンブログ https://zenn.dev/p/jtechjapan_pub