プログラミングの「は・て・な」

第1回 理想のコンピュータ×理想のプログラマ(?)
    〜流星号はマッハ15だからすごいんじゃない〜

長谷川裕行
2008/3/17

ハードは進化したけれど

 Windowsはオーバーヘッドのかたまりだ。権化といってもいいだろう。そうすることで、GUIによる共通した簡便な操作の恩恵を誰もが享受できる。深い知識や経験を持っていなくても、部品を組み合わせる要領で扱いやすいアプリケーションを手早く作れる。便利な世の中だ。

 背景には、ハードウェアの性能向上と低価格化がある。CPUの速度はGHz、メモリはGBの時代だ。いくらでも冗長な処理を書ける。こんな親切で幸せな時代に、エラーメッセージが「プリンタエラーです」ではどうしようもない。どのプリンタのどのような状態が問題で、それを是正するにはどうすればよいか、OSの機能に頼ればすべてを表示できてしまう。自前の関数を作る必要もない。チープなハードで動作するために最低限の機能しか持っていないDOSとは異なり、今やOSがすべてを牛耳っているのだ。開発者もユーザも、それに頼りきっていい。というか、頼りきらざるをえない。APIを経ず勝手にハードを扱ったりしたら、OSさまに相手にしてもらえないのだ。

 Windowsが登場したころには、よけいなことをしてOSさんに叱られたものだ(僕って、いつもよけいなことをして叱られているんだな……)。

思い込みとは恐ろしいもの

 これだけ楽になったのだから、さぞかし親切なプログラムができるだろう……と思いきや、実のところまだまだ不親切な実務アプリが目立つ。技術屋というのは「便利になったのだから、それで浮いたエネルギーをユーザのために使おう」とは考えないものらしい(自戒を込めて)。

 まあ、たしかに近ごろの開発環境を使いこなすためには、ライブラリやコンポーネントのお勉強をし直さなければならなかったりして、開発者はけっこう不便をしいられたりもしている。それはわかるのだけれど、やはり重要なのは「ユーザにとっていかにわかりやすいインタフェイスを作るか」なのだと思う。

 先に、「かつてのプログラム開発では、メモリの節約と速度向上のために親切心を犠牲にした」と書いた。思い込みとは恐ろしいもので、かつて「コンピュータとはそういうものだ」と思い込んでしまった開発者の中には、これだけ冗長な処理が可能になっても、まだ「ユーザへのメッセージは簡単なものでかまわない」とかたくなに信じている人がいたりする。そしてそういう人が新人技術者の教育にあたったりすると、たいへんなことになるわけだ。

余ったパワーは誰のために?

 これだけハードが高性能化したのだ。処理が多少遅くなっても、ユーザが次の操作にとまどわないだけの親切心をアプリケーションに盛り込みたい。ゼロコンマ何秒を待てないせっかちさんより、目の前の道具(コンピュータ)が何をいっているのかをちゃんと把握したい人のほうが多いはずだ。

 たしかに「お取り込み中もうしわけありません。ただいま、サーバSv001に接続されたプリンタ“EPKON LP-9600”では、セットされたA4判の上質コピー用紙が足りなくなってしまいました。できましたら、消耗品倉庫からA4判の上質コピー用紙をお取り寄せいただき……」なんてエラーメッセージを出された日にゃあ、読んでいるだけでくたびれてしまう。

 おわかりかとは思うが、僕のいっている“親切・冗長”とはそういう意味ではない。メッセージは、常に簡潔明瞭であるべきだ。「今、どのデバイスでどのような事態が起きていて、それを解決するには何をすればよいのか」を、ユーザが驚いたりあわてたりしない適切なタイミングで、注意を喚起しやすい位置に提示すればよいのである。

 今のコンピュータとOSなら、その程度の処理に用いるCPUパワーとメモリはわずかなものだ。高性能化で余ったパワーは、ユーザインタフェイス(UI)のためにこそ使われるべきだと思う。

速さにさほどの意味はない

 UIの問題は奥が深い。プログラミングの観点からは、プログラム内部の機構的な部分が中心にすえられるため、UIがあまり重要視されないことも少なくない。というか、UIを考えるのはアプリケーションデザインの分野であり、プログラミングとは別なのだというとらえ方をする人が多いだろう。

 たしかに、処理速度や処理件数、レスポンスといったプログラムの実際の性能とUIのかかわりはさほど深くない。が、ユーザが操作して望む結果を得る──というプログラムの道具としての機能全体を見渡せば、UIの持つ意味は決して小さくない。

 ユーザに正しい操作をしてもらわなければ、プログラムは正しく動かない。マニュアルに何から何まで書いておけば、ユーザは正しい操作をしてくれる。それで間違えるのはユーザが悪い──という考えは間違っている。道具は、自分を正しく使ってもらうための努力をしなければならない。そのための機能がUIなのである。

 極端なことをいえば、「このプログラムは1秒間にン万件のデータを処理します」などといった性能自慢は、作る側や売る側の自己満足でしかない。子供の送り迎えや買い物に車を使うお母さんは、エンジンの10馬力の差を気にしたりしないのだよ。多少出力が低くても、ふだん使う機械は扱いやすいほうがいいに決まっている。流星号はマッハ15だからすごいのではないのだ。

中身より見た目だ?!

 今や、どんなプログラムでも中枢の部分では処理系から与えられたコンポーネントやライブラリを使うことになる。中身が同じなら、見た目(ユーザインタフェイス)の取っつきやすいほうがいい。パソコンという「器」が同じなら、使い勝手はソフトの表面でほぼ決まってしまう──ということである。結局、現代のプログラミングは「いかに扱いやすくするか、使いやすそうに見せるか」が重要なのだ。そのことを、おそらくいちばんよくわかっているのはゲームプログラマだろう。つい同じパターンの焼き直しで片づけてしまう実務系の開発者は、彼らに学ぶべきところが多いと思う。

 「りゅーせーごー、おーとーせよ!」「呼びかけコマンドの形式が違います」……なんてUIでは、ジェッターくんは活躍できないのである。

 ってなとこで、また次回♪

本連載は、ソフトバンククリエイティブ刊行の『C MAGAZINE』に掲載された記事を、同社の許可を得て転載するものです。

なお、 Webでの連載として転載するに当たり、若干表現を変更している点があります(例えば「本書は」としている部分は「本連載は」としていることや図版などの省略など)。その点ご了承ください。
 

自分戦略研究所、フォーラム化のお知らせ

@IT自分戦略研究所は2014年2月、@ITのフォーラムになりました。

現在ご覧いただいている記事は、既掲載記事をアーカイブ化したものです。新着記事は、 新しくなったトップページよりご覧ください。

これからも、@IT自分戦略研究所をよろしくお願いいたします。