つい最近では年号が変わるということで、その名前付けに一層の関心がもたれています。
年号などは歴史に残る名前になりますからね。どんな名前をつけるかはとても重要なものでしょう。
名は体を表すという言葉もあります。名前は適したものを付けるべきです。
名に恥じないという言葉も素晴らしいです。名前があるからこそ、それに沿おうとする。もはや逆転現象です。
それくらい名前というのは重要です。
そうです。名前付けは重要なんです。
ことプログラミングにおいてもこれはよく叫ばれていることで、ご多分に漏れず私も「名前つけは大事だ」などと叫んでいます。
声が枯れそうなほど叫んでいる私ですが、つい最近とても重要な名前付けをする機会がありました。
そう、自分のセミナーの名前付けです。
いったいどんな名前をつけたらよいか。これはとても重要な問題でした。
何しろずっとついて回る名前になります。ここで適当な名前をつけるのは一生後悔することになるでしょう。
絶対に後悔しない名前、必死に必死に考えた結果出てきた名前が「なるセミ」でした。
これはとても素晴らしい名前です!!
最近流行りの四文字です。とても覚えやすい!
はい、名前をもじっただけでした。
必死に考えた時間はたぶん一分ぐらいでしたでしょう。
本当に名前付けって大事ですよね。
というわけで、この「なるセミ」の第一回目の催し物として「第三回ボトムアップドメイン駆動設計」を開催しました。
関連 URL
◆募集ページ(Connpass)
https://nrs-seminar.connpass.com/
◆Twitter まとめ(Togetter)
https://togetter.com/li/1323967
スライド
あとがき
以前のスライドを知っている方はきっとびっくりしたのではないでしょうか。
そうです、スライドの表紙を大幅刷新したんです。とてもカッコいいですよね。途中もカッコよくしてみました。
あ、中身は大して変更してないです。
ちなみにカッコよくするために昼休みが一回分潰れています。
スライドがカッコいいだけでは仕方がない。肝心のプレゼンがどうだったかというと
nrsさんのオープニングトークがこなれてきた感#bu_ddd
— おーひら モブプロ本売ってまっせ! (@mohirara) 2019年2月28日
と仰っていただけたように、三回目ともなる MC も堂に入ってきたようです(こちらは運営協力頂いている@mohirara さんです)
そんなわけで内容自体はほとんど変えず(とはいえ台本はないので若干異なる可能性はありますが大筋は同じはず)今回もドメイン駆動設計の入り口としてお話をいたしました。
皆さんとても集中されており、話す側としても力がとても入ります。
終わった後には「楽しかった」という声や「勉強になりました」という声を頂き嬉しくなります。
そんな嬉しい言葉はたくさんありますが、その中でもなによりやった甲斐があるな、と思う言葉は「書籍にもう一度挑戦してみます」という言葉や「明日からやってみようと思います」という言葉だったりします。
学ぼうとする姿勢だけでもそれは素晴らしいことです。その上で挫折したものに再度挑戦しようとしてみたり、すぐさま実践に移そうというその行動力はもはや称賛に値すべきものだと考えています。
それだけの力があれば、きっとドメイン駆動設計に対して自分なりの答えを見つけることができるでしょう。
最後に、今回は「ドメインとは」というおまけを追加しています。
スライドはこちらの一枚のみという潔さ。
決して面倒だったわけではなく、自分の言葉でお伝えしようとした結果、このようなスライドになりました。
とはいえ、これではあとから見返しても全くわからないですよね。
近々記事にでもしようと思いますが、少しここにお話した内容を書いておきます。
ドメインとは
ドメインとは「関心事」です。
とても意味の範囲が広く、漠然としているので理解しづらいですね。
私たちがソフトウェアを作る理由は何でしょうか。
ソフトウェアは何かしらの問題を解決するために作られます。
その問題というのは人の営みに起因するものです。
つまりソフトウェアは人の営みに関心があるのです。
ソフトウェアのドメイン(関心事)は、ある「特定の人の営み」になります。
たとえば、物流システムではトラック・倉庫・貨物・伝票・荷揚げ作業・渋滞情報などがドメインになります。
たとえば、生産管理システムでは工程管理・生産機器・組立作業・仕上げ作業などがドメインになります。
こういった人の営みというのは得てしてとても複雑です。
それをそのままプログラムで再現しようとするのはとても無謀なことです。
ではどうするか。
幸いなことにソフトウェアで解決しようとしている問題は現実のほんの一部です。
問題を解決するのに役立つ、本当に必要な部分だけを抜き出して、それにより問題を解決すればよいのです。
それは抽象化という行為で、モデリングとも呼ばれる作業です。
そうやってドメインをモデリングした結果できあがるものがドメインモデルです。
それはあたかも蒸留した知識のようなものでしょう。
それは得難いものですし、そこに至るまでの経験もまた得難いものです。
ともすれば私たちはソフトウェアそれ自身に目を奪われがちです。
技術を突き詰めるのはとても楽しい行為ですからね。
しかし、真に役立つソフトウェアを作るにはそれでよいのでしょうか。
ドメインと相対せず作られたソフトウェアが的外れになってしまうことはないでしょうか。
真に役に立つソフトウェアを作るというのが私たちのゴールです。
そのためにドメインにおいて蒸留すべき重要な知識はどれであるのかを突き詰めていくことこそが、私たちの為すべきことなのではないのかと考えます。