美しさを追求してみる
みなさん、美しくないものと美しいもの、どちらが好きですか?
機能を追求すると美しさが備わる
通常、機能は単一の要件を満たすものとして出来上がるモノだと思います。そこに、アレもコレもという形で追加追加されていくのが一般的な成長なのだと思います。
こちらの画像を御覧ください。
これはSpaceX社のロケットエンジンであるラプター(RAPTOR)の世代ごとの写真です。
左から第1世代、第2世代、第3世代です。
第1世代は、スパゲッティ状態になったモノリスアプリのような構造になっていますが、進化が進むにつれてシンプルになっていっているのがおわかりになるかと思います。世代が進むにつれて出力も大きくなっていますが、なによりもシンプルで美しくなっていませんか?(もちろん美しさは個人の主観ですが...)
苦難を克服すると美しさに変わる
Space X社は皆さん御存知の通り、Elon Musk氏が率いています。第1世代のラプターも、多くの失敗を経験し課題を克服してきています。しかも、矢継ぎ早に実験を繰り返していますよね。第2・第3世代では、ただ単に課題を克服するだけではなく、そこから抽象化という作業をしているのが見受けられます。
作って問題を見つけて克服し、それを抽象化する。その繰り返しをすることで、洗練されたシンプルなデザイン(設計)に落ちていくのではないかと思います。出来上がったものを俯瞰して見ることで、今までこだわっていた視点とは違う観点で見ることができるようになり、それが新たな観点での整理・抽象化につながるものと思います。
ラプターもそのような観点でシンプル化されていっているのではないかと想像します。
ソフトウェアの美しさ
ハードウェアは、「モノ」が存在するので目で見た美しさがありますが、ソフトウェアは「モノ」として存在していないので、美しさが伝わらないところがあります。なので、ソフトウェア、とりわけ基幹システムのようなもので「美しさ」を表現しようとしても、「はて?」となることでしょう。
ですが、美しさは確実にあると思います。単に機能的という観点だけではなく、何か変更が生じた時に多くの工数を掛けなくともサッと変更できるというものは、構成が整理されているからできるものであり、無駄が無い状態です。それってつまるところ、ハードウェアで言う「美しさ」に共通するものだと思うのですが、いかがでしょうか。
機能的ではないものは、例え美しさがあるように思えてもすぐに飽きる
一方で、機能的ではないものは、例え美しさがあるように思えても長く使い続けることができないものです。
ソフトウェアの世界で言うと、ただ単にデータを表示するようなものです。整列されていてフォントや背景も美しい画面であっても、有象無象のデータが延々と表示されているだけのものは、何かアクションを起こそうと思っても難しく、集計とか図表化して欲しい等と機能が欲しくなるものです。
機能的ではない美しさは、数日眺めただけで使えないと判断してしまいますよね。
皆さんも「機能的な美しさ」を意識してみてはいかがでしょうか。ITにおける日々のアプリケーションの構築作業も、それって美しい?かどうか意識してみてください。今まで考えなかったような観点での様々な議論が行われ、美しさに繋がる活動になると思いますよ!
私が思う美しいアプリケーションアーキテクチャは、こちらにあります!