NBM2

natural born minority

勉強会行ってみた「DDD(ドメイン駆動設計)実践者の話を聞いてみよう」#Devkan

会場の様子

重要なのは解る…が、勉強が追いついてない、足り無い!

情報

  • 申し込みサイト
  • ハッシュタグ : #devkan
  • 何するのか : 著名人や実践者から「DDDの”実際”」を聞く…のかな。

なんで来たん?

去年くらいから、DDDの勉強を始めたんです。

全然手探りだったのですが、先日の「関西DDD.java」の増田さんの言葉で 「俺、間違って無かったんや…」「俺、これかもしれん…」という確信めいた何かをもらった…気がしておりまして。

最近「関西でDDDと名が付けば」勉強会に参加して行ってる次第で…今回もやって来ました!(その増田さんの来阪ですしね)

内容

1コマ目「ドメイン駆動設計 思えば遠くにきたもんだ」

  • 登壇者: 増田 亨さん ( @masuda220 )
  • 資料:
ドメイン駆動設計 思えば遠くにきたもんだ from 増田 亨

「エリックエバンスのドメイン駆動設計」の書籍を題材に、増田さんの歩んだ道ともに、DDDの勘所をお教えいただいています。

資料は素晴らしくまとめられていますが、「お話」に真骨頂だったと思うので、 箇条書きおいておきます。(少し意訳)

「お話」成分補完メモ

ちょっと長くなったので こちら で。

心に残った事

本質的”でない”モノを削る力

これはわかるのですが…難しいのですよね。人間は「増やす」方のベクトルのほうが強いですし。

でも、これができていると「見た人の理解が早い」 転じて「立場違いの人がレビュー出来そうなモデル」になるかなと…最近の感じです。

抽象データ型・段階的な抽象化、コードを人間に近づけていく

すごくしっくりくる、いつも考えてるのはこういうことなんですよね。

質問タイム

  • Q : 炎上案件は12/31に相談の電話だそうですが、いつから参加?
  • A : 正月明けから 土日は休めと言った

なんとも、ヒューマニティを話題にする増田さんらしいブレない回答でしたw


増田さんのお話を聞くのは2回目なのですが「あまりにも自然に共感・納得してしまう」ので… 「もしかして…曲解して解ったつもりになってないか?」と自問せねばならず、大変ですw

2コマ目「T字形ER手法の話」(題名失念)

「ぷ…PlantUMLや…!!」

Graphbiz系から自力でたどりついて、現場でつかってた「PlantUML」の話しが出てきたので、それに興奮してしまって… 本編の記憶が飛んでます。(すみません)

話し的には「T字形ER手法(TM)」の話しだったと思うのですが…

「データベース設計の話がDDDのモデリングに?」と、頭の悪い俺にはようわかりませんでした。

3コマ目「ドメイン『駆動』『開発』」

  • 登壇者 : 前川 博志さん( @posaune )
  • 資料 :
ドメイン『駆動』『開発』 from Hiroshi Maekawa

DDDを広めるための取り組み

「生きた現在進行形で自分たちのDDDだなー」と感心しました。

結局「超越者orエスパー/ウィザード級」が四次元ポケットから出てこない世界…なのであれば、 これを経るしか「DDDを(実践であんじょうよう)やる」ってのは無いのかなぁと。

そう、俺もこういう環境を整えて入門すべしかなーと。

ドメインに駆動される話

「あれ?基本そうじゃないっけ?」って思いました。

多分指してるものが違うのでしょうけれど…

一年生の頃(15年以上前)から「うわっ…想定外の何かが出てきた!」「こいつは重用事!」 って時には「クラス図」を囲んで「あーだこーだ」と先輩らが騒ぎ始める…。

ERでも画面図でもなく「お客業務の縮図」を見て「どうしょっか?」するのが日常 …な世界で育ったので。

重用事なら「ドメイン(その頃はビジネス層って言うてましたが)から変更」され、 ドメイン実装が変更される。

