~ プログラミングって面白そうと思った方に向けた連載エッセイ ~
先ほど画面の美しさとプログラムの美しさには直接の関連性はないと書いた。プログラミング経験のない方には理解しづらい点だろう。個別のトピックに触れる前に、この点について補足しつつ、プログラムにおける美しさの特徴について、簡単に整理しておきたい。
ソフトウェア開発において、プログラミングと画面デザインは分業されることが多い。設計者やデザイナが図やプロトタイプ(模型)に表したものを、プログラマがプログラムに組み込んでいくのである。画面の美しさは、基本的には元のデザインによって決まる。表示するためのプログラム構造が汚いからといって画面が汚くなるわけではない。どんな組み込み方をしようと、プログラマに目的を達成する意思と時間があれば、デザインの美しさを画面に再現することは概ね可能である。
規模の小さいソフトウェアや、画面デザインの優先度が比較的低い業務ソフトウェアでは、プログラマがデザイナを兼ねることも少なくない。しかし、プログラミングとデザインは基本的に別の根を持つスキルである。優れたプログラマが優れたデザインセンスを持っているとは限らない。バランスの悪い配色やメリハリに欠けた配置のせいで、中身のプログラムも同じだろうと類推され、ソフトウェア全体の品質が低く評価されてしまうことがあるのは、何とももったいない話である。
画面はユーザーに直接触れるもので、その美しさは操作性とあわせて評価される。デザインの本来的な役割は強調、関連といった意味づけであろうから、意図を明解に伝えられたとき、それを美しいというのかもしれない。
画面デザインとプログラムはソフトウェアの価値としては一体のものであるが、美しさの基準や効用にはかなりの違いがある。両者を一緒くたに扱うと論の輪郭が不明瞭になるおそれがあるため、ここではプログラムの美しさに画面デザインの美しさは含めないことにして、以降の文を進めさせていただく。
プログラムの美しさは、ソフトウェアの外観には表れない。「美しいプログラムでできています」と訴えても人々の心に響くことは期待できないので、セールスポイントに挙がることもまずないだろう。ユーザーに及ぼす影響は、実は小さくないのだが、あくまで間接的なものである。
では、プログラムにおいて美は、いったいどこに存在するのだろうか。
プログラムの美には目的がある。目的とは、品質、生産性の向上である。この実利に資する美であるという点が、そのありかを探す鍵となる。
プログラマにとってプログラムは、コンピュータを動かす手段というだけでなく、ほかのプログラマ(未来の自分を含む)とのコミュニケーション手段でもある。美しいプログラムは簡潔・明瞭である。その意図がスムーズに伝達されるため、作業のロスが少ない。無駄なく整理されているため、変更や拡張も容易である。
プログラムにおいて「美しい」は「正しい」という意味も含んでいる。想定漏れだらけで許されるならいかほどでも短く書けるだろうが、それを美しいとは言わない。どれだけきれいに整頓されたソースコードでも、品評会に出したいくらい均整のとれたアーキテクチャでも、処理効率が悪ければ全体として美しくはない。逆も然りで、バランスが大事なのである。
以下、このような目的にも触れながら、プログラムに存在する美について具体的に見ていきたい。
序章
第一章 その美の特徴
第二章 見た目と冗長性
第三章 ロジック
第四章 命名
第五章 アーキテクチャ
第六章 リファクタリング
第七章 デザインパターン
第八章 正規化
終章