プログラミング雑誌の編集をしていると,ソフトウエア開発やプログラミングは,何に似ているだろうか,と思うことがある。 昔から様々な比ゆ(メタファ)が用いられてきている。Webで検索できるものを挙げてみても,料理,音楽(作曲),小説の執筆,面白いところでは,精神分析,臨床心理学…などの意見が見つかる。興味のある方はぜひググってみるといいだろう。 様々なメタファがあるなかで,最も広く知れ渡っているものを挙げるとすれば「建築」だろう。ソフトウエア開発を「建築物を作ること」ととらえ,開発プロセスを大きく上流(設計)工程と下流(建設)工程に分けるという考えは,単なるメタファにとどまらず,ソフトウエア開発の様々な面に大きく影響を与えている。 例えば,○○アーキテクチャとかITアーキテクトといった用語が出てくるのは,建築をメタファとした影響だろう。ソフトウエアの設計ノウハウの集まりであるデザインパターンが