msksgm’s blog

msksgm’s blog

Webエンジニアです。日々の勉強記録、技術書感想、美術観賞感想を投稿します。

「ユースケース駆動開発実践ガイド」感想

ユースケース駆動開発実践ガイド」[ダグ・ローゼンバーグ (著), マット・ステファン (著), 三河淳一 (翻訳), 佐藤竜一 (翻訳), 船木健児 (翻訳) , 2007]を読みました(第2部、第6章まで)。

知り合いと「ユースケース駆動開発実践ガイド」の勉強会をすることになり、読むことにしました。

感想

ICONIX プロセスと呼ばれるモデリング手法をテーマにした本です。 DDD 界隈では、ICONIX プロセスを戦略的 DDD に位置付けられています(多分...)。 よく DDD の文脈で紹介される、戦略的 DDD(バリューオブジェクト、エンティティ、リポジトリ、ファクトリー)の話はまったくでてきませんが、戦略的 DDD をどのように実装するかの意思決定や、それにより軽量 DDD を回避することができる内容となっています。

第6章までだと、ドメインモデリングユースケース記述の作成、要求レビュー、ロバストネス分析、予備設計レビュー、などといった内容となっており、一人でも実践しやすくなりました。 勉強会では、最後に RealWorld を元に ICONIX プロセスのロバストネス分析までやってみました。

ロバストネス分析までを勉強会の範囲にした理由は2つあります。 1つ目は、ひろどらチャンネルの動画でも、connpass の「ユ=スケース駆動開発やってみた」というイベントの資料でも、ロバストネス分析までおこなわれていた(紹介されていた)ことです。 2つ目は、フローチャートや詳細設計以降は実装依存に感じられ、戦術的 DDD を学ぶ方が有意義だと考えたためです。

www.youtube.com

modeling-how-to-learn.connpass.com

よかった点、気になった点についてそれぞれ述べていきます。

よかった点

よかった点は、モデリングの実践的な内容となっていることです。 また、ICONIX プロセスは「プロセス」となっているため、取り入れやすい内容であり、加えて練習問題があるため要点をつかみやすかったです。 それぞれの章には、書き方がパターン化(上空 3000 メートルからの眺め、理論、実践、さらなる練習、まとめ)されていたことも、読みすすめやすい理由の一つです。

DDD やアーキテクチャを学んでも、いざ実践しようとすると、振る舞いや要求がよくわからないまま実装しようとすることが多々ありました。 本書を読むことによって、振る舞いの明確化、ドメインオブジェクトを見つけ出すことの重要性を理解し、個人開発レベルでの実践はもちろんのこと、普段の業務でも、なんとなくリファクタリングするのではなく、振る舞いを意識するようになりました。

気になった点

気になった点は、一度読んだだけだと解釈しにくい抽象的な文章が散見された点です。 そもそも、抽象的な文章は DDD の本の共通点か 15 年ぐらい前に翻訳されたせいかもしれません。

また、理論の箇所では、10個の理論を毎回記述されていますが、割と内容が重複されていたり、心構えとして薄かったりしたりします。 特に、10個の理論の1つに、「実践するための6ステップ」が記述されていたりするため、その箇所だけでよかった場合もあります。 なので、実践可能な知識は答え付きの練習問題だけで十分だったりします。

他には、答えがない練習問題(「さらなる練習」)についても気になりました。 練習問題の選択肢が曖昧な日本語訳のせいか、答えを出しにくく感じました。

感想まとめ

DDD のモデリングについて実践的に学べる本でした。 戦術的 DDD の本では説明が省略されがちな部分であるユースケース(振る舞い)とドメインモデルの導き出し方を明確化し、意思決定しやすくなったと思います(いまだに難しくは感じますが。。。)。 抽象的な文章に対する対策方法としては、複数人で読んで認識合わせしたり、ひろどらチャンネルの動画で概要を掴んで、わからなかったら読み飛ばすと良いと思います。