しかし,単純なものでも説明がいるような道具があるとするなら,これは,よいインターフェイスを持った道具ではないのだ。改めて述べるまでもなく、IT関連技術の発展は目覚しいものがあります。PCを例にとれば、処理速度や容量・解像度のような定量的な尺度で計れる性能については、大抵のユーザーの需要はすでに満たしているのではないでしょうか。このような性能面での機能が満たされれば、次にユーザーが求めるのは「機能性」、そして「使い勝手」です。
J・J・ギブソン 『アフォーダンス理論』
最近はこの「使い勝手」を決定付けるものとして、ユーザーインターフェース(User Interfase:UI)に関する議論が活発になっています。GUIを始めとするUI設計に関する記事や書籍もよく目にしますし、日用品や家電製品でもユニバーサルデザインを前面に押し出した製品をよく見かけるようにもなってきました。
ところでこのUIに関する議論は、プログラミングにおける関数やクラスの設計も同じことです。関数やクラスが含まれるライブラリの使用者によっては、インターフェースのみが重要であって、実装には興味がないのです。ここでいうインターフェースとは、ヘッダファイルに直接現れるような関数やクラスの宣言のみではなく、処理内容の外部仕様も含みます。
一般的にUIというと機械と人間を媒介するものを指すので、関数やクラスのインターフェースはUIとは少し違うように思えるかもしれません。しかし、実際にそのライブラリを使うのが別のあるプログラムであるとしても、それを使わせようとプログラミングするのはプログラマたる人間です。そういう観点で考えれば、ライブラリ設計にもUI設計の考え方が当てはまるのではないでしょうか。
例えば、最近よく耳にする「アフォーダンス(affordance)」。物体の持つ属性(形、色、材質、etc.)が、物体自身をどう取り扱ったら良いかについてのメッセージをユーザに対して発している、とする考え方です。Webアプリケーションであれば、リンクをボタンの形にすることで、これは押すものだとユーザーに訴える。
プログラミングの例にあてはめると、関数の名前や引数を見ただけで、その仕様がわかるようにする。例えば、is_A()という名前の関数名のようにis_xxx()という名前によって、関数がbool値を返すということがわかるといった感じです。
その他、昨今のUIの議論からプログラミングの設計について考えさせられるところは多いです。詳しく書き出すと長くなりそうなので、改めて追々書いていきたいと思います。
【関連記事】
・変数の命名規則
【関連書籍】
・誰のためのデザイン?―認知科学者のデザイン原論
・インターフェイスの街角―本当に使いやすいユーザー・インターフェイスの極意
・アフォーダンス-新しい認知の理論
| ホーム |










