カテゴリー
雑記

設計の美しさと実行の難しさ

完璧な設計を思い描くことと、それをそのままの形で実装することの間には、大きな距離がある。
とくにハードウェアやソフトウェアのように、多くの人が関与するプロジェクトでは、想定通りに物事が進まないことなど日常のように起きる。前提条件は変わり、環境は変化し、予期せぬ要素が必ず入り込んでくる。

Big Things という本がある。そこに、そんな困難の中でも大成功をおさめた巨大建築プロジェクトが紹介されていた。そこで得られた教訓として、特に印象に残っているのが次の二点だった。

  1. 丁寧に設計する
  2. 高速で実行する

完成までに時間がかかればかかるほど、変数の値は変わっていく。
だからこそ、設計は慎重に、そして実装は迷わず速く進める必要がある。前提条件の変化に巻き込まれる前に、コアの構造を一気に形にしてしまう。
そのために、モジュール化し、できる限り変化の少ない単位で取り組むという方針が示されていた。

昨日、京都の街を歩いていたとき、そのことをふと思い出した。
通りの名前が交錯する場所を組み合わせて、行き先を伝える文化がある。
タクシーで場所を伝えるとき、「○○通と△△通の角」と言えば、地元の人はすぐに二次元平面上の座標として理解してくれる。まるで、そこに住む人々を含めた都市全体にプロトコルが埋め込まれているかのような感覚だった。

それが可能なのは、都市の設計がうまくされていたからだと思う。
ハードウェア設計よりも遥かに複雑で、関係者も世代も多く、しかも完了しないプロジェクトである都市計画において、あれだけの構造が保たれていることに驚いた。完全に意図通りだったとは思わないが、後からの変更や変動を吸収できるような設計がなされていたのかもしれないし、あるいはコアとなる思想が今なお受け継がれているだけなのかもしれない。

京都のような都市設計は、超高速で実行されるものではない。
むしろ、最も重要な基礎部分は、思想を支える設計として最初に一気に決まり、その後の実装段階では現場の判断に左右されないような仕掛けがあったのではないか。
信条に近い価値観が共有され、設計の意図を現場で引き継がせるための内発的動機付けが文化として根づいていたのかもしれない。

都市そのものについてはそれ以上考えるのをやめたが、設計と実装、その理想的な関係については、改めて深く考え直した。

カテゴリー
写真

京都鴨川 Starbucks

京都出張の合間に。

カテゴリー
雑記

関西の Ruby プログラマー募集中

現在関西圏に住んでいる Ruby 開発者の方、Ruby で開発がやってみたい方、募集中です。勤務地は京都になります。Ruby on Rails の経験がある方、あるいは他の言語、他のフレームワークでの Web アプリケーション開発経験がある方、ぜひご連絡ください。

詳細は下記リンクをご参照ください。

モバイルバージョンを終了