画面や周辺実装(ちょっとズレるもののDDDのアプリケーション層かな?)だけで片付けられようものなら 「そもそも重用事じゃない」…みたいな。

ま、そんな「しょーもない浅っさい俺の話」とは違うと思いますよ!思いますよ!


全然関係無いけど…告知されてた「第28回 TFSUG大阪 継続的デリバリーを実現するTeam Foundation Server / Visual Studio Online特集」、 めっさ気になる!ので、参加したいなーと。

4コマ目「保守とDDDと私」

  • 登壇者 : 川辺 卓矢さん( @kawakawa )
  • 資料 :
保守とDddと私 from Takuya Kawabe

なんとなく…立ち場は違えど「なんとなく解かる」事が多かったり…。

「チェックボックスから、ラジオボタンに変えるだけでも…」話

こんな細かい話しをしたいわけでは無いと思いますが… チェック→ラジオに変えるってことは「On/Offの問題」から「”択”という量を扱うもの」に変化するわけです。

(似たような話しとしては「メッセージボックスのボタン択」も)

それって「意味が変わってる」ので「ドメインに影響を与えないわけはない」と思うのですが… どうも世では「小手先で片付けるには…」で「なんでそこ(ドメイン)修正しあかんの?」と聞き入れられないことが多いすね。

こういうとこを妥協しない姿勢も、DDDマインドなんじゃないかと想像しました。

