# ドメイン駆動設計 モデリング/実装 ガイド 第1章輪読会 ## 日付 2021/02/24 ## 質問 ### 本書における「モデル」とはどういう意味でしょうか? - 履歴書の例が良い。 - 必要なもののみを抽象化している - Railsのモデルを考えてしまう - Railsのモデルって? - MVCのモデルっていう意味なのでしょうか? - DDDのモデルとMVCのモデルって別物だよね - DDDモデルは現実のものを抽象的にするもの ### 良いモデルが、形成できるとどのように対応できるアプリケーションができるでしょうか? - 質問の意図 - 良いモデルを作るとどういうメリットが生まれるでしょうか? - 新しく入ってきた人も、すぐ理解できる - 新しく機能を追加する場合、良いモデルがあると拡張しやすい - ドメイン層だけ先に作ることも可能で、それを先にレビューしてもらうことも可能 - 変更や確認がしやすい - 非エンジニアでも理解できる - ログインしているユーザーしかHOGEHOGEできないケースがあった。 - アプリケーションのルールかドメインのルールかを区別できる(WEB上でも現実でも必要かの観点で見るとわかりやすいかも) ### DDDにおいて、「UIの表現やDBとの接続などの具体的な処理」と「モデルの表現」は、それぞれどのように扱うべきでしょうか? - A. UIの表現やDBとの接続のコードの中に、モデルの表現を記述するべきである - B. UIの表現やDBとの接続のコードと、モデルの表現を記述したコードは分離して扱うべきである - B派多数 - DDDの思想上、分離すべきである ### ユビキタス言語はどのような問題を解決するために用いられるでしょうか? - ビジネス側とエンジニア側の言葉の認識齟齬をなくす - どの文脈でも一意で使える言葉、の意味として解釈している - どの文脈でも が引っかかる - プロジェクトごとのユビキタス言語を設定する必要がある。 - 例えば、違うプロジェクトや領域の場合、異なるDomain名にする必要がある - そのため、どの文脈 という部分が引っかかった - 共通言語 - p17に記載されている - ドメインにより、コード上で統一した命名が可能になる ### ユビキタス言語を決める際には、英語と日本語のどちらが有利とされているでしょうか?またその理由はなんでしょうか? - 英語 - 本に書いてある - コードと仕様書が同じ言語のため、統一しやすい - 日本語の場合、漢字か平仮名かカタカナか、など考える範囲が大きいよね - 開発者が日本人であるとは限らない - そのため、日本語よりも英語の方が良い気がする。 - 共通言語は英語なので、英語の方が良い。 - 結局チームによる説が濃厚か - 日本語・英語・ローマ字、どれにする? - ローマ字はダサい? - 略すのは悪 - トラップおおい - 異なる認識をしてしまう ### DDDはアジャイルを前提とした開発手法なのでしょうか - ウォーターフォールは前提ではない認識 - 開発サイクルが早いものを前提としているかな? - そのため、アジャイルなのかな? - モデルの完成度とアプリの完成度は比例すると考えている - ドメインエキスパートがモデルの完成度を高めることが大事 - 常にブラッシュアップする手法はアジャイルかな ### 開発するサービスの所属と開発チームの所属が別会社の場合、どのようにドメインエキスパートと関わっていたのか、具体例などあれば聞いてみたいです - PrAhaの例 - 週一回はドメインエキスパートに相談する時間を確保していた - あとはSlackで常時確認 - ユビキタス言語集を作成していた - 見直す周期は、2週間とかかな? - プロダクトオーナーとドメインエキスパートの違い - ドメインエキスパートは、タスクを振ることができない - そもそも、DDDとAgileは文脈が違う - DDDは設計手法 - Agileは開発手法 ### DDDはいつ生まれましたか?どんな問題を解決するためにDDDが提案されたのでしょうか? - 2003年 - t-wadaさんはDDDがRailsよりも先と言っていた ### 【クイズではない】DDD以外に、何DDがあるのでしょうか。 - 設計 - DDD(Domain Driven Design) - 開発 - TDD(Test Driven Development) - BDD(Behavior Driven Development) ### 軽量DDDで得られるもの、得られないもの - 飛ばす
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up