勝手にハイパーリンクを作成するのはやめた方がいいのではないか

勝手にハイパーリンク

Outlookを使用しているとよく出会う現象に、文章中にURI記載すると勝手にハイパーリンクになってしまうっていうのがある。多分この現象は設定でキャンセルすることはできるのだろうけれど*1、デフォルトでONになっていることをやめてほしいのだ。
なんせURI表記には終端文字が定義されていないので、絶対に意図したリンクにはならないのだ。特に日本語などの全角文字が混じった場合、ひどいことになる。

よくある自動変換

MSさんよ、お節介機能作るなら、もうちょっとちゃんとお節介しろよと思うのだった。おそらく、英語と日本語の最大の違いである、「日本語は、単語と単語をデリミタで分けない*2」ことが、このような変な動作をする原因だろう。

んでもって、このような動作はOutlookにかぎったものではなく、WordやExcelでも同様な動作をする。するのだけれど、なんだかんだOutlookが特にひどいのだ。Outlookは「メール編集完了時には、ただのURI表記なのに、メール送信ボタンを押下すると勝手にURIハイパーリンクになる」という機能を有しており(笑)、当然URI末尾に日本語が混じっていると、誤ったリンク先を生成し、そのままメール送信する。どこの馬鹿がこんな仕様OKするんだと思うのであった。*3

まあそれはそれとして、そもそもURI記載するとリンクになるという機能自体の弊害と思うことがあって、それはリンク表記と実際のリンク先が同一になるという経験をユーザにさせることだ。

アンカータグとは

ハイパーリンクを実現するために、HTMLではアンカータグ(Aタグ)っていうのが定義されている。アンカータグを使用するとほかのURIにリンクすることができる。このとき「ユーザに見せる文字列」と「実際のURI」を指定可能だ。基本的には文中の文字列を別文書へのリンクにするようなことを想定しており、おそらく「用語」と「用語の解説ページ」みたいなのが、一般的な使い方だ。たとえば、ユーザに見せる文字列「ライフライン」と、その解説ページとして「wikipediaライフライン項目のURI」をアンカータグにすると

 <A HREF=https://ja.wikipedia.org/wiki/%E3%83%A9%E3%82%A4%E3%83%95%E3%83%A9%E3%82%A4%E3%83%B3>ライフライン</A>

こんな感じになる。HREF=の後に記載されるのがURIで、</A>の前に記載されるのが、ユーザに見せる文字列だ。

実際にHTML記載すると、↓こんな感じにハイパーリンク表示される。
ライフライン

アンカータグの表示文字列をURIにすると

MS製品の「URIを記載すると勝手にハイパーリンクになる機能」は、日本語が混じるとでたらめな判定をすることもさることながら、URIと表記を同一にすることが「普通のことである」という誤解を与える。表記URIとリンクURIは同じという誤解。つまり、悪意あるハイパーリンク*4に引っかかる人を増やしてしまうのだ。

・ユーザの理解(リンク表記とリンク先は同一である)

 <A HREF=https://google.co.jp>https://google.co.jp</A>

https://google.co.jp


・悪意あるリンク(リンク表記はGoogleだがリンク先はyahoo)

 <A HREF=https://www.yahoo.co.jp/>https://google.co.jp</A>

https://google.co.jp

URIハイパーリンクに自動変換しないほうが良い

URIハイパーリンクに自動変換する環境に慣れると、ハイパーリンクの表記がURIなら、そのURIはリンク先URIであると誤解する人が発生する。それは、「安全なURIを表記している、危険なリンク先」に気づけないことを意味する。URIハイパーリンク自動変換機能とは、アンカータグのそもそもの動作を誤解する人を量産する機能なのだ。

勝手にアンカータグを分析する機能がブラウザやメーラーに欲しい

というかですね、メーラーやブラウザは、アンカータグの表記が「URI」っぽかったら、実際のリンク先URIと比較して、同一ドメインなのか判断し、ドメインが異なったら警告する機能くらいつけてもいいんじゃないだろうか。

とか思ったりした。

まあ、表記のURIっぽさを回避するような表記された場合、どうすりゃいいかという問題があるんだろうけど。

*1:テキストがハイパーリンクに変換されないようにする - Microsoft サポート

*2:英語の場合、単語間には必ず、デリミタ(スペースかカンマかピリオドか半角カッコ)がある。日本語は、単語をデリミタで分けないので、URIの直後に全角文字があっても問題ない。しかしコンピュータは、デリミタが無ければ、どこまでがURIなのか自動判定できない

*3:筆者はMSによく文句言っているけれど、別にMSが嫌いなわけじゃない。むしろ好きな企業である。

*4:googleへのリンクに見せかけてyahooへのリンク