ユーザーインターフェイス(1997/10/4)

 今回はユーザーインターフェイスについて書いてみたいと思います。

 プログラムを作るときって、ユーザーインターフェイスがキーになると思っています。いくら機能の優れたプログラムでも、使い勝手が悪いと「使えねぇ」ソフトになってしまいます。
 逆に、多少機能的には満足できなくても、ユーザーインターフェイスが優れていると、それをカバーしてしまう可能性が十分にあります。

 もう一つ大きい事柄があります。ユーザーインターフェイスをどう作るかというのは、個人プログラマにとっては、自分の切り売りであるということです。よく小説家は自分を切り売りして小説を書くと言います。僕なりにこれがどういうことかを考えてみると、小説を書くとき、もう一人の自分を小説の中に書き出すということに他ならないということじゃないかなと思っています。登場人物は自分の分身、情景描写は自分の目で見て心で感じたことです。そして小説家が小説を発表すると必ず批判にあいます。これは小説家にとっては自己否定に他ならないわけです。

 同じことは、すべての芸術家に言えることだと思うのですが、僕は最近プログラムを発表する立場に立ってみて、同じ感覚を感じています。特にユーザーインターフェイスについてそれを感じます。

 僕がはじめてWindowsのオンラインソフトを発表したのは、WithNIFTYのVer.1だったわけですが、その時は自分が使いやすいように作っただけだったので、まだ自分の分身という感じはしませんでした。ところがバージョンを重ね、たくさんの人に認められるようなソフトを作りたいと考えつづけるうちに、自分の分身としてのWithNIFTYが一人歩きし始めました。

 自分が考えることのできる、みんなが一番使いやすいだろうと思うユーザーインターフェイスを突き詰めるうちに、WithNIFTYは人から批判される対象となり、その批判に対して自分がひどく傷つくようになってきました。それは、ともすれば開発をする気力をなくさせてしまうくらい強烈なものです。

 ただ、ここまで来ると、作者としての自分も強くなってきています。それに批判されるのはあたりまえであるという考えもあります。批判されてたたかれて、いいプログラムになっていく... そういう過程を、WithNIFTYの開発を通してまざまざと見てきました。

 さて、いいユーザーインターフェイスとはどういうものかを考えたときに、僕が最初に思いつく言葉は、「オブジェクト指向的なユーザーインターフェイス」です。プログラミングの技術としてのオブジェクト指向とは少し赴きが違うのですが、要はそのソフトにとって一番大事な「もの」は何かをしっかり把握して、それを中心にすべての機能を配置するということだと思います。

 ユーザーインターフェイスを考えるときに、まず最初に、作ろうとしているプログラムでは、ユーザーにとって動作の中心となるオブジェクト(もの)は何かということに意識的に注目するということが必要です。そして、一度オブジェクトを決めたら、そのプログラムではそのオブジェクトを中心として開発します。そのオブジェクトからできるだけ逸脱しないようにします。
 これを一貫して守り続けて開発を行えば、筋が一本通ります。これは大きな特徴になります。WithNIFTYでは、オブジェクトを「サービス」という「もの」にしています。すべてがサービスを中心にまわります。これをOSと対比して考えると、「サービス」はファイルです。WithNIFTYの「コンテナ」は「フォルダ」にあたります。
 「サービス」の種類によって、そのサービスをダブルクリックしたり右クリックメニューを出したときに挙動が変化します。たとえばフォーラムサービスをダブルクリックすると、フォーラムの会議室一覧などが開きます。「郵便受け」をダブルクリックしたときにはメールのログがブラウザで開かれます。

 WithNIFTYVer.2では、この考え方を一貫して守っています。そのおかげで他に類を見ないオートパイロットソフトになっていると思っています。

 次のステップは、この考え方を踏襲しながら、プログラミング技術としてのオブジェクト指向技術を取り入れてコーディングを行うということです。Delphiを使って開発すると、自然とある程度はオブジェクト指向になります。しかし、これもしっかり意識して開発しないと、今までの手続き型のプログラミングにすぐに逃げてしまします。オブジェクト指向プログラミングに頭を変換するためには、かなりトレーニングが必要だと感じています。

 現在、オブジェクト指向プログラミングについて勉強中です。