昔からあって別にそんな特殊なものではないんですよ、考え方自体は。
そういうのがCQRSって。
そういうのが説明すると本当に長くなるんで、
めちゃくちゃ省略しますけど、コマンドとクエリ分けましょうと。
コマンドとクエリ分けるときに物事ってあるじゃないですか。
物事って何かって言うと、例えば誰がジュース買いました。
ジュース買いましたって言ったときに、
じゃあその買ったジュースってその後どうなるんだっけっていうふうに考えると、
自販機からポロンってもちろん出てきます。
出てくる以外にもそれは集計されていて、
違うところでこのジュースはここの地域でどのくらい売れました。
なんかこのジュースを買ったっていう動作から、
今もっといっぱいありますけど、派生するんですよ。
在庫が少なかったら発注しなきゃいけないとか、
買ったっていう動作でその後ろに起こる出来事っていうビジネスロジックが変わってくるんですよね。
じゃあそれをDDD的な今までのレイヤードみたいな、
今までっていうのもあれですけど、普通に考えていくと、
あれとこれとそれを実現しないといけないみたいな話になるんですけど、
それってやっぱり難しいよね。
でも物事が派生して、しかもかつコマンドとクエリって分けるにはどれがポイントになるだろう。
っていう風にドメインからいろいろ考えて、
これもすごい今はしょってますけど、
それはイベントストーリングとかいろいろあるんですけど、
そういうので考えていくと、
この物事が派生するのは何かっていうと、
このジュースを買いましたっていうイベントの起点になりますよね。
だからそこからコマンドとクエリっていうのは分割して考えていきますよね。
今はそういう風になってるんですけど、そういうような考え方です。
聞いてる人はよく分かんないかもしれないですけど。
やってる側は分かるんですけどね。
聞いてる人はちょっと分かんないかもしれないですけど。
簡単にもうちょっと補足する。
補足というか分かりやすく僕が言い換えるとするならば、
こうやって伝えるのが、
コマンドクエリ・レスポンシビリティ・セグリゲーションっていうのがCQRSで、
コマンドとクエリ分けますって話が先ほど竹澤さんがされました。
何でそんなことするのっていうところで言うと、
基本的に我々って例えば商品を購入しました。
伝統的なコードの書き方だと、
購入されたっていう情報をデータに収めるときに、
その情報を読み取るときのことを考えながらデータ保存すると思うんですよね。
つまり一覧性、インデックスでどれだけデータ取ってとか、
ディテールでどうやってデータ取ってっていうのを考えながら、
RDBに即したページングとかそういうのを考えつつ、
正規化とかをやってデータ保存していくんですよね。
そうすると何が起きるかっていうと、
本来商品を買いましたっていうところに付随される情報が
自然と落ちていくんですよね。消えていく。
そういうことをすると何が起きるかっていうと、
コマンド上の我々の本当ビジネスの重要な部分って何かっていうと、
データを見るというよりもむしろ何か起きた出来事、
その出来事から何か洞察を得たりすることができるっていうところで、
コマンドが重要な情報が落ちちゃってしまっているっていうのが一つの側面がありまして、
それをそのまま保存したいなっていうところでどうやってやっていこうかってなると、
イベント送信を組み合わせるとどうにもそれができそうだ、
みたいな話になってきたりするっていうところで、
この2つのパターンが、アーキテクチャパターンが
組み合わせて話されることが多いですっていう感じですかね。
この考え方っていうかアーキテクチャって、
いつぐらいからある考え方なんですか?
その辺り僕全然知らなくて。
いつなんですかね。割とでも結構古いんですよ。
そうなんですかね。竹澤さんが、
イベント送信の話を2018年ぐらいに知っているんですね。
それがPHPが話す福岡2018なんですけど、
その頃にはそういう考え方があったっていうのは当たり前じゃないですか。
ありました。
それ以前からそういうのを知って触ってた感じなんですか?
そうですね。知って触ってたっていうか、
自分でいろいろ悩んでた時に、
これはどうやって解決すればいいんだっていう時に、
CQRS ESってやつがどうやらあって、解決できそうだぞっていうところから
自分でいろいろ取り組んだって感じですね。
よくそこにでもリーチしましたね。
やっぱりそれは自分でいろいろお調べになってたからなんですかね。
そうですね。天才だったら寝てる間に思いついたとか言いたいんですけどね。
もともとCQRSの前にCQSって考え方があったっけ?
それが結構古くて、1900…ちょっとパート調べた感じなんで正しいかわからないですけど、
1994年とかにバートランド・メイヤーさんがこれに言及してるんですよね。
そこから発生したのが確かグレイプ・ヤングが2010年くらいにCQRSって言葉を定義したっていうあたりだとは思います。
CQRSって言葉で言うと多分15年か、当時、今の中学生くらいですかね。
お二人はこの考え方を業務で採用してる感じなんですか?
はい。
普通に使ってるじゃん、どんどん。
そうですね。エッセンスは結構対応してるって感じですね。
全体で入れるには割と色々ちょっと考えないといけないこともあったりするんですよ。
単純なウェブアプリケーション的な作り方でいいかっていうと、
そういう風に隠蔽してくれてるものもあるんですけど、そうじゃないものも色々あったりするんですよね。
でもエッセンスは割と使ってるというか、かなりこれがベースになってますよね。
色んな物事の分析するみたいな。基本的にやっぱりこれです。
自分は普通のウェブアプリケーション以外にデータ活用、利活用とか、
今でいうAI、コンテキストエンジニアリングの大元を支えるようなものとか、
自分はラグとかグラフラグとかそういうのを結構作るんですけど、
ああいうのも全て出来事、事実、出来事を色々使っていくんですよ。
ちょっとこれ話すとまた長くなるんで、あれなんですけど。
やっぱりその後はデータ分析とかマーケティングっていうのは、
必ずその事実を元にセグメントとか、仮説を当てにいくみたいなのをしていくんで、
いかにその時の状態が残ってるか。マストなわけです。
みんなそれが残ってないからGAでイベント確保しようねっていう感じになってるんですけど、
だから普通にエッセンスは使えますし、考え方は基準はこれって感じですね。
なるほどなるほど。
ナルセさんの方はどうですか?
私の方は現職はこれからやるかなっていう感じですかね。
ちょっとどういう方向に流れるか分からなくて、
僕が今やろうとしているプロジェクトではやっていこうかなっていうところで、
先陣切ってやるのが僕の役目かなっていうところで今始めてるところです。
ナルセさんも結構前から注目した感じなんですか?
でも前職ですかね。
与えられた課題に対しての回答を出すために、
SQL ES 以前に僕がやりたかったのは多分イベントリブンアーキテクターがやりたかったんですよね。
なんでやりたいかっていうと、システムが成長していくときにやっぱり既存に、
穴開けるって言葉よくないんですけど、口を作って、APIを作って、
新しいサービスのために作って、それでやっと新しいサービスが作れますを繰り返していくと、
結構既存の方にどんどん負担がかかっていくじゃないですか。
そうじゃなくて、既存のシステムからイベントっていうものを外に払い出していただいて、
イベントリブンでそのイベントを起因に他のシステムが自由にって言っちゃうじゃないですか、
そのデータを活用して素結合にシステムを作っていくってなると、
どういうやり方があるかってところでたどり着いたのがこれでした。
ありがとうございます。
竹澤さんにちょっと聞きたいのが、このSQL SESの話と、
去年だったかな、ボーダンで発表された気がするんですけど、沖縄かな?
アクターですか?
はいはいはい。
アクターモデルは何て言えばいいんですかね、
これをSQL SESを実現するのに一番簡単な方法って、
言うとちょっと語弊があるんですけど、
これを実践するために割と良いんじゃないかと言われているもの。
結構昔からあるものなんですよ、アクターモデル自体は。
アクターモデルっていうのは一般的なウェブアプリケーションのライフサイクルとちょっと違っていて、
PHPなんか特にリクエストレスポンスの世界でしかできないじゃないですか、
分かりやすく言うと、リクエストが来てサーバーを受け取って、
処理して、レスポンス返して、あとはプロセスでなくなりますから、
状態を持たないわけじゃないですか。
アクターモデルっていうのはPHPの人から見るとちょっと取っ付きにくいんですけど、
ライフサイクル自体を自分たちでコントロールしていくんですよ。
例えばあなた印刷を起きてくださいねっていう指示の仕方があるんですけど、
スポーンとかいろいろ言い方あるんですよね。
そのアクターを生成したときに、
自分は今これから起きます、起きました、処理した後にいろいろずっと、
あなたもう停止していいですよって自分のプロセスの内で、
プロセス内っていうか仕組みの中で指示をするんですよ。
あなたもう終わっていいですよって言われたら、
これから落ちます、落ちましたっていうライフサイクルをすべてイベントで管理してるんです。
イベントというか、内部でずっとループして、
このアクターっていう、インスタンスだと思ってください。
インスタンスをずっと管理されてるんですけど、
このときにアクターが起き上がります、起きましたっていうときに、
以前の自分の状態を探して戻すっていう機能があるんですよ。
これはどういうことかっていうと、
そのアクターがイベントを自分で保管していくと、
終わった後に起きましたって言ったら、以前の状態に勝手に戻るんです。
これは何かっていうと、イベントソーシングで状態を戻すとかいろいろやり方があって、
そのアクターが起きたときに、アクターってメッセージ用紙で通信するので、
あと次にこれやってくださいねって言うと、他のアクターに行くんですよ、仕事が。
自分が起きたときにこの書類をもう一回再現するか、スキップするかっていうのは、
他に教えるアクターとかにも教えることができるんですよ。
なので、リードモデルって言われる、いわゆるビューのクエリの部分ですね、
HTTPのアプリケーションと言うと、ゲットリクエストとかあると思うんですけども、
ああいったときも、来たときに起こしてその状態を戻すっていうことももちろんできますし、
あとはパフォーマンス面でいろんなクエリくっつけてビュー作らないといけないとか、
ジョインしまくらないといけないとか、Nプラス1いっぱいしないといけないみたいなのあると思うんですけど、
ああいうのもアクターがメッセージを来たときに、こういうビューを作っておいてくださいねって他のものに指定しておくと、
それがHTTPアプリケーションからリクエスト来たときにはもうビューができてるみたいな状態になるんです。
そういうのを作りやすい仕組みがたまたまそのアクターモデルが持ってる感じです。
細かく言うともっといっぱいあるんですけど、そういう繋がりがあるってことですね。
なかなかCQRSESには優しいんですけど、あんまりプログラマーに優しくないかもしれない、最初は。
小学生に優しくないですね。
沖縄の登壇の時もだいぶ頭がこう、わーってなってしまって。
いや、そうなんです。小学生の人には難しいんですけど、でもこれ、
最近皆さんAIエージェントとかって開発したりします?実際。
その時にAIエージェントのデザインパターンあると思うんですよ。
セルフリフレクションさせるとかルーティングとかいっぱいあると思うんですけど、
あれ実はですね、アクターモデルでやってることと同じことをやってるだけなんですよ。
アクターモデルの人から見ると、
EIPっていう情報伝達っていうかメッセージングのデザインのパターンがあるんですけれども、
それを今の、ちょっとこれあんまり言い過ぎるとそうじゃねえっていうのは実はあるんですけど、
でもそのAIエージェントで言われるデザインパターンっていうのとほとんど同じなんですよね。
あと仕事の振り分け方とか、生存のさせ方とか、いろんな濃度に仕事をさせるっていうのも、
そこの中枢が今LLMとかでできるようになってますけど、
そこがアクターがやるかLLMがやるかみたいな違いぐらい。
これもバイアスの話だから、やってないってのは全然わかんないと思いますけどね。
いや難しいですね、やっぱり話を聞くと。
いややるとそんな難しくないんですよ。
なんかメッセージパッシングの世界なんで、いわゆるアラン系のオブジェクト思考の話に近いんで、
クラスベースのオブジェクト思考になる人が死んでると、結構そこらへんのギャップがあるかなって感じはありますかね。
ちょっと思い出したんですけど、なるせさんに以前このポッドキャスト出てもらったときに、
ちょっと触れたような気がするんですけど、そんな話を書籍にするみたいなことを言ってたような気がするんですけど。
今5割くらいかけてますよ。
進んでるんですね、その話。
めっちゃやってる。
この辺りの話を噛み砕いて、きっと書籍にしてくれるんだろうなって。
そうですね。私の場合でもね、アクターモデル側は触らないやり方でやってるんですよね。
アクターモデルがないCQRS ESのフレームワークもあるんで、僕はそっちの方を好んで使ったりしてます。
そこに違いがあるんですね。
そうですね。
でも、書籍の話が流れてなくて、ちゃんと進んでるってのがわかってですね、非常に期待。
って感じです。
で、LTは公募にしましたね。
そして今回なんですけど、
場所はさっき言ったように福岡工業大学でやると。
で、登壇の枠はもう決まってるんですかね?
はい、決まっておりまして、実はまだちょっと一部調整中ですけど、
タイムテーブルはほぼ確定してあって、仮ですけどもう公開されてるんですけど、
え、されてんの?
公開したって言ってないんですけど、実はされてます。
え、どこにあるの?リンクが見つけられないよ。
ちょっとあのですね、
早く出したほうがいいっすよ。
いろいろですね、ちょっと忙しくて。
手伝おうか?
いいな、今言いましたね。
いや、だってやばいでしょ。
いや、でも、
われわれは聞きたい話としたい話だけして、
お酒飲んで帰ろっていう。
よくわかってるんですけど。
いや、ちょっと待ってください、今ここのショーノートにちゃんと入れて。
なんで?
運営費用が基本僕らのポケットマナーですからね。
そうなんですよ。
運営費用が基本僕らのポケットマナーですからね。
そうなんですよ。
なんで?
運営費用が基本僕らのポケットマナーですからね。
これ、公開されてないんじゃないの?
あれ、されてないですか?
されてない、それ多分ですね。
ちょっと今作業しよう、じゃあ。
あけさまさんがログインしないと見れない状態ですね。
そっかそっか。
これ公開されてないよ。だってリンクが出てないんだって、オルテのページに。
あれ、ほんとですか?
出てないですね。
あら、じゃあちょっと探そう。
今やるの?
確かに出てないわ。
出てないでしょ。
コンパスの方に一応今載ってるんですよね。
ただ、タイムテーブル自体はコンパスの方に載せてなくて、発表される方の情報は今あって。
あ、そうですそうです。
そうなんです。これもですね、なんで2つにしてるかっていうと、コンパスに登録しておけば、
カワレスのとこに載るかなとかいろいろあってんですね。
あー、わかるわかる。それやりました、我々も。
PHPカワレス不効果もやりました。
なんか少しでもリーチしたいよねって。
いや、そうそうそう。
わかる。
で、無料だし、思うとこ2つでも大丈夫っつって。
めっちゃわかる。
確かに確かに、登壇する内容は出てますね。
ただ、タイムテーブルの形にはなってないですね。
あ、そうですそうです。
今回は通常の講談とワークショップもあるんですよね。
はい。40分セッションとショートの20分とワークショップがありますね。
ワークショップはどのぐらいでもやっていいんですけど、だいたい60とか80ぐらい。
マックス80ぐらいで設けてるみたいですね。
全部公募ですか?声掛けも?
いや、でもほとんど声掛けですね。
あ、そうなんだ。
一部公募って感じで、ほとんど声掛けしてます。
テーマがテーマなだけに、やっぱりちょっと難しいっていうか。
そうですね。
っていうのもありますし、
実践してやってる人の話を聞いて直接質問できるみたいなのは、
そこ大事にしたいなって思っているんで。
やってみたみたいな話も全然いいんですけど、
元々の根底みたいなところは、
やりながら途中で考えたんですけどね。
海外のDDDヨーロッパってあるんですけど、
そういうイベントがあるんですよ。
ドメイン駆動のヨーロッパのコミュニティ。
すごいでかい巨大なコミュニティなんですけど、
そこのテーマが、いわゆるメッセージ駆動。
メッセージ駆動って、このCQRS ESを前提にした話なんです。
話というか、メッセージ駆動というか、
ヨーロッパとかあっちのほうはほとんどこれなんですよ。
メインストリームみたいな。
日本ってそういうところからちょっと遅れてったりするわけじゃないですか。
別に良い悪いは別として、
このすごい良いテクノロジーだし、
しかも今まさにAI合わせてって今時代になっているときに、
コンテキストを蓄積するのはどうやっていくかというと、
このES、CQRSってめちゃくちゃ強力なんですよ。
そういうのも考えたときに、
やっぱり日本でもこういうのってチャレンジして欲しいし、
面白そうだなって思ってくれる人が増えて欲しいなとか。
やっぱりやるからにはDDヨーロッパに負けないようなことを
ちょっとやりたいなと思ってやってるというのもあって、
実際にやっている人たちに直接お声掛けしてという感じですね。
これは竹澤さん参加したんですか?
オフライン、オンライン?
オンラインで参加しました、自分は。
あれ?DDヨーロッパかな?
イベントソーシングライブっていうのももう1個あるんですけど、
そっちも参加しましたね、オンラインで。
めちゃくちゃ面白かったです。
その空気感を見て、こんなのをやってみたいって思った感じが。
そうそうそうそう。
すごいめちゃくちゃ面白いなっていうのと、
ヨーロッパの人たちってどうやって考えてるんだろうって。
実際に参加した。
現地参加したかったんですけどね。
オンラインのチケットだけ一応参加して。
今年せっかく福岡で開催するんで、
人を集めたいじゃないですか。
いやーそうなんですよ、そうなんですよね。
そうなんですよ、だって人集めてくんないと、
一応ワークショップお願いされているのでやるんだけど、
カニバリたくないじゃないですか。
ワークショップ参加しすぎてメインセッションいないもん、
そうだし、メインセッションいすぎて、
俺のワークショップ一人もいないとか、
それもそれで寂しいからね。
そうなんですよ。
今回ちょっとイベントストーミング体験するっていうやつを
ワークショップ頑張ってやろうと思ってるんで、
なかなか外には公開してないやつなんで。
そうそうそうなんですよ。
ナルセさんのイベントストーミングのやつもそうですし、
あとは加藤純さんもワークショップその後やるんです。
そこも他ではほとんど聞けないし体験できないみたいなやつ。
その辺が推しポイントというか見どころみたいなところなんです。
他にこういうのもあるよみたいなのがもしあれば。
そうですね。他はやっぱりトークの内容が
本当に皆さんやられてる人ばっかりなんですよ。
ほとんど皆さん実際にやってるって方々なので、
やっぱりその生の声っていうのも聞けますし、
あとそのAIと組み合わせてどうやるかみたいなのも
こちらのお話としてあるんですよね。
そこら辺もただ聞くだけじゃなくて、
やっぱり現地開催っていうこともあって、
Ask the Speakerは15分から20分くらいはもう設けてあるんですよ。
次のセッションまでも割と時間を持たせてあるようにしていて、
そこはもう本当にやってる人と実際にフランクに話したいとか、
そういうのをすごい大事にしてもらいたいので、
そこは割と大事にしてる感じですね。
こじんまりとしたイベントなのであるんですけど。
タイムテーブルが出てないんでどういう構成かわかんないですけど、
トラック数とかは決まってるんですか?
トラック数は一応…
すいません、タイムテーブルこの後はちょっと後悔するんですけど。
ぜひですよ。
トラック自体は1と2とワークショップのトラックの3つがあるわけですね。
なるほど。
ただ全部ギューギューにはしてないので、
ワークショップだけはちょっと縦にバーンといっちゃいますけどね。
そうなんですよ。
ただ、自分とナルセさんが当日めちゃくちゃ忙しいんですよ。
喋ってない間にカメラ、写真撮りに行かないといけないっていう。
忙しいのか当日。
知らなかったんだ。
大丈夫です、大丈夫です。
メインで写真は自分が撮りに行くんでここから。
自分の写真にはあんまりこだわってないからいいんですけど。
忙しいのか当日忘れてたの。
忙しいのか当日忘れてたの。
確かに他のイベントだと2人ともカメラ構えてるイメージがあるんで。
大吉ジョージVMでもカメラ構えてたし、竹田さんも。
そうそうそう、やりました。
香川は香川で、ナルセさんもカメラ持ってた気がする。
そうですね。
じゃあ次は、
次は、
次は、
次は、
次は、
そうですね。
香川直近の話ですけどね、香川ではね、
僕はカメラもやる予定がなかったんですけど、いつの間にかね、
ナルセさんカメラ持ってきますよね、みたいな感じになったんで。
頭かすに入っている。
確かにね、運営スタッフのフォームに、ナルセさん記入してくれって言われて、
僕ゲストじゃなくて運営スタッフだったんだとかって記入して、
前日、前々日ぐらいに持ち物買われるんで、
え、僕何のスタッフですかって聞いたんですよね。
カメラ持ってくるんだ、みたいな。
ゲスト登壇者ですよね、本来は。
ゲスト登壇者だと思ってたんですけど、やっぱりカメラ用意だったんですね、僕ね、と思いながら。
そうですね。公開もされてるんでぜひ聞いてほしいです。
もうされてるんですね。
されてましたね。
聞いてみよう。
ちょっと香川の話に反れちゃったんですけど。
皆さんぜひ来てください。
そうですよ。参加費無料ですもんね。
無料ですし、多分日本でこの手の話聞けるイベントは絶対他にないと思います。
だから2024年に集まった200人をこっちにも集めないといけないですよ。
そう、200人。200人くらい行ってほしいです。
200人くらい行ってほしいです。
無料なんで。
これ聞いていいかわかんないですけど、今実際どんなとこなんですか?
今ですか?そこ行っちゃいますか。今はちょうど200の半分くらいですね。
でもすごいな。100ちゃんと集まってるね。
それはそうなんですけど、もうちょっと行ってほしいんですよ。
福岡工業大学なので、一番でかいところに集まっているのは
多分一番でかいホールも使ってたかと思うんですけど。
あそこ使うんですか?
あそこはでもでかすぎるんで、大会と閉会だけにしようかなと思って。
その後は下かな、移動していくつか部屋あると思うんですけど。
はい、ありますね。
大会と閉会だけにしようかなと思って。
その後は下かな、移動していくつか部屋あると思って。
はい、ありますね。
あそこでやります。一番大きい部屋がトラック1で、トラック2がその隣。
ワークショップは向かい側の部屋を使ってみたいな感じですね。
普通に参加された方はなんとなくイメージがつくかもしれないですね。
そうですね。ちょうど場所全く同じところなんで。
基本はセッションとワークショップがあって、スポンサーさんも取ってないんで、
他にブースみたいなのはないってことですよね?
ないです。なので、Ask the Speakerで聞き放題です。
どうなることやら。
もう100人を目指したいね。
そうですね、もう100人来てほしいですね。
福岡なんでそんな300、400みたいな贅沢は言いません。
あとちょっと先ほどお名前が出たかと思うんですけど、
その福岡でやるきっかけとなった方が作られているものがあるんですよね。
これ石板ってやつですかね?
これの話も聞ける感じですか?
そうですね、石板に絡んだお話も一応あります。
トークがこの人さんのやつだけまだ公開してないんですけど、
この後公開されます、あります。
どんな内容かというと、
はい、あります。
何の情報ぶつかるんですかね。
何も情報ぶつけなかったな。
めっちゃ面白いな。
めちゃめちゃ面白いじゃないですか。
この石板っていうのがCQRSフレームワークを使った開発ができるツールというか。
そうです。CQRSが実現できるものになっておりまして、
今回は石板を使って実際のパターンというのがあるんですけども、
それを実際にどうやって実現するのかというお話と、
LLMと組み合わせてお話になりますので、
割と先進的というか、かなりこれから注目されるようなスタイルのお話になるんじゃないかなと思います。
僕この方存じ上げないんですけど、なんか勉強会みたいなのもやられてるみたいですけど、
この石板を起点とした。
そうですそうです。CQRS ESの勉強会。
勉強会というか、1時間のやつでみんなでおしゃべりというか、
みんなで普通に勉強会するというやりしますし、
あとアーキテクチャカンファレンスとかですね、
石板のJTEC JAPANさんですけども、そこはいろいろ協賛とかもしていただいていて、
皆さんがですね、これについてお話する。結構やられてるところですね。
そう、やっぱコンパスとか調べてみると、結構こういう関連のイベントだったりとかやられていて、
この話題が出てきてるんだなぁというのを感じましたね。