ドラッグ&ドロップという思想(2)

言い古されていることのはずなんだけれど、自分の言葉でもういちど語り直してみたくなった。

たとえばこう考えてみよう。片方のウィンドウでは、たとえば「桜の写真」がポンと置かれている。もう片方のウィンドウには、どこかのウェブサイトが開かれている。いま、ここに写真を載せたいな、と思ったときに、どういう操作を思い浮かべるだろうか。

もしも、これが机の上の出来事で、片方が写真のファイルでもう片方が日記なら、たぶんその「写真」をよいしょと取り出して、日記に写真を糊付けするはずだ(途中でカラーコピーをとったりするかもしれないけど)。やりたいことは、「写真」を「そこに貼る」ということだから、写真を取りだして貼り付ける。それ以外のことは気にしないはずだ。

ドラッグ&ドロップは、つまりは、そういうことなのだ。もしも片方のウィンドウにある写真を、もう片方のウィンドウに貼り付けたいなら、写真をぐいっと掴んで、もう片方のウィンドウに貼り付ければいい。つまり、マウスで写真を掴んで、もう片方のウィンドウにもっていって、離せばいい。もしもいま目の前にある「デスクトップ」が本当に机の上のメタファーなのであれば、そうあるべきだ。いやそれどころか、マウスですらまどろっこしい。ここにある写真を指でぐいっと掴んで、もう一つの方に引っ張っていければそれが理想。

この「理想」を感じられるか否か、というところに、実はMacを使うということとWindowsを使うということの大きなギャップがある。いや、Macに理想があって、Windowsにない、とかいう話をしているんじゃないよ。ある操作を実現するにあたって、究極的にはどういう操作であるべきか、という視点を導入すると、Macにはこういう考え方があるんだよ、しかも大きな基礎部分にね、という話。

これに対して、Windowsは何だろう。Windowsは、もっと現実的だ。ぼくたちがプログラムを書くとき、それはもちろん扱うべきデータを対象にするんだけど、それはともかく作ったものは「道具」、つまり一つの機能として実現される。Windowsは、この機能を整理して、ユーザに道具箱のようなカタチで見せる。ぼくたちが写真を見たいなら、写真を見るための道具があって、それにファイルを食わせてあげる。ブラウザを使ってネットを見ているときに、ファイルをアップロードしたくなったら「アップロード」というボタンを使って、そこからファイルを選んであげる。やりたいことは何なのか、はともかくとして、こういうことができますよ、というカタチでそれらの道具箱はぼくたちの目の前にあらわれる。

使いにくい道具もあるけど、Microsoftという会社は、無骨な道具をそれなりの道具にすることにかけては一流だ。もしもファイルを選ぶという道具に、選ぶことにたいする不便があったら、足りないものを追加する。ファイルを選ぶときに写真が見られないことが不便だったら、じゃあそこで写真を見られるようにしよう。だから、XPからはファイルダイアログにサムネール表示がついた。Windows2kまでは存在しない機能だ。

でも、そもそもぼくらがやりたかったことはアップロードだったんだろうか。ぼくらは写真を貼り付けたいだけだったんじゃないか。なのに、なんで「アップロード」という機能を選んで、そこから写真を選んでいるんだろう。裏でどんな仕組みが動いているのか知っている人なら、まあイマドキみんな知っているけど、それでも困らない。というか、仕組みを知っているのであれば、ヘタに隠されないほうが見通しがよかったりする。けれども、それでもやっぱり、ぼくらは別にアップロードがしたいわけじゃなかったという気がするんだ。だから、Macはこう提案する。アップロードなんてやめようよ。写真一覧から、日記のページに写真をくいっともってきて、「公開」しようよ、なんてね。

この議論が単純化されたものであることは予め言っておく必要がある。Windowsだって、WordにExcelの表が貼れるし、ドラッグ&ドロップだって色々なところで使えるようになってる。ここで言ったようなことは、機能の○×比較をして現れてくるようなことではないんだ。Macにしたって、さっきいったような究極的な理想を実現しようとしたOpenDocという道具立ては、うまくいかないまま放棄されている。MacだってWindowsだって、表面的に見えているのは色々なアプリケーションソフトでしかない。理想は理想のままじゃカタチにならないし、理想に近づこうとしたら遠ざかってしまうようなものかもしれない。だから、物事はすべて、単純にはいかない。

でも、なんでいまWindowsはこういうかたちになっていて、Macは別のかたちになっているのか、を考えるには、こういう視点が必要なんだ。