「DDDから見れば、永遠の開発期間であって欲しいのですが、現実問題そうも言ってられません(涙」

そうなんすよ…そうなんす。

アジャイルの話もそうなんすけど「良くしたい…のに!終わりが(別軸で)決まる」という構造は、 もう「政治・契約」の領域の話しなので…どうにもならない「DDDをさせない」バイアスなのかな、とも。

ダイアログ

受付時、付箋とペンを配られ「自身が疑問・問題に思うもの」を各自書いて前のHBに貼る…とした結果、

  1. DDDをどう実装するの
  2. DDDとモデリング
  3. DDDをどうチーム・組織に入れていくのか

の3テーマにおしなべ、それを元に「4〜6人の3チーム、2交代」制で話し合いました。

俺は「ずっと実装のとこ」に居たのですが…

  • インフラストラクチャとドメインの境界
  • 実現するのに最適な道具選択

に、話が寄っていた気がします。

俺自身には「(絶対に曲解して間違っているであろう)思い込みがある」ので迷わないのですが、 「ここに皆さん興味を割いているのかー」と思いました。

増田さんに聞いてみようディスカッション

唐突に前川さん司会、増田さんを壇に置いてのディスカッションが始まりました。

これ、めっちゃおもろかったのでメモを置いときます。※正確性はちょい自信無いです

Q&A内容メモ

  • Q.UMLとか使いますか?
  • A.開発者の脳とコードにしかないですね

とはいえ、これには

  1. チームを「劇的に全入れ替え」とかしない
  2. リモートワークやってる利点として「共有時に記録される」ので履歴が追える

という前提があるので、とのこと。

  • Q.(ドメインへの)変化点の微妙なものは?
  • A.ドメインが変わる時は劇的に変わっている事が多いので…

変化点の見せ方については、前川さんが「GoogleSpreadSheet」での例を説明してくれました。

  • Q.変更するときはお客さんに確認取るの?
  • A.基本は必要ないが、必要ならばの類

しかし、そこも融通効くようで。その理由は…

  • Q.DDDをどうチーム・組織に入れてくか
  • A.社長を抑えに行け

これは冗談めいた言い方でしたが、 増田さんいわく「チームが利害関係者(ステークホルダ)を押さえに行く」という力が居るでしょうね、 とのこと。

別解としては「経営者のほうが夢を語れる」し、 そこと話し出来るには「技術者も社員じゃ夢を語れない」と言うことから 「はよ独立しなさい」というメッセージをもらいました。

  • Q.実装で関数型言語での実現はどうですか?
  • A.問わない、ダーティでも「多く使われてる言語」で「汚くしない」努力をすべし

Haskelの考え方は良いと思う。

「実現にダーティにしがちで問題になるところ」を 言語仕様として「部品(メイビーモナドなど)」入れているのは、 今後の動きに期待と興味がある。

私は土俵は「オブジェクト志向」で、 そこに「存在を脅かすほどの大きな問題」を抱えていると思っていないため、 Javaでよい。

まさかの逆質問

増田さんが問い、会場の参加者が答える、という一幕も。

  • Q.Scalaとかで実装している人が居る?グルーピングとかは?
  • A.変わらない、パッケージ、ファイル、クラス、オブジェクト…

増田さんの興味の質として…

再利用性の高いものとして扱う時に「言語仕様としてサポートしている」か 無いなら「どういうふうにやってくか」

というとこが関心事で、今も試行錯誤であるとのこと。

ご自身もコーチとしてのチーム育成をされているようで、

  1. Javaの2つのチームやScalaのチームをレビューしていくと、最終的に「よく似たコード」になる
  2. チームは気付きとしての成長が在る

が面白いとのこと。

「再利用可能にするデザイニング」は、言語仕様により補助や難威はあれど、 本質は一緒でかつチームの習熟と比例する

ということなのですかね。※ちょっと間違ってるかも

最近のDDD熱について

  • Q. バズワードになっているようですが、どう捉えていますか
  • A.「設計を良くしたい」と思う人々の興味で「設計手法」としての集約点は、今「DDD」くらいしか無いからでは?

増田さんは、もう少しつっこんで話されて

  • 「設計」にトレンドが無い「喪失の時代」を経ての今日、な気がしている
  • 「オブジェクト志向」の次のトレンドとしての「関数型」が、別に「設計」をくれているわけじゃないから
  • ようやく「変更容易性など」の「プログラムで作りたい対象」のことを考えれる時代が来たのでは?

とした上で、

「OOの信望者」だけが賛辞を送っているのを考えると「そんなに多きなトレンドじゃないんじゃね?」と思ってる

と、意外なお答えがありました。

そこからの逆質問で

  • Q.みんな、なぜ「DDD」で勉強会来てるの?

と参加者に問われ、

  1. 大規模かつダーティなプロジェクトに抗うため
  2. OOでのよりよいソフトウェアづくりがしたくて
  3. 「若い頃の投資回収」と「精神衛生上の救い」を求めて(俺)

と、参加者のいくつかの答えがありました。

お一人目の時に出た言葉、

「腐敗防止層どうのこうのじゃない、全部腐っているんだ!」

は名言だと思いました。


「汎用パッケージより難しい問題」のアプリケーションを作らねばならない…のに!「管理」や「納期」と 戦い疲弊している…という現状で

ソフトウェア作成は難しいもんなんだよ(だからDDDを欲してるのではないかな)

という増田さんの言葉でしめていました。

小並感

色々感想を用意していましたが… 「まずお前はDDD本を読め」が全てです。 ありがとうございました。

おまけ

遅刻して座った席の横に「(これ系の勉強会では)珍しくお若い女性」の姿がありました。

俺は、辛抱たまらん(いやそういう意味でなくて、あくまでも知的好奇心がってことでね)ようになったので、 2つの質問をしました。

  1. ここにはどうやってたどり着きましたか?
  2. 何を持って帰るために来てますか?

俺は「女性と3分話すと、相手が死んだ魚の目になる」という”重い病気か呪いのようなもの”を患っているのですが…

その方は超親切に

  1. 「設計手法」の勉強会をネットで検索して
  2. 自身の日々の開発が「どうしたら良くなるか」から「設計手法」を学びたくて

という答えをいただきました。(ありがとうございました)

  • そういう方も一定数居てるねんな
  • 宣伝に力入れれば来ていただけるんだな

という感想を持ち「もしかして未来に希望を持てる?」と思いました。

…スタッフした時には宣伝に力入れよっとw

blog comments powered by Disqus