プログラマが知るべき97のこと
本記事は、株式会社オライリー・ジャパンより出版された『プログラマが知るべき97のこと』の中からひとつのエッセイを取り上げ、そのエッセイをクリエイティブ・コモンズ表示3.0の条件下で転載したものです。
本書の各々のエッセイは、オープンソースモデルに従い、ほぼ無制限で利用が可能です。クリエイティブ・コモンズ表示3.0の条件下で、自由に使用することができるのです。つまり、どのエッセイも、著者の名前を明記すれば、自由に転載、改変が可能であるということです。
『プログラマが知るべき97のこと』はじめに(p.XII)
なお、原書(英文)のエッセイは、下記のWebサイトで公開されています。
Contributions Appearing in the Book – Programmer 97-things
53 正しい使い方を簡単に、誤った使い方を困難に
スコット・マイヤーズ(Scott Meyers)
インターフェースの使いやすさは設計次第
インターフェース仕様を決定する作業は、ソフトウェア開発プロジェクトには必ず必要です。「インターフェース」には、抽象度の高いもの(ユーザインターフェース)もあれば、低いもの(関数インターフェース)も、その中間のもの(クラスインターフェース、ライブラリインターフェースなど)もあります。
つまり、システムとユーザの間のインターフェースもあれば、プログラマとAPIの間のインターフェースもあり、関数とクラスの間のインターフェースなどもあるわけです。
いずれにしろ、その設計が重要であることに変わりありません。設計が良ければインターフェースは使いやすくなり、生産性は向上することになるでしょう。反対に設計が悪ければ、インターフェースがストレスやミスの原因になります。
良いインターフェースとは
良いインターフェースとは次の2つの条件を満たすインターフェースのことです。
正しく使用する方が操作ミスするより簡単
インターフェースの設計が良ければ、ユーザは、ほぼ間違いなく正しく使用できます。それは、正しい使い方が「一番易しい使い方」になっているからです。
GUIの場合なら、正しいアイコンやボタン、メニュー項目が、正しくないものより簡単に見つけられます。どれが正しいのかが一目でわかるようになっているのです。
APIの場合なら、どのパラメータにもほぼ間違いなく正しい値を渡せます。一番「自然な値」が正しい値なのですぐにわかるのです。正しく使用することが簡単であれば、物事はすべてスムーズに進みます。
誤った使い方をすることが困難
優れたインターフェースというのは、使う人間がどういう間違いをしそうか、あらかじめ予期した作りになっているものです。そして、そういう誤りが起きにくいよう対策を講じてあります。
たとえばGUIなら、そのコンテキストで実行しても無意味なコマンドは、自動的に使用不能になる(あるいは、なくなる)ようになっています。
APIの場合なら、引数をどの順序で指定しても同じ結果になるようにしたりします。それによって「指定順序を間違える」という問題自体が発生しないようにしているのです。
作る前に使ってみる
簡単に正しく使え、ミスをしにくいインターフェースを作るには、「作る前に使ってみる」という方法が有効です。
たとえばGUIなら「モックアップ」を作ってみましょう。ホワイトボードに描いてもいいし、インデックスカードを机の上に並べてみてもいいでしょう。要するにコードを書く前にそれでシミュレーションしてみるわけです。
APIの場合なら、そのAPIの関数を宣言する前に、呼び出しのコードを書いてみましょう。それらの方法を使って、通常あり得そうなユースケースの一つ一つについて、インターフェースがどう機能すべきかを事前に検証します。実際に使用する際にはどういうアイコンやボタンをクリックすることになるか。どういう引数を渡すことになるか。
使いやすいインターフェースの特徴は「自然であること」です。「自然である」というのは、「常にその状況で一番しやすいことをしていれば、自動的に正しい使い方になる」という意味です。そういうインターフェースを作ろうとすれば、作り手がユーザの視点で物を見る必要があります(作る前に使ってみるという手法は、その意味で非常に有効です)。
インターフェースが存在するのはユーザの利便のため
使い方を間違えにくいインターフェースを作るには2つの方法が有効です。1つは、ユーザがしそうな間違いを事前に予測し、それを防止する策を講じることです。もう1つは、リリース後の早い時期に実際にインターフェースがどのように誤用されるかを観察し、改良を加えることです。
誤用を防ぐ最良の方法は、そもそもその誤用を不可能にしてしまうことでしょう。観察の結果、ユーザが取り消し不可能な操作を何度も取り消そうとしているとわかった場合には、その操作を取り消し可能にすべきです。
APIに誤った値が渡されることが多いとわかれば、できる限り、実際によく渡されている値を正しいものとして扱えるような改良をしましょう。
何より重要なのは、インターフェースが存在するのはユーザの利便のためであり、開発側の利便のためではないということです。それを忘れてはなりません。
コメント