社内でイベントソーシング勉強会をやりました
はじめに
NE株でバックエンドエンジニアをしている谷口(@taniguhey)です。
先日、社内でイベントソーシングに関する勉強会をハンズオン形式で行ったので、そのレポートを書いていこうと思います。
きっかけ
ある日、オフィス内で偶然聞こえてきた「イベントソーシングという設計が何やらいいらしい」「でも実際どう使うかはわからない」という同期のエンジニアの声がきっかけでした。
そこで、ちょうど12月にイベントソーシングのライブラリを触った直後だったため、社内で勉強会を開こうと声をかけ、開催することになりました。
今年の1月にオフィスが移転したため、こういう雑談的な会話が聞こえてきたり、良い環境で勉強会が開催できるのは移転したメリットだなと思います。
準備
概念はなんとなく理解しているが、どうやって扱うかがわからないというのが話の始まりだったため、ハンズオン形式で「座学」→「実装」→「座学」→「実装」とステップを踏んで繰り返せるような資料を作りました。
イベントソーシング自体は言語に依らず、RDBの扱い方が一般的なものと違ったりCQRSなどにも発展するため、普段アプリケーションコードを書いていないインフラエンジニアなども勉強会に誘っていました。
Laravelをベースにした学習用Webアプリのリポジトリを用意したのですが、普段PHPを書いていない人、Laravelに慣れていない人、インフラエンジニアの彼らが躓かないよう、使い方を解説して実装する指示がある資料と、実装部分をコピペでできる資料(模範回答用)の2つを用意しました。
PHPer用資料
ビギナー用資料兼模範回答
当日
当日の参加者は12人ほど集まってくれました。
新オフィスでの初社内勉強会となり、ピザをみんなで食べながらの開催になりました。
全体のようす
約2時間の勉強会で、
- イベント駆動
- イベントが保存される仕組みや、プロジェクターによってリードモデルの更新が行われる仕組みを把握するために、明示的な呼び出しと比較しての解説
- イベントソーシング
- モデルを保存することがイベントを保存することになっているのを、イベントストアに永続化されたデータを見ながら体験
- 簡易CQRS
- 簡易的に同一のRDB内に読み取り用のテーブルを作成し、イベントをきっかけに更新するように
の3つを学びました。
解説中のようす
参加者の声や感想
終了後、参加者に感想を聞いたりして多かった声や開催した感想をまとめます。
- 初めて聞いた概念だったので、手を動かして知ることができて良い機会だった
- イベント駆動な設計をすんなり理解できる人と、そうでない人が分かれた
- シンプルな実装を心がけている人ほど、暗黙的に後続処理が呼び出されるイベントは直感的でなく、「javascriptの'onClick'とかと同じ」と解説するとしっくり来た人が多かったです
- ライブラリやフレームワークが裏でうまいことやってくれている箇所が、ブラックボックスすぎて"自分が理解できているのか"自体がわからない
- 自分の携わるアプリケーションにとっては、どのような機能に使えそうかを考えたりした
- イベントソーシング自体を採用するのは大掛かりなので、疎結合にしたい箇所にまずはイベントを使ったり、書き込みと読み取りを分けるという目的を忘れずあくまで手段として使うようアドバイスをしました。
資料を用意した自分にとっては、ハンズオン形式のため流れに全員が追いつけるかを意識し過ぎて、解説すべき特徴などに深く言及しなかったのが反省かなと思います。
終業後に行う勉強会としては長時間の勉強会でしたが、最後まで集中して参加してくれたため、非常に有意義な時間になったと思います。
さいごに
勉強会開催の声をかけて計画を手伝ってくれたまきまき(@_mkmk884)や、参加してくれたエンジニアのみなさんありがとうございました。
またいつか何かのテーマで勉強会を開いて、業務に関わらずエンジニアとしてスキルを身につける機会を増やしていけたらなと思います。

NE株式会社のエンジニアを中心に更新していくPublicationです。 NEでは、「コマースに熱狂を。」をパーパスに掲げ、ECやその周辺領域の事業に取り組んでいます。 Homepage: ne-inc.jp/
Discussion