私はメーカーでC#などを使った製品開発をしています。
メーカーの辛さは,製品リリースされたら,ソフトのメンテナンスが必要なことです。
派遣プログラマー時代は,プログラムを作ったら他の現場に派遣されるので,
作った後の世話をする必要がありませんでした。
メーカーだと10年も20年もソフトのメンテナンスが必要です。
絶対的に保守性の高いプログラムが必要
絶対的に保守性の高いプログラムにする必要がありました。
保守性というのは,プログラムの修正が簡単にできるプログラムです。
アンダーソン
保守性が高いかを判断する基準は
次のような事です
次のような事です
- どこに何が書いてあるかすぐにわかる事
- ほしい機能がすでにあるのか無いのかがすぐにわかる事
- ここを触ったらプログラムのどこに影響がでるかわかる事
- 他人が見ても簡単に理解できる事
- 追加修正をする場合も共通の思想で改造ができる事
先人の知恵
保守性の高いプログラムを書く必要性がわかっても,どう書けばいいかわからないと話になりません。私は「オブジェクト指向」と言われる本をたくさん読みました。
でも,それだけではどうにも不十分でした。
そんなときに出会ったのがドメイン駆動開発でした。
それでは私が参考にしたドメイン駆動開発本をご紹介します。
タイトル | ドメイン駆動 (Programmer’s SELECTION) |
---|---|
おすすめ度 | |
理由 | ドメイン駆動開発どC#でどうやって書いていくかと言う視点で,かなり実践的に書かれています。.NETFramework2.0くらいの実装なので,その辺りは少し古さを感じますが,原理は変わりませんので,プログラミングの考え方は今でもそのまま使えます。 |
タイトル | エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践) |
---|---|
おすすめ度 | |
理由 | ドメイン駆動開発の原点と言われる本です。ただそれだけに読むのがちょっとしんどいです。本も分厚いのもありますが,読んでいてもなかなか話に入り込めないというか,ちょっと難しめなので星4つにしています。その点でいうとやはり1位のドメイン本の本が,話に入り込みやすくてお勧めです。 |
タイトル | 実践ドメイン駆動設計 (Object Oriented SELECTION) |
---|---|
おすすめ度 | |
理由 | エリック・エヴァンスのドメイン本を読みやすくして,さらに現代風にリメイクされているようなイメージです。ヘキサゴナルアーキテクチャーの話などは大変勉強になります。原点の本に敬意を払って3位になっていますが,本当の意味では2位とも1位ともいえる内容です。そういう意味で3位ながらもなぜか星5つにしています。読みやすさは結構読みやすいと言う印象です。 |
番外編
以上がドメイン駆動本のランキングでしたが,増田 亨さんの次の本もお勧めです。
現場で役立つシステム設計の原則 〜変更を楽で安全にするオブジェクト指向の実践技法
私がドメイン駆動開発を学ぶきっかけになったのが,増田 亨さんのブログでした。
その当時まだこの本はなかったので,私は上記3冊を中心に学びました。
当時増田 亨さんの本が出ていれば絶対読んでいたと思います。
まとめ
おすすめは次の4冊。
勉強家の方は4冊マストですがとりあえず取っ掛かりで読むなら増田 亨さんの「現場で役立つシステム設計の原則 〜変更を楽で安全にするオブジェクト指向の実践技法」がわかりやすいでしょう。その後にC#向けに1位2位3位の順で読むと理解が深まると思います。
- ドメイン駆動 (Programmer’s SELECTION)
- エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践)
- 実践ドメイン駆動設計 (Object Oriented SELECTION)
- 現場で役立つシステム設計の原則 〜変更を楽で安全にするオブジェクト指向の実践技法
- C#でドメイン駆動開発とテスト駆動開発で保守性の高いプログラムを書く!1
- C#でドメイン駆動をする前に良いコードと悪いコードの定義を理解しよう!2
- C#でドメイン駆動開発をやるうえで採用するアーキテクチャーに関して3
- C#でドメイン駆動開発をするうえで意識べきロジックの2つの種類④
- C#でドメイン駆動開発 アーキテクチャーの実装とテスト駆動での書き方を解説5
- C#でドメイン駆動開発 外部との接触箇所にRepositoryを使う!⑥
- C#でドメイン駆動開発Moqを使ったテスト駆動開発のやり方を解説!⑦
- C#でドメイン駆動設計UIとインフラストラクチャーを実装する方法⑧
- C#でドメイン駆動開発 Entityの書き方と使い方とテスト駆動!⑨
- C#でドメイン駆動開発ValueObjectでプログラムの複雑さを取り除く⑩
- C#でドメイン駆動開発 ViewModelの中に明細項目があるときの実装⑪
- C#でドメイン駆動開発 データ保存時のロジックのMoqの書き方!⑫
- C#でドメイン駆動開発【DDD】エラー処理とExceptionの書き方!⑬
- C#でドメイン駆動開発をするうえで私が参考にした書籍ランキング!