「直感的」とはなんだろう(1)

ドラッグ&ドロップは、実は、計算機を知っている人にとってはあまり直感的なものではない。昔なにも知らなかったころは、なんて直感的なんだろう、とか思っていたけれど、実際にドラッグ&ドロップを使ったプログラムを書いてみてびっくりした。あたりまえといえばあたりまえなんだけど、コンピュータの中にあるものは別に実際の「モノ」じゃない。だから、それを「モノ」として扱って、あっちからこっちへ「ぐいっ」と持って行くことは、普通に考えれば出来ないことなんだ。たとえば、Safariで写真サイトを開いているとき、写真をぐいっとつかんだらどうなるだろう。Macを使ってる人はためしたことがあると思うけれど、半透明な写真がマウスの下にでてきて、あたかも写真を本当に掴んで動かしているように見えるはず。何も考えなかったらこんなふうになるはずがない。Windows上のIE6で同じことをやったら、禁止マークのマウスカーソルになっちゃう。これはこれでちゃんと意味があるんだけど、Safariでの見え方とWindows上のIEには、明確な違いがある。そして、その違いはまさに「考え方の違い」を端的に表しているものなんだ。

もひとつ具体的な例を挙げてみる。iTunesのプレイリストの中で、曲を選んで曲順を入れ替えるときを考えよう。曲を選んでぐいっとドラッグしたら、まさにその行が浮き上がって動かせるように見える。そして、別の場所に置くと、さっと入れ替わる。実に当たり前のように見える。けれど、ぜんぜん当たり前じゃないよね、仕組みを知っていたら。昔よくあったのは、どこかに「上」とか「下」というボタンがあって、そのボタンを押すとどんどんリストが入れ替わる、というもの。リストというデータの順番を入れ替えるだけなら、こっちのほうが「自然」かもしれない。でも、いまやりたいこと、を基準にするなら、それはやっぱりなんだかおかしいように思える。

いやいやそうじゃないよ、とも言える。だって、裏側で動いているのはネットワークで、mixiというウェブサイトがあってそこは写真のアップロードという機能を提供してくれてるんだから、ヘタにそれを隠さないでよ、とかね。だいたい、仕組みが隠れれば隠れるほど、なにがどうなってるのかどんどん分からなくなるかもしれない。提供されている機能がちゃんと見えやすくて、さくさく使えるものにさえなっていれば、あとは自分でやるよ、というのもリッパな一つの見識だ。そして、Windowsはこの考え方を、これ以上ないくらいちゃんと(というのは、大きな失敗をしないで、ということだ)やってきた。これこそがWindowsの価値なんだ。みんながウィンドウを使いたいなら、きっちりウィンドウを使えるようにするよ。複数のアプリもちゃんと動くようになったよ。みんながウェブサイトを見たいなら、もちろんまかせろ。みんなが音声ファイルを再生したいなら聴けるようにするし、ビデオファイルを再生したいならもちろん出来るようにする。できないことなんてなーんにもない、だから、やりたいことをどうぞ何でもやってね。

20年たって、だいたい何でも出来るようになった。でも、そもそも何がやりたかったんだっけ?うん、やりたいことが分かっているならノープロブレム。ぼくもオタクのはしくれだから、Windowsじゃなければ出来ないことがいっぱいあることは知っている。というか、うちのMacにもParallelsの上にWindowsが入っていて、仕事と、あと、まあなんだ、そういうゲームのために使っているしね!

でも、なんだか、20年前の僕が欲しかったものはなんか違うものだったような気がした。そう、まだ出始めのMacの解説本や坂村健の「TRONを創る」なんかを読んだりした頃、そして、NeXTが日本に上陸したばかりの頃雑誌記事を読んで、上陸したばかりのできたてのハードをザコン館に見に行った頃の僕が欲しかったもの。だからぼくはいまMacを使っていて、まだなんか面白いことがありうるんじゃないか、とかそんな地に足が付かないことばかりを考えている。

ドラッグ&ドロップという思想(3)

このへんで、「ドラッグ&ドロップ」を中心に据えると、操作はどんなふうに変わるのか、ということを考えてみよう。昨日のエントリでは「drugdropupload」というFirefoxの機能拡張を使えば、ということをちょっとだけ書いた。

https://addons.mozilla.org/ja/firefox/addon/2190

