DDD 序文とか
Foreword by Martin Fowler
- ソフトウェアの複雑性
- 本質的に、問題のドメインそれ自体が複雑
- なくすことはできない、制御できるのみ
- 複雑性を制御するには、ドメインをうまくモデリングすることがカギ
- できる人はそうはいない
- 人に教えるのはすごくむずかしい
- 本書は、ドメインモデリングを説明し、語彙を与える本
- 概念と実装とは分けるべきではない
- 「デザインして、しかる後に作る」ではない
- 成功体験だけでなく、失敗も載せているのがすばらしい
- 両方から得たものを読者に提供してくれる
Preface
- ドメインモデリングの重要性は古くから気づかれていた
- が、方法論に関する書籍がぜんぜんなかった
- 複雑なシステムを構築してきた
- 成功・失敗両方経験した
- 成功したものに共通すること
- リッチなドメインモデルを構築していたこと
- 設計を繰り返す中で成長する
- 【補】たぶんリファクタのこと
- プロジェクトの骨子
- 設計を繰り返す中で成長する
- リッチなドメインモデルを構築していたこと
- この本の提供するもの
Contrasting Three Projects
- ドメインモデリングなしに、経験と勘で突き進んで失敗したケース
- ちゃんとドメインモデリングして成功したケース
- 開発者のみならず、開発者とドメイン専門家とのコミュニケーションも円滑に
- 設計が柔軟に
- ちゃんとドメインモデリングしたが、まじめにやりすぎて失敗したケース
複雑性による困難
- プロジェクトがうまくいかなくなる要因
- ソフトウェアの複雑性
- 煩雑すぎるプロセス
- 不明瞭な目的
- リソース不足
- 複雑性は設計に大きく左右される
- 本書の前提となる考え方
設計と開発プロセス
- 設計と開発プロセスは不可分
- 設計思想は開発・実装につながらねばならない
- さもなくば、学術的な議論に終わってしまう
- 設計を学んだ者は可能性にわくわくする
- そして現実に打ちひしがれる
- 使用技術とマッチしない
- いつ、時間の都合で妥協すべきかわからない
- いつ、妥協せずにこだわるべきかわからない
- 設計について抽象的に議論するよりも、開発で実際になされる内容をあげたほうがわかりやすい
- ので、開発プロセスのことについてもあえて言及する
- 本書は特定の方法論に基づいた本ではないが、アジャイルを意識してはいる
- DDDとアジャイルは相乗効果がある
- 以下、プロジェクトに求める前提要件
- XPのはなし
- コミュニケーションに重きをおく
- モデルと設計によりコミュニケーションの質が左右される
- プロジェクトがすばやく舵を切れることに重きをおく
- ミニマリズム
- 巨大で取り回しの悪いわりに、あまり価値を生み出さないドキュメンテーションからの解放
- 過剰実装はNG
- 過剰実装をさけるあまり、設計について深く考えなくなるのもNG
- 絶え間なくリファクタ(=小さな再設計)
- XPはすぐれた設計センスありきのもの
- リファクタ前の設計により、難度は左右される
- ミニマリズム
- コミュニケーションに重きをおく
英語
- du jour [də dʒə́ːr]
- 【仏】今はやりの、最新の
- 後置修飾
- 【仏】今はやりの、最新の
- intricacy
- 複雑さ、込み入っていること
- gestate
- 思想・計画等を温める
- 満を持している感じ
- 思想・計画等を温める
- old hands
- 熟練者たち
- a raft of
- 大量の
- disinterested
- 私心のない、公正な
- uninterested (興味のない)とはだいぶ違う意味
- 私心のない、公正な
- omnipotence
- 全能
- fly by the seat of one's pants
- 経験と勘を頼りにする
- bogged down
- 泥沼にはまった
- exemplary
- 模範的な
- ossify
- 骨化する
- 変えられなくなる
- legacy
- 遺物
- 遺産とか負債とか
- 遺物
- upward trajectory
- 上向きの軌道 -> 出世コース
- 本文では、「上り調子」くらいの意味か
- 上向きの軌道 -> 出世コース
- incisive
- 鋭敏な
- 鋭利な
- 日本語で言う「キレッキレな」が近いかも
- virtuous cycle
- 好循環
- lofty aspirations
- 高い望み、遠大な志
- become mired in
- ...で泥沼にはまる
- bureaucracy
- 官僚政治
- 転じて、官僚的に煩雑な手続き
- to name a few
- 2,3例を挙げると
- a great deal of
- 多大な
- legions of
- 多数の
- cultivate
- 修める、練磨する
- skills 等を目的語にとって
- 修める、練磨する
- inextricable
- ほどけない、不可分な
- dry up
- 干上がる -> ~に終わる
- descend on
- ...を急襲する
- let go of
- 離す -> あきらめる
- in the interest of time
- 時間の都合で
- dig in one's heels
- 妥協を拒む、頑なに自分の意見に固執する
- let go of の対として使用
- 妥協を拒む、頑なに自分の意見に固執する
- advocate
- 提唱する
- profound
- 深遠な
- once in a while
- 時たま
- ある日突然急成長したりするやつ
- 時たま
- onion peeling
- ちょっとずつ進むこと
- delve
- 掘り下げる
- digのような「穴を掘る」的な意味はたぶんない
- 掘り下げる
- sprawling
- 広大な
- center of discourse
- 論議の中心
- lucid implementation
- わかりやすい実装
- scrutinize
- 精査する
- grope
- 模索する
- pore over
- しげしげと見つめる
- shepherding process
- PLoP: Pattern Languages of Programs の査読フェーズ