たまりんが既に死んでいて(死んではないけど…)時代に取り残され度を実感する日々である

プログラムカウンタがexeにもdllにも入っていないのを見て、FirefoxでもJavaScriptJITがとうの昔に入っているというのを知る。
なんかAdobeが提供したというあたりまでは知ってたんだが、とっくにリリースされて使われてるのを知らなかった。


もはや時代に乗り遅れすぎてる感があるのだが、ざっと見てまわる。まとめて見るのはこれがわかりやすいか。
http://journal.mycom.co.jp/news/2010/03/10/038/index.html
2種類のJITエンジンを載せるというのは世の中の複雑さを感じさせるね…

(時代に乗り遅れるメリットとして、「あとで勉強したほうがよくまとまった情報が出てきてるので時間の節約になる」というのがあると思う。節約した時間で何をやってるかが重要だが。僕はこの二年間何してたっけ…)


ここで、気になるのは、JavaScriptの実行時間の差がどの程度体感に影響してるかなんだが、どうなんだろうね。

今タスクマネージャを起動してCPU時間見ながらたまりんたまらんねとか言ってたのだが、あんまりCPUがボトルネックになっているという感じじゃないんだよな。ネットワークのほうが問題にしか見えない。まあ、モバイルポイントでやってるので、光とかだと変わるんかもしれんが。いや、でも、レイテンシてそんな変わらんような。まあ、ネット中毒世代の間ではネットワークのレイテンシが我慢できなくて、サーバの近くまで移動するというのが流行っていないらしいが、まあ、そいうのがあったとして、そういうのまでやれば、JavaScriptがネックに…いや、ネットワークが無くなっても、レンダリングとかレイアウトとかのと比べて、JavaScriptがネックになるんか?という感じで。
(まあ、未来まで見据えると、JavaScriptマシン語並に速くなればWebアプリ屋のアイデアを解放するとかありそうだが)


さて、このように考えたときに、ボトルネックマニアとしては、「ユーザがイラってした時に、何がネックなのか知りたい」という思いが生じてくる。

このボトルネックは、UIのデザインから、ネットワークレイテンシ、命令数など全てを含めたトータルなボトルネックを意味する。単にどのループがボトルネックとかいうのではない。


これを実現する方法を考えよう。

  • デスクトップに「イラッ」ボタンを置く
  • ユーザが「イラッ」ってしたらそのボタンを押す
  • ボタンが押されたら、押された時のスレッドの止まってる位置のスナップショットを取る

と、いうようにする。で、この情報を集める。マイクロソフトが。そうすると、マイクロソフト的には、「ご協力ありがとうございました。情報は安全に送信されます。続けるにはOKを、中断するにはキャンセルをクリックしてください」というダイアログが出ることになって、「このダイアログが一番イラっとするんですが…」。とのコメントをいただくことになる。


「イラっ」ボタンではなくて、「プチプチボタン」みたいなのでもいいかもしれない。クリックすると何かがプチプチする。で、ユーザーがどうする時にプチプチするかを見て、そのイライラ感を知る、みたいなの。
プチプチする対象を変えることで精神状態を見ることができるかもしれない。梱包材だと、平凡な思考の持ち主だとか、蟻だと、日々働くだけの自分に嫌気が指してるとか、まあ、ボトルネックとは関係無い。



ユーザがイラっとするのはどういう時だろうか。まずはイラってしない状況を考える。
まずはコンピュータが入力を待っている状態。例えばコンピュータが"login: "と出しているときにイラっとすることはあるだろうか。まあ、ログインIDを忘れてるとクソっていう気分にはなるが、そこでコンピュータが悪いという人はいるまい。

これは、実際には入力を待っている必要はなくて、実際に入力が行われる直前までは、単にlogin:と出ているだけでよい。Apple製品の中にはこの点を利用して、起動時にはビットマップを表示するみたいなセコいことをやっているものがある。
よーするに、重要なことは、「コンピュータはあなたの入力を待っています。」という意思表示をすれば大丈夫。逆に言うと、コンピュータが入力可能だという意思表示をしない状態がイラっとする状態だということがわかる。

と、いうことが、わかったが、まあ、そういうのは個々のアプリケーションの話になっていくので、あまり僕が考察する余地が無いのだった。


何が言いたいかというと、イラっとしないために、CPUやら末端プログラムベンチマークの高速化ができることは何だろうか?という話である。マイクロソフト的に言うと、「ユーザーエクスペリエンスを向上させるにはどうすればよいか」という話であって、「ユーザーエクスペリエンスっていう表現がイラっとするんですが…」という話だ。


真のボトルネックを見つけないといけない。イラっとするときのアプリケーションのボトルネックこそが真のボトルネックであって、それ以外は未来のデザイナのアイデアを解放する以上のものではない。しかし、それを発見する方法が無くて、そもそも今僕はAtomのマシン使っているのだが、まあ、これでもあんまりCPUネックだと感じることが無くて、世の中の大半のCPUがこれより速いということを考えると、まあ、つまり、僕が一番詰んでいる点は何かと聞かれたらCPUが速くて困ってるんですというところである。