読者です 読者をやめる 読者になる 読者になる

第三回ドメイン駆動設計読書会@大阪に参加した

第三回ドメイン駆動設計読書会@大阪に参加した

隔週開催のこの勉強会も今日で三度目。 どうでもいいけど勉強会初心者の僕は、集まって始まるまでの間の牽制した感じにまだ慣れない。 もっとこうフランクにニュートラルにその場に馴染むよう心掛けたい。

実は今日から第1章

3回目にして第1章突入。 第1章はエヴァンスの実例を持って話が進んで行く。 重要なこと、色々な話をしたけれどあんまり覚えていないので手元のメモを元にまとめると以下の三点になると思う。

  • ドメインを小さくキープ
  • ブレスト
  • フィードバック

ドメインを小さくキープ

往々にして、ソフトウェア開発の現場では風呂敷を広げがちであると。 例えば、「今は必要ないんだけど、きっとこれから必要になりそうだね」とか、ある解決領域の話をするためにその周辺知識を補完する必要が出てきて、そこら辺がふくらんで結局何を解決しないといけないのか、チーム内や顧客間で共通認識が薄れてくるみたいな。

そこに対して、もっと解決領域(ドメイン)を限定し、ソフトウェアの目的をしっかり定義することが必要なんじゃないかという話。

今解決しないといけないことを絞る。余分なものは捨てる

ブレスト

ドメインを小さくキープしたい。余分なものは省きたい。 そんなものを導き出すためには話し合うしかない。ここで印象的だった話として、お客さんやユーザーの興味の対象って、 画面みたいな目に見える部分や実際に触れられる部分であってドメインではない。ただ開発者はドメインに中力したい。そんな感じでどうやって話合っていくのか?というところ。

これについては双方が歩み寄って行くしかないという至極まっとうな意見にまとまった。 お互いの目的をお互いが理解することが双方に取っていい結果に結びつくという話。言葉で言うと簡単だけれど、実際にやろうとすると難しいよなーと思った。というかソフトウェア開発で一番難しいのってプログラミングとかじゃなくてこういった共通認識のすり合わせだなーと思う。

面白かったのが、ブレストは拳で語り合う必要がある、という意見。(笑) 要は、それくらいの覚悟を持ってして挑んで、最終的には河原で2人仰向けに倒れて

「お前、なかなかやるやん?」

みたいにお互いが認め合えればええやん? DDD、肉体言語やん? by @kazuhito_m

フィードバック

最も重要な部分であると思う。 本にも書いてあるけど、「完全なドメインは存在しない。」と。何度もブレストを繰り返し、実装し、ドメインを進化させていく。初めはミニマムスタート。必要なときに必要な機能を議論してドメインに反映して実装する。

(なんだかここまで書いて、どれも基本的な内容じゃんという感じになってしまったな...)

悩ましいところ

実際の開発ではブレストとフィードバック、おざなりになりがちだと思う。 個人的にそうなってしまう理由としては以下があるように思う。

  • そもそも何を実現したいかぼんやりしている

結局、自分たちがどんなものを実現しようとしているのか十分に理解出来ていことあるなと。 ブレストもなんか曖昧なんだけど取り敢えずわかったような気になって先に進んじゃうとか、そんなんだからドメインを洗練させることが難しいし、なんとなくボヤっとしたままリリース。結局何を目的としているかがボヤっとしているからフィードバックと言っても難しくなる。 しかもそれができない理由をなんか「時間が無いから」みたいな話で丸め込んで次に向かうみたいな流れ。

よくよく考えてみると、時間が無いとか嘘で、実際にプログラミングとかしてる時間ってものすごく短時間で、それ以外の仕様確認やら手戻りやら要件変更やらtwitter閲覧によって引き起こされる時間が圧倒的だなーと。特にtwitter

ただ悩ましいのが、企画者みたいな人がこれをやります!みたいな時に、「なぜです?それはどういう意図があるんです?」みたいなのも嫌なヤツだなーとか。聞き方ってあると思うしね。 でも 曖昧さはドメインを形成する上で非常にやっかいな代物という印象なので、そこのせめぎ合いみたいなところは 拳で語り合うしかないかなーと。それなりの覚悟を持って開発に向かう必要はあるかな。結局は良い物を提供したいという共通認識はブレないわけだし、その過程は少々ゴタゴタしても良い結果を得ることで全てチャラちゃうかなと。

これDDD関係ない気がしてきているけど、とても実になる(まだなってないけど)話だなーと思っている。