どうもこんにちは。古家です。
引き続き読書会を開催しています。
題材としては「デザインパターンとともに学ぶオブジェクト指向のこころ」です。
事前準備(一応途中参加も受け付けております。外部からの参加も全然OKです)
- appear.inにて参加(参加希望の方はfuruya0102@growth-and.comまでご連絡ください)
- 音声通話の準備(マイクとヘッドホンの準備。ヘッドセットがあれば楽です)
- 課題図書の購入 (オブジェクト指向のこころ)
- 範囲の理解
大まかな流れ
- 全員が事前に範囲を読んでおく(この時、わからない点や思ったことをメモっておくと良い)
- 説明役を一人決め、その説明役が当日説明をする
- 次の日時、範囲、説明役(及び説明代理)を決める
- ブログに参加者、範囲、レビュー等の情報を掲載
今回の読書会範囲
- 第12章 エキスパートはどのように設計するのか?
読書会参加者
- 古家
- 玉尾
- 清水
- 井上(ライジングサン企画)
今回の感想
今回の説明も諸事情により古家が担当しました。
今回はいったんデザインパターン個々にフォーカスを当てるのをやめ、設計に関しての話になります。
本書でたびたび登場するアレキサンダーさんの建築における方法論を使い、それが我々のシステム開発にどのように生かせるか?というところを検討していく回でした。
少々翻訳側のミスなのか、よく意味が分からない文脈が目立ちますね。
言わんとしていることはなんとなくわかるので問題はないですが、「胎児の成長になぞらえ」?とかいきなり出てきてビビります。その心は?ってなってました。
あと、前掲書の引用がたびたび出てきてますが、本を持っているわけではないのでそれもちょっとどうかと思います。
第12章 エキスパートはどのように設計するのか?
Christopher Alexanderという方の本になぞらえて設計方法論を学んでいくという章です。
この著者はアレキサンダーさんのThe Timeless Way of Buildingという本から設計論について感銘を受けたというところから始まり章自体を作者の実体験をもとになぞって説明していくものですのでストーリーだっています。
なので要約だけまとめたいと思います。
システムをくみ上げるとき
- 詳細に目をつけまとめ上げていくのか
- 全体像をとらえてブレイクダウンするのか
- それともその他があるのか
どのようにしていけばよいのかというのを建築学から考察していきます。
結果を先に言うと全体像をとらえてブレイクダウンしていく、ということですが、それが具体的にどういうものなのかを示すと、システム自体のコンテキストの粒度を詳細にしていき、デザインパターンを当てはめていく作業の連続、ということになります。
問題に対してどういうデザインパターンを当てはめられそうか?→当てはめるとメインの処理が決まり、そこからさらに各処理を実現するパターンを見ていくことができ、、、っていうことでそのパターンを見定めたら後は実装に入るだけとなります。
ちなみに、機能を洗い出し、それらをまとめ上げるようなアプローチもありますが、そちらのパターンは機能ありきになってしまい、それらをまとめ上げる際に不都合が生じやすいです。
例えば、自分の家を建てる際に、面積や道路にどのように接しているかを考えずにいきなりトイレが必要だからトイレを作るなどで定義しても、あとでそれが家に素直に収まるわけがないということです(大きすぎて、他のレイアウトが疎かになったら全体の調和がとれない)。
駐車場を作ったけど、道路との調和を考えないがために車の出入りで何回も折り返すことになったとかもそうですね。
アレキサンダーさんは建築学ということから述べているので、そっくりそのまま当てはめることは出来ないかもしれませんが、基本的にはシステムに対してもそういう観点は重要です。
この本の範疇ではないですが、そういう開発はテストにおいても書きやすいテストになったりしますし、我々も設計において注意していきたいところですね。
次回について
次回は8月6日になります。対象範囲は13章CAD/CAMの問題をパターンによって解決するで説明は玉尾さんに行っていただく予定です。