|Date|Chapter| |----|--------------| |2020/09/07|1| --- # DDD Chapter 1 ### ドメイン駆動設計(DDD)とは * ソフトウェアを利用する業界・組織固有の知識を、ソフトウェアに反映させるための手法。 * 「有用な知識をコードに落とし込む」手法。 * 有用な知識とは * 例)トラック * トラックの構成要素 1. 積載量 1. 燃費 1. 「トラック」の語源 * (一般的に)1,2はソフトウェアに価値のある知識、3はソフトウェアに価値の無い知識 * ドメイン * 直訳すると「領域」の意を持つ。プログラムを適用とする対象となる領域を見極めることが重要。 * システムによってドメインは大きく異なる。 * 例)会計システム * 金銭 * 帳票 * 例)物流システム * 倉庫 * 貨物 * 輸送手段 * HowよりW2 * k8sやGAEの利用 "How" も重要ではあるが、"What" "Why"の部分に目を向ける姿勢が重要。 * 何が必要か、なぜ必要か * モデル * 現実の事象、概念を抽象化した概念 * 現実を観察して現れる事柄「事象」、現実を観察した時に現れる基本的な事柄「概念」から、重要な情報を抽出(抽象化)した結果。 * 例)トラック * ガソリン残量・積載量・装飾・ルート・年式・走行距離 * トラックを「交通手段」としてしか見ていないユーザにとって、どの項目が重要か? * 重要な要素を抜き出したモデルを「ドメインモデル」と呼ぶ。 * ドメインオブジェクト * ドメインモデルをソフトウェアで動作するモジュールに置き換えたもの * `ドメインの概念⇄ドメインモデル⇄ドメインオブジェクト` の関係性で改善を繰り返す。iterativeな開発。 * まとめ * DDDは開発者のみでは完結しない * 「動かし続ける」ことに焦点を当てている * (一般的に)納品時は目に見える成果が無い、運用する上で成果が見えてくる