第2章 ソフトウェア開発への理解を深めるメタファ
メタファ:たとえ、現象を余すことなく描写しているもの
メタファを利用したものとしてモデル。
モデルは、真の姿を写し、概念全体を把握しやすくする。
良いメタファと悪いメタファがある。
良いメタファ:単純、他のメタファと矛盾しない。証拠や現象を説明できる。
Kの疑問:悪いメタファとは、何だ。複雑で、真の姿(現象)と矛盾が生じるもの?
ソフトウェアメタファは、答えの場所ではなく、どうすれば見つかるかを教えてくれる。
メタファは、直接的なナビみたいなアルゴリズムではなく、間接的にアドバイスみたいなヒューリスティックのことである。
プログラミングの課題は、問題を概略化すること
ソフトウェア開発にはたくさんのメタファが用いられている。
- コードを書く→手紙を書く(試行錯誤の連続。書いては捨てる)
- システムを育てる(ソフト開発)→種を巻いて作物を育てる(設計を少し、コードを少し、テストを少し。少しずつ追加する。問題を最小限に抑える。)
- ソフトの成長→Accuretion、真珠みたいに蓄積(取り込みを重ね続けて、成長する。)
- ソフトの構築→ビルド、建築(複雑なものほど、作る前段階を丁寧に構築する。)
- 知的道具箱(テクニック、トリック、魔法のおまじない)→ふさわしい道具と、それを正しく使う方法を知っている。メタファもその一つ
Kの周りを振り返ってみて、ディスカッションの場で、人に理解を伝える人が上手い人は、たとえがうまい。