綺麗に死ぬITエンジニア

シンプルとは、複雑なものを「複雑に見せない」ということである

2015-09-04

「物事は全て、シンプルな方がいい」、そう思っている人も多いのではないでしょうか。

シンプルイズベストという言葉があるとおり、シンプルということはそれだけで素晴らしいことです。

今日は、「シンプル」について少し考えてみます。

サービス・ソフトウェアにおける「シンプル」

周りの長く続いている経営者や、時代の頂点に立つような成功者達は、とてもシンプルにビジネスを進めているように思います。

それは、「簡単」とも違う、「単純」とも違う、ただただ「シンプル」に、です。

例えば、Google。

Googleのトップページは、どのWebサイトよりもシンプルです。機能もユーザからすれば至極シンプルなもので、1度、中央のテキストボックスに文字を入力すれば、誰もがその働きを理解できます。

しかしながら裏には、とても単純とは言えないような膨大な仕組みがあります。

Googleの利用者は、使っていく上でその複雑さに触れ、しかしながら次第に、徐々に慣れてゆき、最後には様々な機能を使いこなしていくようになります。

続いて、Microsoft。

MicrosoftのWindowsというOSは、Macintoshに比べてとても複雑なので、このままではいずれ廃れていくと思っています。

……ということではなくて。

MicrosoftのExcelという製品。

あれはMicrosoftの最高傑作だと思っています。

あなたの会社や学校では、提出書類がWordではなくExcelで作られたものではないですか?

それは、Excel、もとい表計算ソフトの有能たる所以です。

見た目はすごくシンプルで、誰でも説明を受けることなく、その機能を理解することができます。ただ、表に書き込んでいけばいいのだ、と。

そして徐々に使って、慣れていくうちに、関数という非常に便利な機能に出会います。その後、それを使いこなせるようになったりならなかったりします。

また、更に学習意欲のあるユーザは、VBAという機能を知り、Excelで何だってできるようになります。時にはデータベースのように利用し、業務アプリすら作ってしまうほどに。

このExcelそのものは、とても単純や簡単ではないですが、全ての利用者から見て、シンプルなソフトウェアに仕上がっています。

これが、「単純」でも「簡単」でもない、「シンプル」ということなのです。

デザインにおける「シンプル」

シンプルというのは元来、デザインに対して使われることの多い言葉です。

私はデザイナーではないので、そのあたりは疎いですが、デザイナーのデザインするロゴ等の製作物には、必ず意味があると聞きます。

裏に様々な思いや理由を乗せて、一つのシンプルなデザインを作製していくのです。

最近はフラットデザインやマテリアルデザインなど、よりシンプルで直感的なデザインが流行しています。

シンプルなデザインの強みは、分かりやすさ・使いやすさ・廃れにくさだと思っています。それらを持ち合わせた、安っぽくなく、かつシンプルで意味のあるデザインを作製することは、デザイナーにとっての課題であり、最も難しい技術だと感じています。

ソースコードにおける「シンプル」

では、シンプルさを求める必要があるのは、見た目・デザインだけなのか、というとそうではありません。

デザインは本来、「設計」という意味であり、見た目だけを指す言葉ではなく、この場合は「設計」という意味で捉えたほうがいいかもしれません。

私はエンジニアですが、シンプルなソースコードを書く(設計する)ことは、プログラマーにとって最も重要なスキルだと思っています。

私は予てからずっと、「プログラマーはプログラムを書くべきではない」と提言し続けています。それはつまり、「モジュールやライブラリは極力利用し、自分で実装するのはやめよう」ということであり、「処理を実装する際も、オブジェクト指向を考慮し、再利用性を高く疎結合に各処理を実装することにより、全体のコードの量を減らそう」ということです。

自ら書いたプログラムは、自らで試験・保守をしなければなりません。つまり、プログラムを書けば書くほど、指数関数的にその後の作業量(保守に掛かる工数)は増えていきます。

つまり、自分で1から書き上げるコードは極力短くすべきであり、それは即ち、アーキテクチャーをシンプルに保つ必要があるということです。

※ コードは短くすべきですが、可読性を優先します。コメント行をなくしたり変数名を短くしたりしろということではありません。1処理のロジックと、それぞれをつなぐインターフェースをシンプルにしろということです。

まとめ

ここまで読んでいただければわかるとおり、シンプルというのは、ただ単に単純ということではないです。複雑な構造をいかにわかりやすくするか、ということです。

複雑なものを単純に見せる、というのはとても難しいことですが、ヒットしたり皆に愛される製品・サービス・デザイン・物事になるためには、必須事項だと思います。単純に高機能で複雑だけど便利なものというのは、案外愛されないものなのです。

皆さんは、シンプルに行動できていますか?