#380 ゆるふわDDDでビュッフェを作ってみよう!
2025/8/10 ·
-
この番組はエンジニアの成長は楽しい学びからおもとに日々インプットした話題をワイワイお届けするラジオになってますということでですね最近の僕読んでる本なんですけどエリック・エバンスのドウェイン駆動設計読んでるんですよ古典ですね古典を読んでて今読み切ってはないんですが半分くらいまで読んでるんですけど
-
ドメイン駆動設計なんかちょっと他の情報も知りたいなと思いながら読んでてふとポッドキャストで調べてみるとひまじんプログラマーの136話ですねエリック・エバンスのドメイン駆動設計と指揮たす言語今月の一冊というエピソードが引っかかりますとそうなんやこちらののりさんが今月の一冊で読んで話してた時のエピソードでドメイン駆動設計についての理論
-
みたいな概念の説明というか何喋ったか1ミリも覚えてなさすぎて怖いっすドメインとはみたいなところとかお話はしてたんですがただ本質は捉えきれないよねみたいなもし本質捉えきったらまた出しましょうかみたいなので終わってた系のエピソードだったんですけど今本を読んでいて
-
これビュッフェで行けるんじゃないか行けちゃう?はい久しぶりだなこれビュッフェで行けちゃうんじゃないかなっていう久しぶりだねちょっと着想というか思い立ったのでいいねワクワクしてきたよドメイン駆動設計でビュッフェアプリじゃなくてビュッフェを作ろうっていうビュッフェアプリじゃなくてビュッフェを作ろうはいなるほどねプログラミングじゃないですビュッフェを作りますはいはいはいなるほどじゃあ一個レイヤー吹き飛ぶな
-
ただちょっとビュッフェを作るとはいえ人間をプログラムだと思って作るんで前も焼肉とかでやったじゃないですか伝わる人にしか伝わらなくて申し訳ないんですけど焼肉?人間を焼く?この人はこのクラスだとしますみたいな
-
○○クラスの動きをしてますこのスタッフの人はみたいなノリでちょっとプログラミングと紐付けながらBFAをDDDで作ってみようっていうのをちょっと今回チャレンジ的にやってみますなるほどね牛角スタイルの時のやつねそうそうそう牛角の時の話ですねでなおかつちょっとちょうどお便りがあったんでそれも紐付けて紹介するんですけどほううん
-
ラジオネームMさんのお便りなんですがありがとうございます感想だけさらうんですがいつも楽しく配置をしております最近はAIが多くてブームだなと思いながらAIの進化が早すぎてキャッチアップに若干疲れを感じているので耳でインプットできるのは大変助かりますこれからも頑張ってくださいとありがとうございますポッドキャストで話してほしいことはい
-
AI時代を生き抜くためにも設計力が必須だと思いますバリューオブジェクトやエンティティなどDDD文脈でよく目にする実装の詳細についての回はあったかと思うんですがDDDについて詳しく深掘りしている回はなかったはずなので話してほしいですできればじゅんぺいさんによろしくお願いします今日はじゅんぺいが詳しく話すための入り口としてなるほどDDDをやってみようという回になります
-
なんとですねDDDそもそもDDD何なのかというとおさらいからなんですがドメイン駆動設計と呼ばれているものになっていますドメインドリブンデザインですねこれドメイン駆動設計とは何かバシッと言える言葉は僕はないと解釈しました既存でってことは既存でただあえて説明するとするなら
-
ソフトウェア設計手法というか開発手法だと思います設計と開発一緒になっているものでドメインエキスパートの言葉に基づいてドメインモデルを作ってドメインモデルを基づいて開発を進めるというものだと思います分かりやすく言うとめっちゃ詳しい
-
まず問題解決の対象がありますこれドメインですそれにめっちゃ詳しい人呼んできてその人と会話しながらその現実世界の課題をできるだけそのまんま
-
課題解決方法をそのままコードに落とし込みましょうねというなるほど考え方だと捉えていますビュッフェを作るにあたってビュッフェに詳しい人とめちゃくちゃ会話をしながらそのビュッフェをちゃんと設計していくということですねはいなんと我々ヒマプロの強みなんですけどビュッフェやってた人がいるんですよビュッフェ経験者がいて
-
それがのりさんですね俺だ俺だ俺だ俺だ俺だどんな名前だいのりさんってそのビュッフェの中で何をやってた人でしたっけ僕はですねはいまあいわゆるなんて言うんだろうないわゆれないなこれハイゼンに近いけど
-
サーバーですねサーバーサーバーをやったんですねつまりお客さんが来る前にビュッフェの準備をしてお客さんがいるときは足りないものを補充したりとかっていうのをやってで終わったら片付けるみたいな本当にインターフェースの部分をやってましたねインターフェース作る人フロントエンドエンジニア
-
話変わってくるから急に分かりづらくなったエンジニアに寄りすぎて今日はのりさんをドメイン行きスパートじゅんぺいと俺は開発者
-
っていう体でドメイン駆動設計ってこういう風に進んでいくよねで完成したものを眺めながらDDDで出てくる文脈で言うこれはこれだねみたいな話をして終われると超綺麗だなと思いながらノリでいく感じでいきますノリでバイブスでちなみにいつもあれなんですけどドメインっていうのはある特定の業種
-
なんていうのがいいんですかねドメインってドメインはなんかビジネスの概念っていうんですかはいはいはいビュッフェで言うとビュッフェ提供業務っていうドメインですはいはいはいなるほどいつも説明に困るんですよねドメインのOKですありがとうございますわかりづらい概念だけどドメインだからあれのせいですよねDNSのドメインのせいですよね確かに
-
でもなんとなく業種みたいなイメージで使われることもありますよね金融ドメインとか不動産ドメインとか一方なんか職種のパターンもあるような気がしててなんか経理ドメインみたいな
-
そういうふわっとした領域的なものを言うよねリュードは意外と文脈によって違う気がするそうリュード違うんですよこの今僕が言ったリュードと多分レイヤードアーキテクチャと呼ばれるアーキテクチャの中で出てくるドメイン層のドメインのリュード多分違うんですよねコードのドメイン層のドメインの方が多分細かいうんうんうんうんうんビュッフェ提供業務なんていうふわっとしたドメインは出てこない多分コードの中にはうん
-
確かにっていうので同じ単語使ってて分かりづらいんですけど頑張って乗り切っていきましょうありがとうございます今日でなんとなく捉えてもらえると嬉しいなと思いますねじゃあまずドメイン駆動設計まず最初何するかというとドメインエキスパートの人にどんな仕事してますかというかどんな作業がありますかというのを洗い出しから始まりますなるほどじゃあじゅんぺいくん
-
ドメインエキスパートの人に今日なんですけどビュッフェ全部実装するととんでもない量になっちゃうんでノリさんがやってる仕事のうち何かをコードじゃないですけどドメイン設計というかレイヤードアーキテクチャに落とし込んで満足するまでいきますなるほどなのでまずノリさんが何をやってたのかを洗い出すところからいきましょうか
-
っていうのでちょっとヒアリングしてのりさんが持ってる仕事を教えてください全部ヒアリングしていいんですね引き出してちょうだいわかりましたじゃあちょっとビュッフェの仕組み僕全然わからないんでまずビュッフェってどんなものかって教えてもらってもいいですか食べ放題です食べ放題でそれは食い気味だったなビュッフェだけにな
-
注文スタイルなのか自分で取ってくるスタイルなのか基本はね取ってくるスタイルですねはいはいその時にのりさんって何をしてるんですかねいつも営業中ですかはい営業中は
-
まずは皆さん各々取っていくんで減るじゃないですか例えばもう皿が少なくなってきたら皿の中の食べ物が減ってきたらそれを補充したりとかあとはね温かい食べ物とかだとなんかビュッフェが置いてる銀器みたいなやつの下にロウソク燃料って呼ばれてるんですけど
-
加熱してることとかがあってそれ切れてる場合とかもそこ変えたりとかなるほどなるほど汚れてる部分があったらちゃんと綺麗に保ったりとかやっぱね箸とかねトングがねいろんなとこ行っちゃうんですよねいろんなとここの料理についてるトングが違う料理のトングになってるみたいなそうそうそうそうとか料理のところに刺さりっぱなしになってるとかあーありますねなるほどあるんでそういうのをちゃんと戻したりとかはい
-
あとこれ意外とこうなんかやってみないと気づけない業務なんですけど僕ホテルのビュッフェで働いてたんですよ基本はなんかその宿泊者が朝とかに使うやつなんですけど朝からねお酒飲む人とかいるんですよなんでそういう人がいた場合とかは個別で注文を取ったりもしますねでその場合はもう部屋付けするみたいな
-
部屋付け部屋番号を聞いてそれを付けるというか店票に部屋番号だけ書いておくみたいな何注文したかとそしてそれをフロントに持っていくとチェックアウトの時に生産できるみたいななるほどそのあたりですね補充と注文と清掃みたいなベースは食べ物を取ってくるところが中心でそう
-
他清掃部屋の店内の清掃とかも入ってくるんですかいや店内というか会場だけだねビュッフェの他の場所は他の広場やってますね客室だったら客室の担当がいるしロビーとかだったら多分清掃担当いますねはいはい
-
ありがとうございます業務外っていうか営業時間外とかは何かやってたりするんですかもちろんスタートというかオープン前に料理の準備したりとかは必要なので会場のセッティングすることもありますし終わったらそれを片付けますねなるほど
-
ありがとうございますっていうのでカイさんこのぐらいの流度で大丈夫そうですかねはいこのぐらいの流度で大丈夫です今じゅんぺいにヒアリングしてもらったのは繰り返すんですが減った食事の補充するっていうのと減った燃料の交換するっていうのと汚れた食器とかカトラリー類っていうんですか取り替えるあとはドリンクの注文受けと部屋版につけるあと掃除
-
あとオープン前後にも作業があるよということだったんですが一旦ビュッフェの中の話をしましょうかでいきましょうか影響中の話か準備と片付けは関係なくってことですねはい準備と片付けは関係なくでこういう用途というかこういう作業がありますっていうのを洗い出してもらったんですがこれいわゆるそのユースケースにあたると思うんですよこういうのりさんというアクターっていうんですかはこういうことをしますとうんうんうん
-
でその何かの実装を考えていきたいんですがここから分かりやすく減った食事の補充とかにします?なんかあるあるがありそうなのがエピソード的には盛り上がるなと思いつつ一旦食事補充で考えてみるでいいですかねはいじゃあじゅんぺくん次減った食事の補充というものを
-
深掘りしていきますドメインクの設計においてはさっき言った通りドメインキースパートに対象の作業というかを聞いて共通言語指揮タスキングと呼ばれる共通言語を作りながらその作業をモデル化するんですよモデル化っていうのはちょっと微妙な表現で難しいんですけど要するに図にするんですよ何かしら
-
なので今のりさんが言っていた減った食事の補充をするっていう一つの仕事に対してどういうプロセスとかどういう登場人物が出てくるのかというのを深掘りしてみましょうじゅんぺいが実装するにあたって必要な情報を揃えていきましょうかあまりにも違う方向に行ってたら挟むんで一旦好きに減った食事の補充を
-
っていう仕事についてどういう登場人物がいてどういう風に処理が進んでいくのか聞いてみてください引き出して引き出してはい何の情報が必要なのかちょっと分かりきらないかもしれないなえーとじゃあエキスパートのノリさんにお聞きしたいんですけど何でしょう今回減った注文減った料理の補充に関してちょっともうちょっと深掘りしたくですねおー
-
どういう流れでやっているのかなっていうのを聞いていきたいですわかりましたノリさんはまず減った食事は食事が減るっていうのを気づくのはやっぱり近くに立ってずっと見てるとかっていう感じなんですかねそれで言うとね見回りしてますね店内を歩いているで
-
減ったっていうのもなかなかいろんな減り具合があると思うんですけど確かにはいさすがになくなるまでは放置しないのが原則ですねっていうのもなくなったら絶対待つ人が出てきてしまうんでそこはおもてなし的にアウトなんで残り2割ぐらいになったら交換サインかなっていうなるほど
-
その2割ぐらいかなっていうのはもうそのサラに対して自分の目分量というかまあそうですねさすがに定規持ってきてとかはやんないですねその時はもう完全にノーリーさんの判断誰かに言われてとかではなくえっとねいや割とこれはもう全員自立して動いてますねうんうんうん
-
なるほどそうねで料理とかはどこから取ってくるとか誰かに一回流れなくなってきてますよとかって報告してから取りに行ったりとかそういう流れってどうなってますかねまず裏に冷蔵庫とあとはオーブンがあるんですよオーブンは熱度加熱するやつじゃなくてなんか温かいままホットスチームなんだっけな
-
音像庫って呼ばれてるんですけど日本語だと温かいまんま食べ物を置いておけるやつがあって基本的にはそこから取り出して新しいのを交換するっていう流れになりますねストックが基本的にはあるんですね基本はあるはいどうぞだいたいそこはなんだろう
-
料理の人気度みたいなやつそんな日によって変わんないんでそれぞれこれぐらいあれば足りるだろうって量があらかじめ作られてるなるほどその日の例えば朝のビュッフェだったら2時間空いてるとしたらその2時間分がもう作られてなんとかに置いてあるそうでおそらく宿泊者数見て決めてるんだろうなって気はするけどそこはちょっと知らないなるほど
-
なるほどそういうやり取りっていうか流れをやっていく中で誰かと連携するみたいなのはあんまりない基本ないんだけどたまにあるのはストックにないときあるんですね例えばラス1を出したときとかは一応伝えるなるほどストックなくなりましたってじゃあその場合って場合によってはだと思うんですけど追加で
-
急遽作ったりとかがあるねで作ってもらったらそれをストックの中にのりさんが置きに行くいや入れといてくれることが多いなるほどじゃあのりさんに関しては基本ストックからその実際ビュッフェのお料理を持ってるところの動きそうねなるほどはいわかりました
-
そのぐらいなのかな料理の補充に関しては他なんかあります料理の補充に関してこういうのも仕事もあるとか残った2割は新しく持ってきた皿に合流させたりとかなるほどあとここは自分だけの業務じゃないんですけど後半の方は皿小さくしてもらったりとかありますねうんうんうん
-
人いなくなってきて そんなについてくる人もいなくなるからもう小さい皿でいいよねっていうそうそうそうそうはいはい なるほど
-
あと合流させたら空きの皿が出るじゃないですかそれを洗い場まで持ってってそこの担当の人が洗うそうですねビュッフェついてるホテルになると洗う量尋常じゃないんで洗い場専用のスタッフとかいますねそうなんですねそこまで持っていくのはノリさんそうですお願いしますって
-
基本的に棚に全部積んでいくんですけどキャスター付きのそれがパンパンになった時に持っていくみたいな感じキャスターで持っていく了解しましたありがとうございますそんなもんですかねですありがとうございます
-
今の話からモデルを作っていきましょうっていうのでドメインモデルっていうドメインモデルの図を作っていくんですけどこれめちゃくちゃ動画にしたいんですが音声で何とか伝えていきますねDTTにおいて整理すべき概念でよく言われるというか整理すべき概念として代表的なのがサービスエンティティ値オブジェクト
-
みたいなところになってくるんですねでまあわかりやすそうなところからいくとエンティティ前エンティティと値オブジェクトの話はなんかした気がしてるんですけどなんかしそうな気はするはいでまあざっくり言うとエンティティは状態とかを持つようないわゆる多分のりさん前のエピソードでIDを振るべきか
-
同じオブジェクトでもそれを識別したりしたいかはエンティティそれが必要ないなら値オブジェクトみたいな話をしてたような気がしますとサービスはこのエンティティとか値オブジェクトを使って一連の操作をしていくものになります
-
今回ののりさんの業務の中でどんなエンティティとか与えオブジェクトが登場したかなっていうのを見ていきますとまずのりさんというかハイゼンでしたっけなんて言うだろうね補給ハイゼンスタッフエンティティが登場しましたこれは多分ハイゼンスタッフ
-
はもうそれぞれ人間なんでIDで識別したいでしょうしその人たちによって仕事のランクとか違うでしょうちょっと待って従業員はさっきの流動になるとアクターにした方が都合いいみたいなことはない特にあるかもしれないが多分完成するときには1ドメインになる気がしていてなるほど
-
ドメインになるよな多分最終的には客目線で見るってこと?最終的には客目線ですなのでハイゼンスタッフエンティティがいますとあとは料理料理エンティティというかなんでしょうビュッフェでありがちなでっかい皿エンティティでっかい皿エンティティでっけい皿エンティティがあってでっけい皿エンティティは
-
じゅんぺいビュッフェで一番好きなの何カレーカレーか珍しいなどっちでもいいですけどチャーハンチャーハンみたいな料理料理って言っていいのかな品目品目値オブジェクトチャーハン値オブジェクトか
-
チャーハン値オブジェクトチャーハン考えづらいかもな唐揚げみたいに分離してた方が考えづくないからじゃあ唐揚げで皿全体がエンティティで一個一個の唐揚げが値オブジェクトってことですねはい値オブジェクトこれちなみになんでこの分類にしたんですか
-
分け方の話ですか まずまだ洗い出しきってない気はしてるんですがなぜこの分類にしたか一旦登場人物を洗い出そうとしていますで配膳という1プロセスでまぁただ本当に配膳というか補充か 補充するだけで出てくるのって多分ノリさんがいて
-
でそれで料理大皿を音像語から持ってきて出すで今登場人物を洗い出したでそのそれぞれの登場人物はエンティティか与えオブジェクトかで言うと先ほどの分類になるみたいなイメージで洗い出しましたなるほど実際の現場とかだとさなんていうんだろう
-
皿全体と一個一個の唐揚げをそれぞれ別のものにモデリングするっていうのがなんかこう結構感覚的に難しいなっていう気がしててそうですね唐揚げに乗った大皿それでいうとさっきのエンティティーか値オブジェクトかみたいなところがまあ一個ポイントになってくるかなと思っていて
-
エンティティってさっきも言った通り識別したいものとかもしくは状態を追いたいものになりますアタイオブジェクトは一方で状態を追わなくていいものになっていてのりさんの業務ってさっき言った通り一定量お皿が2割ぐらいになったら補充しますという話をしてたんでお皿の量を把握する必要があるとなるほど
-
お皿の量を把握する必要があるので大皿の量を把握するためにまずエンギティにしますとなるほどなるほど大皿ってビュッフェで僕ちょっとすいません詳しいこと知らないんですけどおそらくいろんな料理で使い回してると思ってて共通化できるところであると思ってますなので上物っていうか大皿に乗ってる料理と
-
大皿をまず分離して大皿側は状態を追う必要があってエンティティにして上に乗ってる上物は唐揚げ君なんて唐揚げ君って言ったら商品名になっちゃうんで急にローソンになっちゃうからな急にローソンになっちゃうからね唐揚げなんてね取りやすいやつ取るじゃないですか人によってはね順平に取りたいやつ取られたって怒る人いるかもしれないんですけど基本的に唐揚げはどの唐揚げも等しいと思うのではいはい
-
おおむね何でも値オブジェクトでっていうところでそこを分けたみたいななるほどそっか皿自体は値オブジェクトになるけど料理とセットになって一つのものに提供されてエンティティになってるのかはいはいはいそうですねそういうイメージですねみたいな形でさっき言った通りあと温蔵庫があるのか温蔵庫っていうのがあってその中に唐揚げが大皿に乗ってストックされてるんですかね
-
最初からさらに乗ってる実際現実問題だと多分皿変える変えた先というか元々あった唐揚げを新しいやつに乗せるみたいなことをしてると思うんですけどそこはちょっと簡単のために大皿丸と変わってることにしましょうみたいな形でドメイン
-
に出てくる登場人物エンティティと値オブジェクトの整理ができましたそれぞれ本当はそのドメインモデルズに落とそうと思ったらその配膳スタッフが料理に対してどういう関係があるみたいなことをちょっと洗い出したりするんですけど今回で言うとサラと従業員が不倫をしているみたいな
-
違う違うそんななんか人物相関図みたいなの書かないです書かないですかなるほどね書かないです楽しいですけどね楽しいんだ楽しいかもしれないドメインエキスポアとか聞いてねあの皿とね不倫してんだよね何の話やねんえっとのりさんがその料理を装備する必要があるとか
-
装備してる概念なんだね装備して持ってくみたいなメソッドをノリさん用意する必要があるねみたいな買い忘れしてる必要があるんですけど装備やばいなそのまま客にぶちまけそうなぶちかたするな一旦ちょっとドメインモデルができたということでじゃあ開発の方に移っていこうかなと思いますこのさっき整理したドメインってそのままコードに持ってこれるんですよっていうので
-
いわゆるそのドメイン駆動設計で出てくる指揮き足す言語って言われる共通言語でそのままコードに落とし込めるといいんですがこれは僕の解釈なんですけど日本語で喋ってるじゃないですか今我々プログラムのコードって英語じゃないですか多分変換表みたいなの作るんでしょうね英語日本語変換表みたいなの作ってコードに落とし込んでいくと思いますが今日は日本語でやりますいいですね
-
ソフトウェアのコードはレイヤードアーキテクチャで作っていこうと思いますざっくり言うとユーザーインターフェースっていうのが一番ユーザーに近いところにあってその下にアプリケーションその下にドメインその下にインフラストラクチャーの層があるみたいなアーキテクチャがレイヤードアーキテクチャになってます今回の配膳業務ですね配膳業務なんで急にお客さんが直接関わらないところで非常に微妙なところではあるんですけども
-
ユーザーインターフェースに一番近いのはお皿かなお客さんが持ってるそうだねビュッフェに来たお客さんが持ってるお皿これがユーザーインターフェースですもしくはなんだろうなあとは見回りしてる人か見回りしてる人のりさん最初見回りしてから一定量減ってたら補充起動するみたいなのしてましたけど多分見回り空論ジョブみたいな
-
なるほどねそっか従業員はエキティでありアクターでもあるのかそこは別の人にしましょう別の人にする補充の人と見合わりをする人は別で次ユーザーインターフェースがあってアプリケーション層アプリケーション層は具体的な仕事っていうよりはさっき整理してたドメインノリさんというか配膳スタッフとか大皿とか
-
その辺をドメイン層で処理するんですけどその手前のドメインをうまいことやって全体の処理を完結させるのがアプリケーションレイヤーですつまりやるべき作業を調整するやつドメイン層からオブジェクト作ってそのオブジェクトちょっとこねこねして具体的なのは下のレイヤーにやらせてうんうん
-
最終的に直接ドメインに対する作業をするというよりはドメインが作業を終了するように誘ってあげるのがアプリケーションですビュッフェ内だと何になるんだビュッフェ内だとですねノリさんを見張ってる人です
-
つまり実際の業務だとビュッフェだと実際の業務だとのりさんが一人で判断して一人で補充して一人で終わらせるじゃないですかただそれって結局マニュアルがあるわけでマニュアルによってのりさんは管理されているというか仕事が管理されているわけじゃないですかなるほどそのマニュアルがアプリケーション層になりますなるほどね
-
補充作業はこういうプロセスでやるんやでって書いてるやつというか多分それを書いた人がいるはずでそれを書いた人がアプリケーションレイヤーになりますなるほど佐藤さんだ佐藤さんっていうねありがとう佐藤さんでその佐藤さんによって配膳スタッフは仕事を定義されていて配膳スタッフがこの料理をあ違うこの大皿を見て
-
同じ料理を温蔵庫から取ってくるみたいな処理が書いてるのがドメイン層です実際に現場で起きてる作業最後のインフラストラクチャ層はこれソフトウェアの世界だとDB叩くとこですね温蔵庫を叩くとこですねオープンザ温蔵庫ってこと?そうそうこれも分けますね例えばなんですけどこれなんで
-
これ今のハイゼンスタッフというかのりさんのりさん音像庫行きますと音像庫行って音像庫から取り出すという風になってるんですけどこれって問題があって今レイヤードアーキテクチャってユーザーインターフェースアプリケーションドメインクラストラクチャーって上から言ってるんですけどこれエリックエバンズのドメイン駆動設計の本にはこう書かれてるんですが
-
このままの状態だとのりさんこの温蔵庫が変わっちゃった時パニックになっちゃいます確かになぜならのりさんはこの温蔵庫から取り出してねという風に言われてるんですよマニュアルで依存関係が上からそうなってるんでマニュアルからこの温蔵庫に取りに行ってねってのりさんに指示が言ってるんでなるほど具体的な指示になっちゃってるとはいそうです具体的な指示になってます
-
それゆえあるべき姿のレイヤードアーキテクチャってインフラストラクチャ層が実は上にあるんですね上っていうのは上位にあるんでマニュアルの中の温蔵庫の部分が変数になってるって言うんですかコードで言うと依存性注入で入れられるんですけどなんて言えばいいかな唐揚げの時は温蔵庫プリンの時には冷蔵庫みたいな形で後から入れられるようになってるんですよ
-
そうあるべきなのでリアダーアーキテクチャーエリック・エバンズのドメイン駆動設計のリアダーアーキテクチャーではユーザーインターフェースアプリケーションドメインインフラストラクチャーっていう上から順番になっててインフラストラクチャーが一番下にあるようなモデルになってるんですがあるべき姿というか書籍発行後にこうやった方がいいんじゃねみたいな姿で言うとインフラストラクチャーが確か上にありますユーザーインターフェースと同列化
-
その上下かアプリケーション層より上ですねいずれにせよというのがちょっと今回ポイントというか注意すべきところですそうじゃないとのりさんが温度が変わったから分かんないってなっちゃうんでなめてもらっちゃ困りますね現実ではみたいな形でモデル今さっき作ったドメインモデルがレイヤードアーキテクチャの形に落とし込めるじゃないですかうん
-
こういう風に落とし込めると実際のコード書くときも同じようにコーディングができるんですねなるほどこれでじゃあ一個実装してみましたで多分実装する中でやっぱこうした方がいいんじゃないみたいなの生まれてくると思うんですよ今回入れると何でしょうね例えば業務改善既存のなんかすでに出来上がっているものに対する業務改善提案するのめっちゃむずいんですけど確かに結構もう完成形みたいなもんだからなそうそうそうそうそうそう
-
実装してる中で何か気づいたとしたらさっき作ったドメインモデルノリさんとの会話で作ったドメインモデルノリさんっていうエンティティがいて大皿っていうエンティティがいて値オブジェクトが空けて値オブジェクトがあってっていう図これを更新してこうした方が良くないですかっていうのをまたドメインエキスパートに聞きに行くだからあれか例えば監視してる人と交換する人別々だったとしたら
-
一緒にした方がいいんじゃねえとかそういうこと?そうですね確かに行動上は一緒にならないけどビュッフェ上は一緒の方が効率いいんで絶対とかあと例えば唐揚げと春巻きが隣に並んでて料理少なくなってきた時にそれぞれ小さい皿を用意してたけどあれこれ一個のやつにどっちも置いた方がいいんじゃねえみたいな確かに確かに一大皿
-
複数料理というか品目を共有するように変更するとかっていうのをモデルを元に説明できるとそうですこういうコードの実装とドメインモデルって言われる図絵を紐づけてなおかつドメインエキスパートと会話しながら一番いい形なんだろうねっていうのを探りながら進めていく
-
そうすると結果的に設計にひも付いたみんな知ってるドキュメントができるしドメインエキスパートが伝えたかったやりたかったことを漏らさずコードに落とせるよねっていう考え方がドメイン駆動設計なるほどねエキスパートと強調して働いていくとっていうことなんだなということを本読んでて思ってちょっとビュッフェで今がっつりカットしてると思うんですけど
-
相談しながらなんとか伝えられたかなと気持ちになってますなるほどね分かりづらいところは分かりづらいと思うんでイメージこんな感じで詳しいところは後ほどじゅんぺいがエピソードにしてくれると思うんではい楽しみだなっていう感じですかねこれ結構現場では
-
どのくらいの割合で使ってるんですかね僕あんま遭遇したことないかもしれないですねどうなんでしょうドメインモデル作ることはドメインエキスパートと会話しながらドメインモデル作ってんのは正直僕も見たことがないね私も一方でPOとかチーム内の人と会話しながらドメインモデルみたいなものを作って実装してるのは見たことあるというかよくあるかなはいえーと
-
ペルソナとはまたちょっと違うかペルソナとはちょっと違うねユーザー側じゃなくて場合によるけど仮でちょっとそういうエキスパートではないですけどこんな感じの行動するのかなっていうのを置いておいて作ってそれを元に実装していくそうそうそうそうなんかエリック・エバンスのドメイン駆動設計って
-
その概念がコアだよねっていうのありつつも結構具体的なパターンまで踏み込むじゃないですかゆえにつまみ食いしてるところは結構あるよねなんとなく宗教戦争を置きがちなイメージありますね解釈が一定のものじゃないからさDDDはこうだろうみたいな各々の正義があった結果着地しきってないイメージがあるというか
-
本当になんか考え方ですよねTDDとかだとバチッとしたやり方あるじゃないですかそういうのがないのか僕が読み取れてないのかどっちかわかんないんですけど多分読み取れてないどっちかわかんないんですけどでもこういうことかなっていうのを多分各々思うんでしょうねそうねなんかこうDDDって一つの流派がありつつ一つの網路がありつつもいろんな流派がありそう
-
うんうん意図してとかじゃなくてそもそも大きい考え方だから起きうる分岐みたいなのがいろんなところで起きた結果つまみ食いみたいになってたりとか一個の組織で完全に意識を統一してやってますみたいなの正直あんまり見たことないかもしれないなって思うなるほどそもそもこれのモチベーションが顧客対話とかアジャイル開発とかっていうところだと思うんでうんうん
-
目的はそこだから各々のチームでそれを達成するためにいい感じにやってねっていうのがあるとは思うんですけどねありがとうございます
-
っていうのでちょっと今日はDDDビュッフェチャレンジというところでDDDのちょっと分かりづらいところをビュッフェで少しだけ感じていただけたらありがたいなというところで話してみましたもしまさかりとかあればというか全然受け付けますというか教えてください聞くときのポイントとしてはあれかもしれないですねもっと全貌でかい話だよっていうのは頭の片隅に置きながら聞く必要あるような気がしますね
-
たぶん省略してるけど出てこない概念今回のに出てきてない概念いっぱいあるじゃないですかいっぱいありますはい境界づけられたコンテキストとかいろんなものが出てきてないと思うので詳しく知りたい人は本を読むのがいいんじゃないかなという感じですよねはいでは最後に締めますハッシュタグひまじんプログラマーでSNSNEXTフィードバック募集してますので本日のエピソードの感想とかありましたらお願いします現場で使ってますとかねぜひ聞きたいですうん
-
あとはポッドキャストの説明欄からGoogleフォームで番組の要望・感想・質問あとはチャンネル説明欄からスラックコミュニティひまぷろ談話室の招待リンクあります招待リンクじゃないですね申し込みフォームありますのでそちらもお願いします番組を1.5倍楽しめるんじゃないかなとぜひ待ってます最後に各種ポッドキャストプラットフォームでのフォロー・高評価もお願いしますお願いしますそれではまた次回バイバイバイ
-
初めて触ったMacBook思い出がいっぱいのチーム開発再起動したら治った謎のバグ僕たち私たちは卒業します駆け出しエンジニアを卒業したいあなたへひまじんプログラマーの週末エンジニアリングレッスン各種ポッドキャストで配信中
#380 ゆるふわDDDでビュッフェを作ってみよう!