ツナワタリマイライフ

日常ネタから技術ネタ、音楽ネタまで何でも書きます。

わかる!ドメイン駆動設計を読んでみた。

はじめに

なれる!SEみたいですね。あ、新刊出てる、読まないと。

入社してからインフラよりのソフトウェア(Rails)担当からじわりとオープンソースクラウド基盤開発へ移りつつ、今はインフラの自動化(DevOps、Infrastructure as a Code、Continuous Integration、Continuous Delivery)あたりをやっています。

ちょくちょくアプリ作りは片手間でやりつつ、あんまりがっつり業務アプリを作る経験はないのですが、この前勉強会でお会いした方が「今これ読んでるんですよー分厚いし難しいんですけどねー」とおっしゃっていて、そろそろ読まないとなーと感じているところ。

エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践)

エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践)

とはいえこの分厚さ、とても読み通せる気がしない。

まずは概要だけ押さえておくかということで以下を読んでみた。

techbooster.booth.pm

内容のボリュームに対して1000円は高い。。。と思いつつ、自分の興味が向いたときにその領域の第一のインプットはしておいたほうがいいな、と思い、読んでみました。

わかる!ドメイン駆動設計

Androidアプリ開発担当となった主人公が対話形式で、具体的な冷蔵庫の賞味期限管理アプリケーション構築という例を通してドメイン駆動設計を解説していく物語です。

本書にも書かれてありますが、当然この本だけでドメイン駆動設計が押さえられるわけでもなく、おそらく表面のほんの少しを撫でた程度だと思います。

ただ、ソフトウェア開発における「そのソフトウェアは何のために作るのか?」という根本的な疑問に答えるための大事な概念だと思います。世の中、作ったはいいけど使いづらかったり、本当にやりたいことはできなかったり、時間が経つにつれて使い物にならなくなるソフトウェアは多い。

学習でもなんでもそうですけど、考え方ってどんどん抽象化されていきますよね。ソフトウェア設計もそう。単純な処理をするメソッドから、設計手法、設計思想、言語思想。。。こういったなかなか言葉にしづらいけど有用な概念を自分の中に落とし込むというのは非常に重要だと思います。

今回読んだ内容だとユビキタス言語、そのドメイン内での共通言語を定義する、しかもそれはドキュメント化してはならないというのは非常に重要だと思いました。名前やコードのモデル名が実態とそぐわない例がどれほどあるか。。。

おわりに

本家に加えて、実践本もありますが、先に本家を読んだ方が良さそうですね。今年中に読めるといいな。。。

エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践)

エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践)

実践ドメイン駆動設計 (Object Oriented SELECTION)

実践ドメイン駆動設計 (Object Oriented SELECTION)