My Daily Programming Life...

"ソフト"の矛盾

ソフトウェアの「ソフト」は、柔軟であることを意味する。簡単に変更できるし、取り換えられる。一般にソフトウェア開発ではその柔軟性を失わせずに、いかに構築していくか、つまり要求が増えたときにいかに簡単に対処できるようにしておくかが問われる。

この柔軟性はとってもうれしいことで、プラグインを入れたりすることでソフトはどんどん個人的なカスタマイズに応じてくれて、自分好みに変形させることができる。

ただ、これは開発者から見た場合だけに当てはまるものだと思う。ほとんどのユーザーはカスタマイズしたくないのだと思う。要求はある、でもカスタマイズはしたくない。それは手間がかかるしそんな知識はそもそもないからだ。

開発者はどうしても自分視点でソフトウェアを作ってしまう。たとえばある機能をF1キーで実現したとして、次にそのソフトウェアが目指すところは、その機能をほかのキーにも割り当てられるように、つまりカスタマイズできるようにすることだったりする。これは明らかに開発者視点である改善であると思う。たしかにほかのキーに割り当てられるようになれば自分の好きなキーに割り当てられて便利だ。でも、そんなことできることをしらないユーザーが使うのであればほとんど意味がなくなる。そういうユーザーはその機能がF1で実現されると知ったら、それで満足なんだと思う。

僕は一般ユーザーに使ってもらうソフトウェアは、いかにハードにするかが重要だと思っている。できることをひたすらに狭くする。でも必要なことはできなくてはいけない。

なにかを開発しているときに、いろんな選択肢にぶつかる。これをユーザーに表示すべきかそうでないか、などだ。そのときに、解決案として「設定できるようにしておこう」がよく持ち上がる。そして解決したことになる。

本当にそれでいいのだろうか。一般的な物理的な製品ではどうだろうか。テレビとか洗濯機とか。ここにボタンを付けるべきか、そんな壁にぶち当たるとハードな製品はおそらくそれを使う人と使わない人どちらが多いかを調べるのではないだろうか。

ソフトウェア開発にこの過程が少し欠けているのではないかと思うことがある。物理的な製品開発ではそれは少なくとも設定不可能であるため、あらかじめユーザーに対する調査がはるかに大きな規模で行われているんではないだろうか。

設定可能だから、たぶんこういうユーザーの方が多いから、または実装が簡単だから、デフォルトはこっちにしておこう。一般ユーザーに対する製品開発としてはこれではだめなんじゃないだろうか

0 コメント:

Post a Comment

feedSubscribe to my feed