ソフトウェアは最小限の機能でリリースすべき

ぼくたちが普段当たり前に使っているソフトウェア・アプリは、シンプルな役割のものでさえ、そこまでシンプルな形をしていない。

140文字(が未だに適用されているのかは知らないが)の投稿をするだけのTwitterでさえ、初見では使えない機能が沢山あるはずだ。

 

ぼくたちがソフトウェアを作るとき、シンプルでないものを作るべきではない。

理由は、ユーザーの教育が進んでいないからだ。

初めて触れるサービスに対して、人は使い方が全くわからない。

そのため、最もシンプルな機能だけ用意する。

誰に対しても、その機能を使うことが自明であるようなUIを設計する。

それでも初見で触れたユーザーの多くは、使い方が分からないと言って使わずに画面を閉じるだろう。

 

複雑な(付加的)機能は、使われないので開発コストに対するリターンが割に合わないばかりか、複雑な機能はユーザーの心理的なコストを増大し、ユーザー獲得に悪影響ですらある。

 

新規のソフトウェアに大切なのは、他のソフトウェアに足りない機能を付加することではない。

他のソフトウェアよりも、機能を削ぎ落として最も重要な機能だけを洗練させることである。

 

ソフトウェアは時間とともに複雑になっていく。

このことの是非はともかく。

ユーザーが使い慣れると、簡単な機能は何も考えずに使えるようになる。

すると、別の機能を付加しても、心理的なコストをあまりかけずに追加の機能を使用してくれる。

こうして、少しずつソフトウェアは複雑化していく。

でも殆どの場合、いま広く使われているソフトウェアは最初はもっとシンプルだった。

最新版を初期にリリースしたとして、成功したかといえば恐らく違うはずだ。

 

Twitterを例にあげると、最初は140文字をポストするだけのサービスだったはずだ。

リストとか、プライベートアカウントとか、スペースとか、トレンドといった機能は、恐らくなかったはずだ。

(Twitterに興味がないので詳細は合っていないかもしれない)

 

ここまでの話をまとめると、ソフトウェアの初期は最もシンプルな機能だけをリリースする。

ユーザーの増加に伴い、ユーザーを教育しつつ、徐々に機能を追加していく。

これがソフトウェアの一般的な成長過程だ。

ユーザーが数が伸びていないのに機能を増やしたり、矢継ぎ早に次々と機能追加するのは、恐らく悪い改善になる。

 

個人的には、一つのソフトウェアに次々と機能を追加するのは好きではない。

複雑性が増して開発コストが高くなるし、本来のアプリが担うコアな機能とはかけ離れた機能は、想定していない多くのユーザーにとっては邪魔なだけである。

 

追記: 

ソフトウェア開発者が複雑なものを作りがちな問題は、非エンジニアとは違う理由からきているという仮説を持っている。

非エンジニアは、とりあえず作っておくと安全という理由で、開発コストを無視して機能追加をしがちである。

それとは別に、エンジニアがソフトウェアを複雑にしがちなのは、彼らはソフトウェアを作ると同時に、使う基礎的な能力が高いことに起因すると思っている。

現代のエンジニアは学ぶことが得意な人が多く、新しいサービスに対して比較的順応が早い。

多少複雑なものでも理解できる。

そのうえ、ソフトウェアがどのように作られているか、根底にある技術の理解があるため、ソフトウェアを使う際にもロードマップを持って使うことができる。

また、複雑な機能を覚えることによる効率化のメリットもよく理解している。

 

こういった理由から、ソフトウェアエンジニアは非エンジニアのソフトウェアに慣れていない人の思考が理解できない。

それゆえに複雑なものを作りがちだし、素養あり教育が進んだ自分が使いやすいものを作りがちである。

しかし、世の中の多くはあなたほど学習意欲はなく、ソフトウェアの使い方もよく分かっていない。

そういう彼らでも使いやすいソフトウェアを使いこなせるほどシンプルなアプリでないと、ユーザーの獲得は難しい。

 

エンジニア向けのサービスであればいいのだが、それはそれで別の地獄があることは想像に難くない。

彼らは気に食わない機能を自分で作り出す能力を持った、非常に厄介なお客であり将来の競合でもある。