WWNトップ » プログラマー経営学

プログラマー経営学

プログラマー経営学

ショートカットキーはマウスより遅い

2015.03.22

d8b46658f0bde18ea78699f4fe881e51.png


 CTRL+Xでカット、CTRL+Vでペースト。
 ショートカットキーの使い方を覚えると、パソコンの達人になったような気分になりますよね。

 しかし、実際にはショートカットキーを使用すると、マウスでメニューから「編集」「ペースト」を選ぶよりも平均2秒も遅いのです。


 「そんなバカな」


 と思いますよね。
 しかし、これはTogことブルース・トグナッツィーニがAppleでMacintoshの開発を担当した際に行った膨大な実験の結果、解ったことなのだそうです。


 これはTogのWebページでも詳しく紹介されています。

 しかし2秒とはとても信じられません。
 むしろ逆のようにさえ感じます。


 しかしTogの主張によれば、我々ユーザはショートカットキーを選ぶのに2秒かかっているものの、ショートカットにたどり着くまでの時間を喪失している、つまりプチ記憶喪失状態になっているというのです。

 こんな不思議な話が、慶應義塾大学の増井俊之先生の新書、スマホに満足してますか?~ユーザインタフェースの心理学~ (光文社新書)に書かれています。


 増井先生自身も、ソニーCSLで携帯電話の予測変換を発明し、日本のほぼ全ての携帯電話の入力方法として定着したり、AppleでiPhoneの最初のOS開発を担当したりと、ユーザーインターフェースの最先端で戦ってきた方なので、本書は非常に読みどころが多く、特に手品とユーザーインターフェースの相似性について指摘しているここらへんの章なんかはユーザーインタフェースを作る仕事や企画の人は必読と言ってもいい内容です。


 ほかにもTogは、Macintoshでテキストエディタを実装した際に、テキストをスクロールするときに1行ずつ更新して見せていたのですが、あまりにも遅いと評判が悪いため、1ドットずつスクロールするようにプログラムを書き換えたという経験を語っています。

 当然、たとえばフォントの縦幅が16ピクセルならば、一行をスクロールするための処理速度は16倍も遅くなるはずですが、こちらのほうが「速く見える」ということでこの実装が採用されたといいます。


 筆者の個人的な経験でも、こうした「実際には処理速度が落ちているのに速く感じる」効果というのをなんどか体験したことがあります。


 あるとき、筆者がまだ会社を立ち上げたばかりの頃の話です。
 サラリーマン時代の知人から「ソフト開発をお願いしたい」と依頼を受けました。

 当時は社員ゼロ、プログラマーは筆者だけ、という状態でしたので、依頼された場所に出向きました。
 依頼は一週間以内にテレビに接続するセットトップボックス用のデモプログラムを書いてほしい、というものでした。高級ホテルで使用するためのもので、演出を派手にしたい、という依頼でした。

 与えられたセットトップボックスのCPUは非力で、メモリも申し訳程度にしかありませんでした。
 筆者は仕様書に書かれた通りの画面遷移を実装しましたが、そのままではとても遅くて快適とは程遠いものでした。

 仕様がセットトップボックスのスペックを無視して書かれているので、その通りに作るとどうにもならないのです。

 とりあえず見せるとクライアントは顔をしかめました。

 「もっと動作を速くしてくれ」

 でも動作は速くできません。

 なにしろそもそもCPUがその時代から考えたら化石と言ってもいいほど古いもので、高度な処理をするのに不可欠なメモリーも、仕様書にあるような美しい画像を読み込ませたらすぐにいっぱいになってしまいます。JPEGを展開するのにすら数秒かかるような機械です。


 「仕様の通りに作るとこうなってしまうんです。仕様を変えてもいいですか?」


 と聞くと


 「それはニューヨークの有名なデザイン事務所に何千万も払って作らせた高級品だから、仕様変更は認められない」


 と、頑として首を縦に振りません。
 しかしその仕様のせいで遅いわけです。
 
 これは八方塞がりのようでした。
 ちなみにニューヨークのデザイン事務所の「仕様」は、ムービーで納品されていました。
 動きがわかるのはありがたいですが、高性能なマシンでも何時間もかけてレンダリングしたものを、シーラカンスのように進化の袋小路に達している非力なCPUとメモリのマシンでリアルタイムに処理するのはほとんど絶望的です。


 そこで筆者は一考して、「仕様は削りません。そのわかりに仕様を付け足してもいいですか?」と聞きました。

 「なんのために?」

 「速くするためです」

 と言うと、それならやってみろ、ということになりました。


 そこで筆者はまず、背景を常時ゆっくりとスクロールさせるようにしました。
 幸い背景はスクロールさせやすい水のテクスチャ素材だったので、横方向に無限スクロールさせました。
 
 さらに、操作してから画面が1秒以上停止しがちだったので、操作されたら即座に音が鳴るようにしました。
 音が鳴り、操作すると画面の一部がすぐに変化します。

 次に、プログレスバーを表示しました。

 こうした仕様追加によって、もともと非力なマシンにさらに多くの処理をさせることになった結果、全体の速度はそれまでより20%遅くなりました。


 しかしこれを見たクライアントの社員の方々は目を丸くしました。

 「速くなってる!!できるんじゃないか!」

 できません。
 実際には筆者は魔法をかけただけです。「速く見せている」だけで、速くなったわけではないのです。

 ひとつひとつのことについて説明すると、全体の速度は遅くなっていることに納得はしてくれたものの、体感的には速くなっているのでこれで行こう、ということになり、無事納品できました。

 もうひとつ、iPhoneがまだ市場にでたばかりの頃です。
 やたらクライアントから「iPhoneのように速くしてくれ」と依頼されたことがありました。


 しかし当時のiPhoneは今と違ってCPUがぜんぜん速くなかったので、どんなに手を抜いて作ってもiPhoneより遅いプログラムは書けっこありませんでした。理論上は。

 しかし確かに二つを並べてみると、iPhoneの方が「速く見える」のです。
 そこで私たちは、高速度カメラを使って、1/100秒単位で撮影して両者を比較してみることにしました。

 すると面白いことがわかりました。

 確かに、CPUや画面の更新といったものについてはiPhoneは遅いのです。
 遅すぎるといってもいいくらい遅くなっていました。

 しかしその遅さは、「必要な遅さ」だったのです。
 それに対して、我々のソフトは「速すぎた」のです。速すぎることによって遅く見えていたのでした。


 わかりやすく説明しましょう。

 iPhoneの画面の動きは、慣性がついています。
 慣性とは、モノはゆっくり動き始め、ゆっくり動きが止まる、というものです。
 物理学的特性といっても構いません。

 iPhoneの上で指を滑らせると、画面は少し遅れて指に追いつこうとします。
 そして指を止めると、画面はゆっくりと追いついてきます。

 これに対して、普通のプログラミングをすると、指が動くと、動いた位置にいきなり画面を動かしてしまいます。
 ユーザがみると短距離ワープしたように見えるはずです。

 これは滑らかさを損ない、ぎこちない動きになってしまいます。
 そこで我々はiPhoneの動きをコマ単位で分析し、同じ程度にわざと「遅らせて」表示するようにしました。
 すると、クライアントは「速くなった」といって喜びましたが、私たちは自分たちが発見したことをひとつひとつ丁寧に説明するのでした。


 これは本当に、手品師が手品のタネを説明するようなもので、非常に間抜けな気がするのですが、速くしたわけではないのに「速くなった」と喜ぶクライアントに種明かしをするのはいつも苦労します。そういうものだと仮に解っていただけたとしても、なにかだましているような気がするからです。
 
 この話は、Togの瞬間的記憶喪失の話とも似ていると感じます。

 人間は常にあらゆる「モノ」の動きを予測しながら見ており、その予測との「ズレ」を違和感と感じるようなのです。

 しかしそれにしても、なぜショートカットキーを使うと記憶喪失になるのでしょうか。
 また、逆になぜ我々はメニューから選ぶのを「遅い」と感じるのでしょうか。


 その仕組を筆者なりに解釈すると、ユーザーインターフェースによって「時間の流れ方が異なる」ということなのではないかと思います。


 たとえば、人間は意識するより先に身体を動かす電気信号が発生していることはよく知られています。
 「サッカーボールを蹴ろう」と意識するよりも早く脳から脚に向けて「サッカーボールを蹴れ」という命令が発行されているのです。


 ただし実際に脚が動いてボールが蹴られるのは意識してから0.2秒後です。脳から脚に向けて命令が送られて実際に脚が動き始めるまでに0.5秒かかっていますから、意識するより0.3秒早く命令が出てることになります。


 この命令は「運動準備電位」と呼ばれ、100年近く前から無数の実験で確かめられてきている厳然たる事実です。

 意識は受動的なものであり、身体的なすべての反応は意識より先に行われ、意識は起きた事実を追認する形で認識するだけです。

 つまり意識は一種の情報の圧縮装置と考えることができるのではないでしょうか。
 人間が瞬間的に受け取る情報は膨大です。それは視覚や聴覚のみならず触覚、痛覚など、無数の情報が常に脳に入力されています。そのすべてを記録しようとすれば、脳の容量がいくらあっても足りません。

 そこで意識では起きた一連の出来事を単純化して記憶容量を節約する、という役割があると考えられます。


 すると人間は、意識によって時間間隔を決められているとも言えます。

 たとえば退屈な時間というのを考えてみましょう。
 授業や会議に身が入らないような時です。


 話されてる内容に興味が抱けず、すぐにそこを飛び出して遊びに行きたい気持ちでウズウズしているとします。
 自由を奪われた状態になると人はひどく不安になったり苛立ちを覚えます。

 そういう時は余計な考えばかりが頭に浮かんで時間が経つのがとても遅く感じられます。
 反対に、議論に集中していると、あっという間に時間が経過します。


 また、例えば目的もなしに散歩に出かけるとしましょう。
 特に何も新しいことが起きてなくても、目の前に刺激的なものがなくても、自由なので清々しい気分になったり、時間が経つのが早く感じられたりします。


 このように意識に入力されるものに応じて人間は時間間隔が変わります。
 

 マウスでメニューを選択するというのは、自由を奪われた状態と言えます。
 マウスカーソルで正確に「編集」という部分を狙い、クリックし、それから「ペースト」という文字を探して、それをまた狙って、クリックしなければなりません。たかがペーストするのに意識することが多すぎるのです。


 それに対してショートカットキーは、「ペーストする」という意識に対してCTRL+Vを押すだけですから、その間にたとえどれだけの時間が経過していようとも、ペーストする瞬間に意識すべきことは全くありません。だから意識への負担が少なく、それがショートカットキーが速く感じる理由なのかもしれません。


 ユーザーインターフェースを研究すると言うことは、人間の意識を研究することとほぼイコールです。
 人間にはまだまだ解らない部分が沢山あり、これからも様々なユーザーインターフェースが生まれ、私たちを手品のように華麗なトリックで気持ちよく騙してくれるのかもしれません。


清水 亮(しみず・りょう)
1976年新潟県長岡市うまれ。6歳の頃からプログラミングを始め、16歳で3DCGライブラリを開発、以後、リアルタイム3DCG技術者としてのキャリアを歩むが、21歳より米MicrosoftにてDirectXの仕事に携わった後、99年、ドワンゴで携帯電話事業を立上げる。'03年より独立し、現職。'05年独立行政法人IPAより天才プログラマーとして認定される。

関連タグ

バックナンバー記事一覧