webの未来なんて知ったこっちゃないけれど。
多分僕ごときが考えるまでもなく、誰かが既に考えているはずのことだと思います。が、なんか思い浮んだのでメモ的に。
きっかけは出張Shibuya.js24の「INSIDE Gecko」だったと思う。3Dを利用した無駄に綺麗なプレゼンの中でz-index要素に絡む説明のとき、ふと思ったのだ。
「そういえば、HTMLって平面だよなぁ」と。
HTMLの3D表示
gecko3.0になるかIE10になるかは知らないけれど、未来のリッチなHTMLレンダリングは3Dになると思うのだ。
だって映画とかでも未来のコンピュータはモニタの奥に向かって突き進むイメージではないか。今は主にユーザーインターフェースデバイスの部分で座礁している印象だが、3Dデスクトップの分野でそのあたりの研究が進み解消してこれば、次は必ずHTMLの3Dレンダリングだ。
何故なら、そうするだけの利点がある。
3D表示で享受できる利点とは
例えば「はてなキーワード」。こいつは3D化された場合、本体ページの後ろに位置することになるだろう。本体を読みながら、ちょいと視点を動かしてキーワードを見ることが出来る。本体を読むという思考の流れをあまり阻害せずにキーワードを読めるようになるだろう。
wikipediaなんかは永遠に続くツリーのような構成になるだろうか。どこまでもどこまでも情報探して深く潜ってゆく、そんな映画の中のイメージが現実になる、かもしれない。
そしてgoogleは検索結果ページを深さ0として、深さ1に結果ページ本体がずらりと並ぶ。自分にとって有用なページを今よりもっと簡単に探すことが出来るはずだ。
これらをやるにはリンク先のHTMLを先読みする必要が出てくる。転送量を格段に上げ、サーバーへの負荷は極端に上昇するだろう。が「imgタグは害悪」なんて言われた危機だって乗り越えたのだから、きっとなんとかなるはずだ。
軽く実装を考えてみると…
とりあえず、単純にa hrefの先を自身のページの裏にレンダリングするって実装を考えてみる。と、意外にうまくいきそうな気がする。wikipediaやはてなキーワードも大丈夫そう。
しかし、googleを考えたときに詰まった。検索結果の本体ページは深さ1に並ぶだろう。が、しかし、「次へ」のリンク先も深さ1になってしまう。こいつは感覚的に深さ0で平面的に並んでいて欲しいところだ。
他にもはてなダイアリーだってそうだし、ニュースサイトの特集記事なんかでも「次へ」というリンクはわりと多く出てくる。これらは全て平面でなければ駄目だ。
どうやって区別するか。
便宜上、HTMLの3Dレンダリングを考えたときに同一平面にレンダリングしたい性質のリンクを"2Dリンク"、深い階層へとレンダリングしたいリンクを"3Dリンク"と呼ぶことにする。
OperaにはFast Forword機能というものがあり、"2Dリンク"はスペース連打で読み進めることが出来る。これはどうやって実装しているかというと、fastforward.iniというファイルに"2Dリンク"で使われがちな文字列(「次へ」や「next」など)が登録されており、リンクされた文字がそれと一致したときに"2Dリンク"と判断している。
うまくハマれば非常に便利だが、ハマらないときも非常に多い。「次へ」という文字が画像になっていたりすると涙が止まらなくなる。
というか、実装としてあまりにも、という気がする。変に人力的だし、不確実だ。
そもそも「次へ」と書くのはHTML記述者なのだから、このあたりは記述者が指定できなければならないのではないか。文脈を読めないコンピュータに変わって文章にタグで意味付けするのがHTMLだったはずなのに、リンクにされた文字を元にコンピュータが判断してどうするのだ。
HTMLの不備じゃないの?
つまり"aタグが汎用的すぎる"んじゃないかと思うのだ。
で、ふと思い出すのがtarget="_blank"論争。これはそもそも"2Dリンク"と"3Dリンク"を区別したいという製作者の要求ではなかったか。ここに「新窓で無理矢理開く」という機能が付いてしまうからこそ、閲覧者の自由だのが変に絡んでしまうのではないか。
結論
HTMLを3Dレンダリングするということになったとき、今のaタグは非常に困る。
target="_blank"論争を見てもわかるように、aタグがあまりに万能であるという歪みは現状でも出はじめている。
なら今のうちにこの部分をなんとかしたほうがいいんじゃないか、というのが結論だ。
ま、最初に書いたとおり、僕はwebの未来なんて知ったことじゃないんですけどね。っていうかいまさらおそい!ですよね、target="_blank"。