Twitter detects URL incorrectly :-(
Twitter をしばらく利用していて思ったのは,URL の扱いがナニであるということだ.Twitter は,文字列中の URL らしき文字列を自動的にリンクしてくれるのだが,どうも具合が悪い.
典型的なのが "(http://www.yahoo.co.jp)" という,URL を丸括弧で囲んだもので,Twitter 上では "http://www.yahoo.co.jp" がリンクとして扱われるのだが,丸括弧 "(", ")" は URL の一部として許されている文字なので,本来は閉じ括弧を含めた "http://www.yahoo.co.jp)" がリンクとして扱われるべきなのだが,よく見られる「発言内容 (補足 URL)」という形式は日本語 (?) としては自然で,かつ Twitter が書き手の意図通りにリンクしてしまうのでかなり氾濫している.
また,Google Maps の 等の,カンマ (",") が含まれる URL を正しく認識しないため,カンマ直前までが tinyurl に渡されて "http://maps.google.co.jp/maps?f=q&q=+38.694465,+139.538206" という入力が "http://tinyurl.com/26obzv,+139.538206" というリンクになってしまう.おや,前述の理屈で言えば "http://tinyurl.com/26obzv" までがリンクとして扱われるべきなのだが,どうやら path に含まれるカンマは URL の一部として扱われるようで,
- "http://maps.google.co.jp/maps?f=q&q=+38.694465,+139.538206" が渡された
- query 部のカンマ直前まで ("http://maps.google.co.jp/maps?f=q&q=+38.694465") が URL として認識され,tinyurl 圧縮される
- 結果として "http://tinyurl.com/26obzv,+139.538206" という文字列が生成されるが,ここに現れるカンマは path の一部として解釈されるので,再 parse されて結果として全体が URL として認識され,リンクされる
という仕組みになっているのだと思う.
さて,これらの挙動の何が問題なのか.前者は「丸括弧が含まれる URL が正しく認識されない」,「API を利用した別アプリケーションが (正しく) URL をリンクする際に投稿者の意図通りにリンクされない」といった問題がある.また,後者は Twitter 上でも投稿者の意図通りに扱われていないし,Twitter 以外のアプリケーションも正しく解釈できない.
よくよく考えると,カンマ記号は reserved な記号ので Google Maps の URL こそ Google の意図通りに扱われない可能性があるのではないか? と思ったが,よく分からない :-(
何より,API ベースのアプリケーションは正しく URL を検出・リンクしているのに,ユーザから「間違っている!! (Twitter と挙動が違う)」と言われるのは心苦しい.とはいえ,この事象に対してでどうやって「人に優しく自分に厳しく」するのか? と問われると返答に窮する.とりあえず Twitter にメールしてみた.
ちなみに,どちらが悪いのか分からないのだが,Twitter の投稿を Google Talk で受信した際に,"http://www.yahoo.co.jp[tag]" のようにブラケット記号を含んだ文字列が Twitter 側では "http://www.yahoo.co.jp" を URL として認識するのに Google Talk では "http://www.yahoo.cojp[tag" が URL として認識される.ううむ….
で,結論というか,conservative な人は RFC 2396 で (逆説的に) 推奨されていると読み取れる <http://www.yahoo.co.jp> や "http://www.yahoo.co.jp" という表記を用いるのが良いのではないか,と.
果たして海外で URL を丸括弧で囲む習慣があるのか不明だが,まぁ少なくとも自分にとっても合理的に思えるし,かつてのチルダ記号のように数の力で de facto にしてしまうのもアリかなぁとは思う (なので,基本的に conservative な自分としては微妙に歯切れが悪い).
それにしても,Vox ですらこのエントリ中の URL を意図通りに認識してくれなかったりして,URL 認識は各アプリケーションの都合によって随分と異なるので利用者は振り回される一方だなぁと改めて感じる.