この機能拡張を導入すると、Firefox上のファイルアップロードフォーム、いわゆるひとつのというやつだ、そこに対して別の場所からファイルをずずっと引きずってくると、そこにファイル名を入れてくれる、というだけの機能です。まあ、ブラウザの機能拡張だから出来ることは単純だ。理想を言えば、mixi公開用のドロップボックスがあって、そこにファイルを入れたら公開される、というほうがいい。いやいや、mixiのページにそのままデータを置いたら公開される、のほうがもっといいだろうね。そんなふうに夢はひろがりんぐなんだけど、今はまあこれでpretty goodだと思おう。

さて、果たしてこれって使いやすいのだろうか?という疑問が出てくるのも当然。いままさにブラウザを開いているのだから、ファイルダイアログからすぐアップロードできるならそっちのほうがカンタンかもしれない。それに、そもそも画面は小さいのだから、いちいちドラッグ&ドロップのために別のウィンドウを開くのは面倒だ。ブラウザだけで操作が完結できるほうが分かりやすくないだろうか。

そうそう、その通り。「ブラウザ」を中心に考えれば、そうなる。それに、ドラッグ&ドロップは、「送り先」と「受け手」の二つのウィンドウが開いている必要がある。これは、一般的にあまり広くないPCディスプレイの上で行う作業としてまどろっこしいと考えるのも自然な考え方だ。ぼくは、ドラッグ&ドロップがGUIの歴史の中であまり一般化しなかった理由の一端はこのへんにあるんじゃないかと考えてたりもする。

でも、ちょっと考えを変えてみよう。写真を整理していた段階では、ぼくらは写真を整理するためのウィンドウで仕事をしていたはずだ。MacならiPhotoの上で写真を整理していたはず。だから、この段階ではiPhotoのウィンドウは開いている。一方、どこかに写真を公開したいな、と思った段階で、そのウィンドウを開いたはずだ。mixiに公開したいならブラウザでmixiを開いたはずだし、iWebで公開したいならiWebのウィンドウを開いたはず。この段階で、そもそも「送り先」と「受け手」のウィンドウは開いていると考えても問題ないはずなんだ。だから、もしもディスプレイが充分に大きければ、2つのウィンドウが開いていて、その間で「写真」をやりとりするという操作にそれほど支障はないはずだ。そう、PCのデスクトップが、本当のデスクトップくらい大きければね。出来ればコタツ机くらい大きいと理想だな。

でも、残念ながらそうではない。いくら大きくなったとはいえ、一般的なコンピュータが持っているディスプレイは、そんなに大きなものじゃない。となると、「送り手」と「受け手」の2つのウィンドウを、同時に見えるように開くのは難しい。どうせ一つの瞬間に見ているものは一つのウィンドウでしかないんだし。だったら一つのウィンドウで完結出来る方がベンリだよね。(この考え方を推し進めるとタブブラウザになるんだけど、なんでブラウザはタブだと使いやすいのに、他のモノはあまりタブにならないんだろう、とか考えるのもいい。また、実はWindowsのタスクバーはアプリケーションを全画面で使っている場合の「タブ」だよね、という気付きからは、Windowsがそもそもマルチウィンドウである必要がないOSかもしれないという考えも出てくるかもしれない)

ここで、ウィンドウを1つでやりくりするという考え方を敢えてとらないで、2つ開いたウィンドウをどう使いやすくするか、という考え方をとると、どんなデザインになるだろう。ぼくはそれこそが「expose」なんじゃないかと思う。

マルチウィンドウを生き返らせる方法

ぼくたちがPCの上で操作しているものが「アプリケーション」であるのならば、マルチウィンドウである必要はない。けれど、ぼくらが操作しているものが「データ」であって、それが色々なウィンドウの間でやりとりされる「もの」であるならば、それぞれに応じたウィンドウの間を渡り歩く必要がある。そうすると、必然的にウィンドウは幾つも開かれてしまう。でも、狭い画面で複数のウィンドウが開かれても、かえって見にくくなってしまう。この問題を解決するためのものとして「expose」はぼくらの前に現れた。

ここを読んでる人がexposeを知らないとは思えないけれど、一応解説しておくと、exposeとはMacOSX10.3から導入された、複数のウィンドウを一覧形式で見やすくしてくれるための仕組みだ。

http://www.apple.com/jp/macosx/features/expose/

1クリックで(もしくは、1ボタンで。もしくは、マウスの動きで)、ウィンドウが一望できるようになる。はたまた、デスクトップが見えるようになる。恐ろしく実用的で、なんといってもカッコイイ。シビレル。ラブ。

