『現場で役立つシステム設計の原則』
https://gyazo.com/85cd5fb742f0b0c9f4998484bed8130d
増田亨著
/mrsekut-book-477419087X
タイトルと表紙見て、本当に良い本なのか〜??と思ってたが
イミュータブルでゆこうで著者の発表を聞いて、
これは読まなきゃ、という気持ちになったので即ポチった
このスライドとか良い感じ
OOPでの話をしている
サンプルコードはJava
コードはそんなに出てこない
immutable data modelを採用している
OOPでmodelingするならめちゃくちゃ良い本だと思うmrsekut.icon
要点がまとまっていて簡潔
それでいてわかりやすい、読みやすい
もっと早く読みたかった
ダイジェスト
https://www.youtube.com/watch?v=CHJSnZb8dgk
第1章 小さくまとめてわかりやすくする
関数を小さく作る、などmrsekut.iconにとっては当たり前な話
やっぱOOPってだるいな、という気分になる
制限の緩すぎる言語を使って、制限を自分らで作って運用していくことになる
記述的に冗長にもなる
最初から制限が入っている言語を使ったほうが楽
ファーストクラスコレクション
知っている内容も多かったけど、これが1章にまとまっているのはすごく良いと思うmrsekut.icon
OOPをチームでやる時に、「この本の1章だけでも読んで!」と言えばだいぶマシになる
第2章 場合分けのロジックを整理する
/mrsekut-book-477419087X/050 (第2章 場合分けのロジックを整理する)
区分ごとのロジックを別クラスに分ける
interfaceを使ってポリモーフィズムることで、if文を消せる
/mrsekut-book-477419087X/066から
4章の話の伏線になっている
/mrsekut-book-477419087X/127
Javaの列挙型を使えばもっとかんたん
区分ごとの業務ロジックを区分オブジェクトで分析し整理する
状態の遷移ルールをわかりやすく記述する
第2章のまとめ
第3章 業務ロジックをわかりやすく整理する
/mrsekut-book-477419087X/070 (第3章 業務ロジックをわかりやすく整理する)
データクラスと機能クラスを分けることで起きる弊害
DomainObjectのことは前から知っていたけど、
この章を読むことで、
データクラスと機能クラスを併用すること
DomainObjectを作ること
の違いがハッキリと分かるようになったので良かったmrsekut.icon
Package
第4章 ドメインモデルの考え方で設計する
/mrsekut-book-477419087X/096 (第4章 ドメインモデルの考え方で設計する)
要求分析
分析クラス
利用者の関心事を明らかにする
実装に基づいていないので自由になりすぎる
抽象的すぎて、これがどういうものを指しているのかいまいちわからんmrsekut.icon
なので、ここら一体の説明がほとんどよくわからない
設計
人間のやりたいことを動くソフトウェアとして実現する方法を考える
設計クラス
プログラミング単位を明らかにする
分析クラスと設計クラスを一致させることが重要
OOPは手続き型と違ってボトムアップに設計できる p.105
OOPもトップダウンだと思っていたmrsekut.icon
全体を俯瞰する方法
パッケージ図
業務フロー図
ヒト/モノ/コトに分ける
一応読んだけど、もっと複雑なアプリケーションを作る時に再読すると良さそう
ECのような、コトが役立つやつ
第5章 アプリケーション機能を組み立てる
/mrsekut-book-477419087X/152 (CHAPTER 5 アプリケーション機能を組み立てる)
ドメインモデルに業務ロジックを書く
シナリオクラス
/mrsekut-book-477419087X/169
UseCase的な
第6章 データベースの設計とドメインオブジェクト
/mrsekut-book-477419087X/176 (第6章 データベースの設計とドメインオブジェクト)
めちゃくちゃ良い話ばかり書いているmrsekut.icon
DBのtableの設計
第7章 画面とドメインオブジェクトの設計を連動させる
/mrsekut-book-477419087X/200 (第7章 画面とドメインオブジェクトの設計を連動させる)
どこまでがViewの責務か
1画面に多くのコンテンツを入れないというのはわかるが、サービスによってはそこを改善できないパターンがあるmrsekut.icon
楽天の客層のように、ごちゃごちゃした画面が好きなユーザーが対象だと、そのデザインの複雑さにはモデリングが口出しできない感じがある
タスクベースのユーザーインターフェースにすべき
p.205
OOUIの批判対象(?)のタスク指向UIのこと?
画面も分けてしまう
タスクベースのインターフェースが増えている2つの理由
タスクベースに分ける設計が今後の主流
画面とドメインオブジェクトを連動させる
選択肢
Domain Objectをそのまま使う
表示用のロジックを持つView専用objectを用意する
UIデザインもドメイン設計も意識することは同じ
第8章 アプリケーション間の連携
/mrsekut-book-477419087X/228 (第8章 アプリケーション間の連携)
アプリケーションを連携する4つのやり方
ファイル転送
DB共有
Web APIo
メッセージング
XMLを返すAPI
JSONよりも複雑なことを表現できる
非同期メッセージング
第9章 オブジェクト指向の開発プロセス
/mrsekut-book-477419087X/272 (第9章 オブジェクト指向の開発プロセス)
DDDの本の序盤に書いているような内容mrsekut.icon
短いサイクルでV字モデルを繰り返す
分析と設計を同じ人がやって、ドメインモデルに落とし込む
コードのみで完結するものはコードで表現する
別途ドキュメントを書くことは不要
利用者に向けた文書などは書く
第10章 オブジェクト指向設計の学び方と教え方
/mrsekut-book-477419087X/292 (第10章 オブジェクト指向設計の学び方と教え方)
OOPの学び方
リファクタリング
巨大なクラスの改善
classを小さく作る
オブジェクト指向エクササイズ
参考文献一覧
/mrsekut-book-477419087X/315 (参考文献一覧)
#スクボ読書化した本