家具の配置。クラス設計。指針を与えるあなたは誰?

友人の家の模様替えに関する相談を受けながら、そんなことを思った。

自分の怠惰さには自信があるので、今の家に引っ越すにあたっては、なるべく怠惰でも家事がおっくうにならないレイアウトを考えた。「何かをどかさないと掃除がしづらい」を極力減らすだとか、ドラム式洗濯乾燥機の前から一歩も歩くことなく下着やタオルのような洗濯頻度の高い服をしまえるようにするだとか。何らかの家具を置くということは、その部屋に何かの機能を与えるということだ。たとえば机を置くことにより、デスクワークや書類仕事をする機能が部屋に与えられる。カーペットやソファなどを並べることで、自分自身や来客がくつろぐような機能を持たせることもできる。

ワンルームに全てを詰め込むのはいわば全てをmain関数に詰め込んだスクリプトに似ていて、規模が小さければ見通しがよく手軽である。一方、家でやりたいことが増えてくるとつらい。ベッドが応接を担当する部屋にあることは、来客時にベッドメイキングが必須になるなど考えることを増やす。あるいは、それぞれの役割にとって最適な家具の配置同士が干渉する。

動線の長い家というのは、機能の配置が悪い家ということになるだろう。洗濯機置き場と物干し場、服の保管場所の間の距離が長いのはよくない。なるべく同一の、あるいは隣り合った部屋に配置すべきだ。

部屋もクラスも、なるべく内に閉じていて外部との依存が疎に作るのが原則としては好ましいのだろう。

ただし、どちらに対しても、原則に対する挑戦者は存在する。現実は複雑だ。

どんな大富豪だって、家でやりたいことが1000個あるからといって部屋が1000個ある家は作れないだろう。第一使い勝手が悪い。台所と食堂としてかつて分化していたものが、現代的な間取りではダイニングキッチンとして半ば一体化しているのも象徴的だろう。料理という家事を家族団らんの場から隔離することの弊害であるとか、核家族化によって調理に要するスペースが小さくなっただとか、理由はいろいろあるのだろうけど、現実世界では常に疎結合であるのがよいというわけでもないようだ。

とりとめのない記事を書いてしまった。

何が言いたいかというと、クラス設計というとソフトウェアエンジニアリングの話になるけれど、家具の配置(あるいは部屋の役割分担)と共通項がそれなりにあり、きっと工業製品における部品への機能の割り当てなどにも共通項がある。それらを一括して説明できる共通原理が存在するのではないかということです。 これくらいのことはとっくに既知であるはずで、名前もついていそうだけど、それはなんという名前なのだろう。