でも、よく考えると、複数のウィンドウの間で何かをやりとりしない限り、別に絶対必要な機能というわけでもないんだよね。Windowsでは、alt-tabでアプリケーションを切り替えることができる。もしもアプリケーションを切り替えたいだけなら、ウィンドウが見える必要はない。別に、ウィンドウと別のウィンドウの間に相関関係があるわけでもないんだから。

でも、もしも一つのウィンドウから別のウィンドウにデータをやりとりしたいんだったら、どうだろう。いま、iPhotoで写真をアップロードしたいなと思い写真をつかんだ時に、目的とするウィンドウを探したいなら。そんなとき、exposeは素晴らしい機能になる。写真をつかんでexposeボタンを押そう。目的のウィンドウはすぐにわかる。もしMacBookの日本語キーボードを使っているなら、「Fn」キーにexposeの全ウィンドウを割り当てれば、ドラッグしながら片手でさくさく目的のウィンドウが見つけられる。もしくは、画面の隅にexposeを割り当てれば、すっとマウスを画面の隅にもっていきさえすれば目的のウィンドウはすぐ見つかる。慣れればとっても楽しいものだ。ここでは一つの操作だけに限定して説明したけれど、exposeには他にも、デスクトップを一時的な作業場所と考えたときに最大限に有効に働く「デスクトップを一時的に見せる」という機能もある。Windowsにも「ウィンドウを全部消してデスクトップを表示」というボタンがタスクバーにあるんだけど、これこそ、「同じような機能が、些細な違いで全く別の見え方をしてしまう」といういい例になっている。気になる人は、「デスクトップを表示」してから、別のウィンドウを開いてみてほしい。それは果たして僕らが望んでいた機能だろうか。

とかなんとかグダグダと書いてきたけど、ここでもやっぱり、一つの原理原則から様々な機能を理解できるということが分かる。Macのこれらの機能は、「やりたいこと」に向かって整列しているんだ。それを理解しなければ、単なる見た目が変わっただけの、よくわかんない機能が山ほどついている、Windowsでは出来たことが出来ないOS、にしか見えなくて当然なんだよね。

「直感的」とはなんだろう(2)

さて、いままでの部分では、「ドラッグ&ドロップ」を、「何処かから別の何処かに動かす」ということに対する直感的な操作だ、ということを前提にしてきた。しかし、これは本当のことなんだろうか?ここに、一番むずかしい問題が存在しているのだった。

この一連のエントリの最初で、Windowsにもドラッグ&ドロップは存在している、と書いた。でも、それは使いにくい、とも書いた。なぜかというと、Windowsにおけるドラッグ&ドロップは「一貫していない」からだ。つまり、同じようなことをやっているのに、別のことになってしまう、ということが起きてしまう。たしかに、見えているものが「モノ」なのであれば、ドラッグ&ドロップは直感的に見える(実は、マウスにおいてボタンを押したまま動かすという操作はあまりカンタンに習得できるものではないので、それほど直感的なものではないんだけど)。だけど、その「直感的な操作」というものは、行った操作に対して、実際に起きることが予測できなければ、とってもとってもストレスフルなものになってしまう。

なぜかといえば単純で、ぼくたちは同じことをすれば同じ結果が生まれると思っているからだ。ぼくたちが世界に対して何らかの働きかけをするとき、ぼくたちは常に、意識的にであれ無意識的にであれ、なにが起こるかを予測している。やったことと起こったことを対比しながら、物事を進めている。だから、やろうとしたことに対して、予測に反する動作をすることが、一番のストレス要素なんだ。これは、ある環境に慣れた人が、別の環境でストレスを感じてしまうのと全く同じことだ。

それがなんで、ドラッグ&ドロップの話につながるんだろうか。それは、この操作がとっても「汎用的」であるからなんだ。相手が「写真」だろうが「音楽」だろうが「文章」だろうが「ビデオ」だろうが、とにかく何がどうだろうが、「つかんで」「はなす」ことは出来るように思える。だから、「つかんで」「はなす」ことで何が起きるか、その操作体系に慣れてしまったら、一つの予想が出来上がってしまう。でも、コンピュータの上で実際に起こっていることはもっと複雑で、「つかんだときになにがおこるか」「はなしたときになにがおこるか」は、プログラムが決めている。そして、コンピュータの上には、あまりに多くの異なるデータがあって、送り元になるアプリケーションも、受け手になるアプリケーションもいっぱいある。だから、あるものを別のところに送るためには、とっても大変な努力が必要だ。もしも、自分の直感に反する、つまりその環境においての期待(約束事)を破るようなアプリケーションがあったら、この仕組みはうまくいかない。

だから、ドラッグ&ドロップという理想を実現するためには、送り元と受け手が、使う人の直感を実現するための、水面下のあまり直感的ではない努力をしないといけない。そして、いま現実にあるOSでは、MacでもWinでも、充分といえるレベルには至ってないように思う。

また、ドラッグ&ドロップは、送り元と受け手の間でどういう操作が行われるのかは、送り元と受け手のカンケイにかかっている。もしも受け手がネットワークの向こう側だったらその操作は「ネットワークの転送」になるだろうし、受け手が日記ページなら「貼り付け」に、受け手がゴミ箱なら「捨てる」という動作になる。よくできたアプリケーションならば、「ドラッグ&ドロップ」に対応した自然な動作が何になるのかは、考え抜かれているはずだ。なんだけれど、実は、なにが「自然」なのかはあまり直感的ではなくて、もはや作り手のセンスにかかっていたりする。このあたりも、ちゃんとやろうとすると、単に機能を実現するというだけではない、インタフェースに関する深い理解と直感が必要になる。大昔は、「果たしてファイルをゴミ箱に捨てるのはわかるけど、なんでメディア(その頃はフロッピーディスク)をゴミ箱に捨てるとejectなんだろう?直感的じゃないじゃん!」なんて問いだってあったんだ。いまのMacは、メディアを選んでドラッグすると、ゴミ箱は自動的に「イジェクト」のアイコンに変わる。ちゃんとそこにも歴史があるんだね。

これが、ドラッグ&ドロップの難しさの半分。

「直感的」とはなんだろう(3)

もう半分は、コンピュータの中のデータは、必ずしも「モノ」として表現できるものばかりじゃない、ということなんだよね。正確に表現すると、「モノ」なんだけど、色々なカタチをとれる、というほうが正しいかな。

たとえば、本棚に本が並んでいる。これは、もうモノでしかない。ぼくたちが本を手にして、読んで、また本棚に戻す。本が増えたらどんどんわかりにくくなってしまうから、そしたら整理する。読む。また散らかるから整理する。単純単純。

でも、コンピュータの中では、こんなに単純ではありえない。またiTunesを例に出してみよう。iTunesの中には「曲」がいっぱいある。でも、その「曲」は、直接的に「モノ」を表しているわけじゃない。もちろん裏では「ファイル」という実体があるし、「ライブラリ」の中にある限りにおいては「モノ」とも言えるんだけど、実際は「モノ」のラベルみたいなもんだ。

これがどういう時に問題になるのかというと、たとえば、プレイリストを作ったとき。プレイリストの中にはいっぱいの曲がある。でも、プレイリストから「曲」を削除したからといって、モノまで消えるわけじゃない。また、プレイリストを作ったからといって「モノ」の場所が変わるわけでもない。あくまでも、整理のためのノートを書いたり消したりしているだけだ。それに「スマートプレイリスト」を使うともっと複雑なことになる。「スマートプレイリスト」は、「プレイリスト」というモノですらない。それは、「最近聴いた曲」とか「いままで1回も聴いたことがない曲」という条件に過ぎない。だから、「スマートプレイリスト」に対して曲を追加したり削除したり、ということは、「モノ」みたいには出来ない。

なんだか複雑になってきたけど、なにが言いたいかというと、コンピュータってのは自由だってことなんだよね。「モノ」はあるんだけど、モノを指し示すような「ラベル」は、現実とは違って殆ど無限のように作れるし、それぞれ見え方を変えることだって自由だ。これが、コンピュータにおけるすごく素晴らしい、とてつもなく強力な点であることは間違いがない。

けれどもその反面、コンピュータの中にあるものを「モノ」として扱うやり方とは、相容れない……とまではいわないけど、相容れにくい要素でもあって、ぼくたちの「直感」に、特に「ドラッグ&ドロップ」のように「モノ」として扱う直感に反してしまう部分もある。MacOSXが生まれるにあたって、昔のMacOSを使っていた人から一番反論というか反感が出ていた所は、ぼくはここだと思う。MacOSXは、出自はNeXTのOSで、ベースはUNIXだ。だから、NeXTが持っていたとっても強力なデザインを、つまり自由な部分を受け継いでいる。それは、デスクトップメタファという「モノ」に基づく考え方とは容易になじみにくい部分を持っていて、いまもまだ発展途上なんだと思う。