[8] 色々な[[ソフトウェア]]で[[平文]]や[[利用者]]の入力文、
あるいは [[HTMLメール]]の[[地の文]]などから、
[[URL]] らしき部分を自動的に検出し、これを[[リンク]]として表示する[DFN[自動リンク]]機能が備わっています。

[9] 中には [[URL]] の、あるいは [[HTTP(S) URL]] など一部の [[URL]]
の構文を機械的に[[正規表現]]に変換しただけのような雑な実装もありますが、
実用上十分良好な[[利用者体験]]を提供するためには、
細かな調整が必要となります。

;; [12] 実装の中には、 [[HTML]] の[[文字参照]]への変換と [[URL自動リンク]]の処理順序が不適切であるなど、
他の処理との兼ね合いで異常な動作をしたり、[[セキュリティー]]上の問題をはらんでいたりするものもあります。

[57] 
[[URL]] の他に、[[メールアドレス]]、[[電話番号]]、[[アプリケーション]]依存の構造
([[ハッシュタグ]]など) でも同様の仕組みが使われることがよくあります。

[58] 
本項では特に断らない限り [[URL]] の[[自動リンク]]を扱いますが、
それ以外の[[自動リンク]]にも触れます。


* 実装戦略

[78] 
[[URL]] の構文を[[正規表現]]のようなものに置き換えて[[一致]]させて[[リンク]]を作ればいいだけではないのだろうか、
と安易に考えがちですが、それだけでは実用的なものになりません。
簡単そうに見えて、これは思っている以上に複雑な問題なのです。

[79] 
明文化された手順や有名な実装だけでもいくつもありますが、
それぞれ違った方針で違った特徴を持ったものになっています。
それぞれに欠点もあります。

[REFS[
- [153] [CITE@en[19313 – More checks for URIs]] ([TIME[2016-03-03 16:30:00 +09:00]] 版) <https://bugzilla.mozilla.org/show_bug.cgi?id=19313>
- [154] [CITE@en[gecko-dev/mozTXTToHTMLConv.cpp at master · mozilla/gecko-dev]] ([TIME[2016-03-03 16:33:01 +09:00]] 版) <https://github.com/mozilla/gecko-dev/blob/master/netwerk/streamconv/converters/mozTXTToHTMLConv.cpp#L481>
-- [155] [CITE[Ben Bucksch - Projects - Mozilla - TXT->HTML Conversion]] ([TIME[2008-09-23 10:39:27 +09:00]] 版) <http://www.bucksch.org/1/projects/mozilla/16507/>
- [29] [CITE@ja[電子メール本文での日本語ドメイン名URL記述ガイド - 日本語.jp]]
([TIME[2015-10-15 22:13:24 +09:00]] 版)
<http://nihongojp.jp/support/mail_guide/writing.html>
- [30] [CITE[日本語ドメイン名URLクリック対応アプリケーション開発者ガイド                             ~メーラー編~]]
([TIME[2007-01-29 16:06:18 +09:00]] 版)
<http://nihongojp.jp/support/mail_guide/dev_guide.txt>
- [72] [CITE[Linkification of URLs - Google ドキュメント]]
( ([TIME[2014-05-24 03:35:02 +09:00]] 版))
<https://docs.google.com/document/d/1h9yPmUScIGt9gEquLjgf739GfEy8QJ6WG_hsc-OTkBU/edit?pli=1>
]REFS]


* 境界の処理

[2] 「This is great: https://example.com/great.html.  Thanks!」 の最後の「.」は
[[URL]] の一部ではなく[[英文]]の一部と解釈する必要があります。

[3] とすると「See www.example.com.」も [CODE[www.example.com.]] を表すのではなさそうです。

[4] 「See https://example.com/great.html, please.」 の「,」は
[[URL]] の一部ではなく[[英文]]の一部と解釈する必要があります。

;; [48] これを正しく扱えない[[メーリングリスト]]アーカイブ生成ソフトウェアがあります。
[TIME[2020-09-25T01:51:53.700Z]]

[5] 「https://example.com/page[CODE(char)[U+3000]]です」は、
[CODE(char)[U+3000]] の前までを [[URL]] と解釈する必要があります。

;; [6] [[GitHub]] はこれを正しく扱えません。 [TIME[2016-08-10T03:43:06.200Z]]

[7] 「... (https://test.test/foo)、...」
で [[GitHub]] は [CODE[)]] のあともずっと [[URL]] の一部とみなします。
[TIME[2016-08-22T14:36:26.700Z]]

[13] [[はてなブックマーク]]の[[ブックマークコメント]]では、 [[URL]] の後に「>」
があると、「>」まで [[URL]] の一部とみなします。 [TIME[2017-01-19T10:27:49.100Z]]

[14] [[掲示板]]の自動リンクで、 [CODE[#!]] のような [CODE[!]] が [[URL]]
の一部と見なされず、その直前までが [[URL]] とみなされることがあります。

[15] [[W3C]] の[[メーリングリスト]]のアーカイブ:
[CITE@en[Re: Breaking the `opener` relationship.]] ([[Mike West]]著, [TIME[2017-04-28 17:10:13 +09:00]]) <https://lists.w3.org/Archives/Public/public-webappsec/2017Apr/0078.html>
は、なぜか

> `WindowProxy`'s `[[GetOwnProperty]]` uses
https://html.spec.whatwg.org/#isplatformobjectsameorigin-(-o-): I'd just
stick with that as a determinant of the properties listed in
https://html.spec.whatwg.org/#crossoriginproperties-(-o-).

を

> `WindowProxy`'s `[[GetOwnProperty]]` uses
<https://html.spec.whatwg.org/#isplatformobjectsameorigin-(-o>-): I'd just
stick with that as a determinant of the properties listed in
<https://html.spec.whatwg.org/#crossoriginproperties-(-o>-).

と解釈します。

[19] [CITE@ja[みのさんのツイート: "https://t.co/927QpBK32e!"]]
([TIME[2017-12-23 13:27:17 +09:00]])
<https://twitter.com/mino90h/status/873210646183026689>

[20] [CODE[!]] で終わる [[URL]] を [[Twitter]] は [CODE[!]] の直前まで [[URL]] と認識。

[21] [[GitHub]] は
[CODE[href="https://example.com/">Example Web Page</a>]]
の「https:」から「Example」
までを1つの [[URL]] とみなします。
[TIME[2018-01-14T00:27:17.600Z]]

[FIG(quote)[
[FIGCAPTION[
[1] [CITE[Latest topics > Text LinkとLinkification - outsider reflex]]
([[YUKI "Piro" Hiroshi]] 著, [TIME[2016-03-03 16:56:45 +09:00]] 版)
<http://piro.sakura.ne.jp/latest/blosxom/mozilla/extension/2006-03-10_textlink.htm>
]FIGCAPTION]

> 「http://www.<em>mozilla</em>.org/」みたいに複数のテキストノードに分割されたURIも認識できる。
> 某新聞社のサイトのように「http://piro.sakura.ne.jp/」ってな全角文字で書かれたURIも認識できる。
> 2chでよくある「ttp://」で始まるURIも認識できる。ていうか最初はこれが目的だったんだよね……

]FIG]

[42] 
[[LimeChat]] は
[CODE[《http://example.jp/abc-def/》]]
の最後の括弧まで
[[URL]]
と認識してしまいます。
[TIME[2020-02-17T01:19:15.400Z]]


[51] [CITE['''['''tz''']''' Some time zone history (2)]], [TIME[2020-11-30T15:48:50.000Z]], [TIME[2020-12-03T03:03:42.245Z]] <https://mm.icann.org/pipermail/tz/2020-November/029514.html>

> https://parliament.gov.gy/documents/acts/10923-act_no._27_of_1975_-_interpretation_and_general_clauses_(amendment)_act_1975.pdf

「)」の直前の「t」までで [[URL]] が終わると誤認してしまっています。

[53] 
[CITE@ja['''['''JavaScript''']''' PCのタイムゾーン・[[時差]]情報の活用: Kawanet Blog II]], [TIME[2022-07-16T01:23:09.000Z]] <https://kawa.at.webry.info/200610/article_1.html>

>>
[PRE(code)[
        location.href = '[ASIS[http://www.kawa.net/xp/index-j.html';][リンク]]
]PRE]

[[ブログ]]ソフトウェアの[[自動リンク]]によるものか。


[89] [CITE@ja[PyCon JPの技術に対する不正の告発、並びに技術者と大衆に対しての警鐘 #Python - Qiita]], [TIME[2024-09-23T11:01:09.000Z]] <https://qiita.com/python_bokume2/items/7aa80b73010919007581>


[90] >>89 [[URL]] 直後の全角閉じ括弧を誤解している事案。こういうの[[平成]]の頃はたまに見たけど最近見ないよね。
こういう壊れた実装って未だにあるんだー


[93] [CITE@ja[it-talks(いっとく)/@DSi]], [TIME[2024-10-08T13:16:50.000Z]] <https://pulpdust.org/i/?topic=%40DSi&sort=ASC>

[94] 
>>93

> http://ugomemo.hatena.ne.jp/1351D79031C5FE68@DSi/movie/C5FE68_0A6EF461FE09B_002

のような [[URL]] の [CH[@]] の前までが [[URL]] と誤認している。

* 非ASCII文字

[27] かつては [[URL]] には[[非ASCII文字]]は認められていなかったので、
[[日本語]]などの[[非ASCII文字]]主体の[[文章]]では
[[URL]] とその周りの区切りは比較的明確でした。

[28] ところが [[URL]] で[[非ASCII文字]]一般が認められるようになってから、
[[URL]] の直後に[[文章]]が続いているものと [[URL]] に[[非ASCII文字]]が含まれるものの区別が難しくなりました。

[31] [[素片識別子]]に[[非ASCII文字]]を含む語が書かれている場合や、
[[パス]]に[[見出し語]]が入る [[Wikipedia]] の [[URL]] の場合のように、
[[非ASCII文字]]が含まれる [[URL]] が書かれることは少なくないため、
何らかの対応は必須といえます。

* リンク回避

[22] [[自動リンク]]機能のある[[掲示板]]などの[[利用者]]は、
[[自動リンク]]を敢えて回避することを好む場合があります。

[23] そのため [CODE[http:]] の [CODE[h]] を省略した [CODE[ttp:]]
のような [[URL]] が用いられることもあります。

;; [CODE[ttp:]] 参照。

[24] しかしそうした[[自動リンク]]を回避した [[URL]] を敢えて[[自動リンク]]し[[リンク]]をたどる[[利用者]]の便を図る[[実装]]もあります。

[EG[
[43] 
[[2ch]]
では[[自動リンク]]回避のため [CODE[ttp:]] [[URL]]
の文化が発達しました。
[[専用ブラウザー]]はこれを
[CODE[http:]]
[[URL]]
と解釈して[[自動リンク]]していました。
]EG]

* URL scheme の省略

[32] [[ドメイン名]]のみを書いたり、
[[ドメイン名]]から始まる不完全な [[URL]] を書いたりして[[省略][URLの省略]]して
[[HTTP(S) URL]] を表すこともあります。
[[自動リンク]]の実装の中には、そうした不完全なものも抽出しようと試みるものがあります。

* ドメイン名のみの自動リンク

[59] 
[[ドメイン名]]のみで構成される文字列が[[自動リンク]]されることがあります。

[60] 
そのような実装の多くは [CODE[http://]] を補います。

[61] 
実はそれほど役に立つ場面は多くなく、最近はあまり実装されていない印象があります。

[62] 
[[ドメイン名]]は [[HTTP(S) URL]] 以外にも色々な用途がありますが、 
[[HTTP]] 以外の [[URL]] と解釈するものは見たことがありません。
[[HTTP]] の場合以上に[[自動リンク]]化したい需要がないということなのでしょう。

[63] 
[[IDN]] 対応すると、[[句読点]]を含んだほとんどどんな文字列も[[ドメイン名]]扱いしてしまうことになります。
既知の [[TLD]] で終わるかどうかで制限すれば幾分ましになりますが、
近年 [[TLD]] はどんどん追加されていますから、追随すればするほど悪化します。
しかし [[IDN]] もそれほど使わていないのが現状で、
わざわざ対応して使い勝手を落とす必要性は疑問です。


* URL 以外の自動リンク

[39] [[メールアドレス]]や[[電話番号]]が[[自動リンク]]されることがしばしばあります。

[66] 
[[メールアドレス]]は[[平成時代]]中頃まではよく[[自動リンク]]の対象になっていました。
その後は (私的、娯楽的領域における) [[インターネットメール]]の衰退のためか、
対象とされなくなってきている印象があります。
ただし [[MUA]] では依然として対象になっています。

[67] 
[[電話番号]]は[[スマートフォン]]の普及 
(= [[自動リンク]]された[[媒体]]を閲覧する端末と[[電話機]]の統合) 
により[[自動リンク]]の対象に含まれがちになってきている印象があります。
ただし[[自動リンク]]されるような[[媒体]]で[[電話番号]]の[[自動リンク]]を使って[[利用者]]が[[電話]]したり、[[アドレス帳]]に登録したり、
といった需要があるのかは、疑問もあります。


[65] 
[[Webブラウザー]]が[[自動リンク]]機能を実装し、 [CODE[a]] [[要素]]がなくても[[リンク]]表示することがあります。
[CODE[x-ms-format-detection]] も参照。

[68] 
[[メールアドレス]]は [CODE[mailto:]], [[電話番号]]は [CODE[tel:]] 
が暗示されているとみなすことで、[[URL]] の[[自動リンク]]の特殊形として扱うことができます。

-*-*-

[64] 
その他に[[アプリケーション]]依存の識別子などの自動抽出・リンク化が実装されていることがあります。

[103] 
[[インターネットメール]]や[[ネットニュース]]の[[メッセージ][RFC 822メッセージ]]の表示では[[メッセージ識別子]]が[[自動リンク]]されることがあります。

[69] 
[[Wiki]] は元々 [[WikiName]] と呼ばれる独特の名前文字列構文に一致するものをリンク先ページ名とみなして[[自動リンク]]するシステムでした。

[70] 
[[Wiki]] の中には、伝統的な [[WikiName]] 構文でなくとも、
データベース中のページ名に一致する任意の[[文字列]]を検出し[[自動リンク]]するものもありました。
商用サービスでは[CITE[はてなダイアリー]]の実装例が有名で、
[CITE[はてなキーワード]]の登録[[キーワード]]に一致すると
(特別な構文を使わなくても) 自動的に当該[[キーワード]]へのリンクとなりました。

[71] 
近年では多くの[[Webサービス]]や[[SNS]]が[[ハッシュタグ]]を実装しています。
[[ハッシュタグ]]は [CH[#]] から始まる文字列を分類キーワードとみなすもので、
文中にその形式の[[文字列]]があれば[[自動リンク]]されます。

[73] 
[[ハッシュタグ]]中に使える[[文字]]は、採用サービスによって少しずつ違います。
統一的な規定はありません。
[SEE[ [[識別子文字]] ]]

[74] 
昔の [CITE[Twitter]] は[[ASCII文字]]しか使えませんでした。
[[日本]]のものでも昔から使われ続けている[[ハッシュタグ]]は[[ASCII英数字]]だけだったりします。

[75] 
しかし多くの人に普及したサービスではやはり[[ASCII文字]]のみという制限は非現実的であり 
(文化的多様性を否定する差別的取り扱いでもあり)、
現在では多くのサービスが[[非ASCII文字]]を認めています。

[76] 
ところが[[記号]]類の扱いはサービスによって違っています。
サービスによっては通常表記に必要な文字まで[[記号]]とみなすためか、
[[ハッシュタグ]]で使えないことがあります。

[77] 
たとえば [CITE[YouTube]] は[[仮名]]の[[長音記号]][CH[ー]]の[[異体字]]として使われる[CH[〜]]
([SEE[ [[長音記号]] ]])
を[[ハッシュタグ]]に認めていません。
普通に使えると誤解して使ってみたら使えなかったという[[日本人]]の[[利用者]]が困っている現実があります。
[TIME[2024-05-10T13:12:50.900Z]]


[40] [[smart tag]] も参照。

[85] [[LINE]] では[[金額]]が[[リンク化]]されます。 [SRC[>>84, >>86]]
[[日本語]]で[[日本円]]、[[タイ語]]で[[タイバーツ]]が[[リンク化]]されると説明があり、
他の[[言語]]には説明がありません。
[[言語]]ごとに挙動が変わるのか、説明が違うだけで挙動は共通なのか、
実は[[国]]など他の設定によって挙動が変わるのか、不明です。


[102] 
[[動画サービス]]の説明欄や[[コメント]]欄では [VAR[HH]]:[VAR[MM]]:[VAR[SS]]
のような形式の文字列が[[媒体タイムライン]]上の[[時刻]]の表記として認識され、
指定時刻への[[シーク]]のボタンとして機能することがよくあります。



[REFS[

[FIG(quote)[
[FIGCAPTION[
[84] 
[CITE@ja[ヘルプセンター]], [[LINE]], [TIME[2024-06-16T22:00:12.000Z]] <https://help.line.me/line/android/categoryId/20008811/3/pc?lang=ja&contentId=20023821>
]FIGCAPTION]

>
金額テキストのリンク表示やリンクを使用した送金(送付)は、以下の条件を全て満たす場合のみ可能です。
>
>- 1:1またはグループトークルームで送信されたメッセージ
>- 送信されたメッセージに数値と通貨単位(¥、円、yen)が一緒に表記されている 
>※数値と通話単位の間には空欄(半角スペース)1つまで入力できます
>- 金額が1円~100,000円の範囲内
>-(リンクを利用して送金する場合)LINE Payに加入済み
>- LINEの最新バージョンを利用している
]FIG]

[FIG(quote)[
[FIGCAPTION[

[86] 
[CITE@th[ศูนย์ช่วยเหลือ]], [[LINE]], [TIME[2024-06-16T22:04:48.000Z]] <https://help.line.me/line/smartphone/pc?lang=th&contentId=20023821>
]FIGCAPTION]

>
สามารถส่งเงินผ่านลิงก์ดังกล่าวได้ต่อเมื่อครบตามเงื่อนไขต่อไปนี้ทั้งหมดเท่านั้น
>
>- อยู่ในห้องแชทแบบตัวต่อตัว
>- คุณและเพื่อนในห้องแชทสมัครใช้บริการ Rabbit LINE Pay และ LINE BK เรียบร้อยแล้ว
>- รับส่งข้อความที่มีตัวเลขและสกุลเงินระบุร่วมกัน โดยมีช่องว่างระหว่างตัวเลขกับสกุลเงินไม่เกิน 1 ช่อง
>  * ตัวเลขต้องเป็นจำนวนเต็ม หรือจำนวนทศนิยมไม่เกิน 2 ตำแหน่ง
>  * คำระบุสกุลเงินที่ใช้ได้ ได้แก่ THB, Baht, บาท, ฿ โดยตัวอักษรภาษาอังกฤษเป็นพิมพ์เล็กหรือพิมพ์ใหญ่สลับกันได้
>  * ตัวอย่าง : 1,000 THB, 100Baht, 10.50บาท, ฿20
>- ใช้งานแอปพลิเคชัน LINE เวอร์ชันล่าสุด (อัปเดต ที่นี่)



]FIG]

]REFS]

* 対応する URL scheme

[10] 任意の [[URL]] を自動リンク化すると、 [CODE[:]] さえ入っていればほとんどどんな文章でも一部が
[[URL]] ということになってしまいます。 

[35] 一般的な実装は特定の [[URL scheme]] のみに対応しています。
[[HTTP(S) URL]] のみに対応する最低限のものから、
それ以外の色々な [[URL]] に対応するものまであります。

[FIG(short list)[ [36] よく対応されている [[URL scheme]]
- [CODE[http:]]
- [CODE[https:]]
- [CODE[ftp:]]
- [CODE[mailto:]]
- [CODE[nntp:]]
- [CODE[news:]]
- [CODE[ttp:]]
- [CODE[ttps:]]
]FIG]


[11] [CODE(URI)@en[javascript:]] など、危険な動作を誘引する [[URL scheme]]
もあります。無邪気な実装は[[セキュリティーホール]]となりかねません。



* 区切り文字

[25] 古い [[URL]] の [[RFC]] では、[[自然言語]]文に [[URL]] を混ぜる場合は区切りとして
[CODE[<]] と [CODE[>]] で括るのが好ましいという記述がありました。
[SEE[ [[URL]] ]]
そのため [[URL]] の前後に [CODE[<]] と [CODE[>]] を書くことをよしとする人もいます。
しかしこの慣習は一般には普及しませんでしたし、
[[Web]] 技術に詳しい人の中でもそこまで有名ではありません。
(が無視するのは惜しいほどには普及しています。)


[26] [CODE[<]] と [CODE[>]] は通常の [[URL]] には含まれないものですから、
[[自動リンク]]の実装は特に考慮しなくてもこの区切り文字を意図通りに解釈すると期待されます。
しかし[[文字参照]]の扱いが杜撰な[[自動リンク]]の実装に誤解釈されることもあるようです
(例えば >>13)。

[FIG(quote)[
[FIGCAPTION[
[18] [CITE@en[RFC 7322 - rfc Style Guide]]
([TIME[2017-10-22 17:40:00 +09:00]])
<https://tools.ietf.org/html/rfc7322#section-3.3>
]FIGCAPTION]

>    Angle brackets are strongly recommended around URIs '''['''STD66''']''', e.g.,
<http://example.com/>

]FIG]

[88] 
関連: [[URLの表示]]

* 自動リンク機能付きマーク付け言語

[33] [[Wiki構文]]など[[テキスト]]系の[[マーク付け言語]]は、
[[自動リンク]]機能を言語の一部として組み込んでいることがよくあります。

[34] [[はてな記法]]は [[URL]] の[[自動リンク]]の他に、
[CITE[はてなキーワード]]のキーワード[[自動リンク]]などもあります。

[83] 
[[Markdown]] の実装の多くは[[URL]]の[[自動リンク]]も行います。

[17] [CITE[GitHub Flavored Markdown Spec]]
([TIME[2017-05-15 12:05:46 +09:00]])
<https://github.github.com/gfm/#autolinks-extension->

[80] 
[[マーク付け言語]]系の[[自動リンク]]には、それ独特の難しさがあります。
[[マーク付け言語]]の構文を構成する記号類は [[URL]] とみなしてはいけません。
しかし [[URL]] の中にそのような記号が含まれることもあります。
[[マーク付け言語]]の[[エスケープ]]構文を使わせるのが筋ですが、
書きやすさを犠牲にしてしまいます。

[81] 
問題を避けるには、[[マーク付け言語]]を慎重に設計する、なんなれば[[マーク付け言語]]の設計に[[自動リンク]]を組み込む必要があります。
そうなると[[マーク付け言語]]の構造の検知と [[URL]] の検出は同時に行う必要があります。
[[構文解析]]が済んでから[[自動リンク]]へという処理の分離ができなくなります。

[82] 
例えば [CODE[pre]] [[要素]]相当の構造の中では[[自動リンク]]機能を停止したい、
のように[[自動リンク]]の制御と[[マーク付け言語]]の機能の連動の要件も出てくると、
実装方針はますます制約されることになります。

* 文脈

[37] 次のような分野で使われています。

[FIG(short list)[ [38] [[自動リンク]]する場面
- [[UGC]] 系 [[Webアプリケーション]]
-- [[掲示板]]
-- [[チャット]]
-- [[コメント]]
-- [[Wiki]]
- [[MUA]] の[[本文]]表示
- [[ニュースリーダー]]の[[本文]]表示
- [[フィードリーダー]]の[[本文]]表示
- [[HTML]] の [[authoring tool]]
- [[MUA]] の本文編集
- [[IM]] の受信メッセージ
- [[IRC]] [[クライアント]]
- [[SNS]] の記事本文
- [[Webブラウザー]]
-- [CODE[<meta name=format-detection>]]
-- [[smart tag]]
]FIG]

* テストデータ

[REFS[
- [46] [CITE@en[tests-web/url/autolink at master · wakaba/tests-web]], [TIME[2020-02-17 10:54:26 +09:00]] <https://github.com/wakaba/tests-web/tree/master/url/autolink>
]REFS]

[47] 自動リンクテストデータ。
[[HTCT]] 形式のテストセット中に、
入力例とその[[URL自動リンク]]検出例、
[[HTML]] 変換例が記述されています。

* その他実装例

[REFS[
- [41] [CITE@en[perl-web-url/Parser.pod at master · manakai/perl-web-url]]
([TIME[2019-11-02 18:54:28 +09:00]])
<https://github.com/manakai/perl-web-url/blob/master/lib/Web/URL/Parser.pod>
- [44] [CITE@en[Web::URL::Parser]]
([TIME[2020-01-13 04:25:30 +09:00]])
<https://manakai.github.io/pod/Web/URL/Parser#member-split_by_urls>
]REFS]

[45] [[Perl]] による実装。

* 関連


[49] [[リンク展開]]


* 歴史


[95] 
[CITE@en-us[Proposed Draft UTS #58: Unicode Linkification]], [TIME[2024-10-22T01:51:57.000Z]] <https://www.unicode.org/L2/L2024/24217-uts58-working-draft.html>


* メモ

[91] [CITE[interactive hypermedia]], [TIME[2003-08-04T15:50:21.000Z]], [TIME[2024-09-29T09:28:21.361Z]] <https://lists.w3.org/Archives/Public/www-talk/1992NovDec/0124.html>

[92] >>91 最後の段落、やや明確ではないけど、 [[URL]] を[[自動リンク]]するということかな。
[[自動リンク]]仕様の最古の言及かも。[[自動リンク]]していたサーバー用ソフトウェアはこれ以前からあったのかもしれないけど。


[FIG(quote)[
[FIGCAPTION[
[16] [CITE[OPMLファイルやHTML、テキストファイルからの一括登録機能の追加 - はてなアンテナ日記 - 機能変更、お知らせなど]]
([TIME[2017-05-02 08:41:21 +09:00]])
<https://hatena.g.hatena.ne.jp/hatenaantenna/20060905/1157428635>
]FIGCAPTION]

> はてなアンテナで、複数のページを一括で登録する機能を追加しました。OPMLファイルやHTML、またテキストファイルに対応しています。(テキストファイルからはURLと判別できる文字列を抽出します。)

]FIG]


[50] [CITE[Tcl Improvement Proposals: TIP 3: TIP Format]], [TIME[2020-11-17T01:10:32.000Z]] <https://core.tcl-lang.org/tips/doc/trunk/tip/3.md>



[52] [CITE@en[RFC 1842 - ASCII Printable Characters-Based Chinese Character Encoding for Internet Messages]], [TIME[2021-01-31T11:17:23.000Z]], [TIME[2021-03-20T10:01:29.688Z]] <https://tools.ietf.org/html/rfc1842#section-10>

原文

>
[PRE[
   at Beijing, China:             ftp://info.bta.net.cn:/pub/software/;
   at Shanghai, China:            ftp://info.bta.net.cn:/pub/software/;
   at Taiwan:                 ftp://nctuccca.edu.tw/pub/Chinese/ifcss/;
             or              ftp://ftp.edu.tw:/Chinese/ifcss/software/;
   At Singapore:                    ftp://ftp.technet.sg:/pub/chinese/;
   at California, U.S.A.:                  ftp://cnd.org/pub/software/.
]PRE]

これが[[自動リンク]]された結果の解釈:


>
[PRE[
   at Beijing, China:             <ftp://info.bta.net>.cn:/pub/software/;
   at Shanghai, China:            <ftp://info.bta.net>.cn:/pub/software/;
   at Taiwan:                 <ftp://nctuccca.edu>.tw/pub/Chinese/ifcss/;
             or              <ftp://ftp.edu>.tw:/Chinese/ifcss/software/;
   At Singapore:                    <ftp://ftp.technet>.sg:/pub/chinese/;
   at California, U.S.A.:                  <ftp://cnd.org/pub/software/>.
]PRE]

なぜこんな切り方になるのか理解し難い。規則性が見えそうで見えない。


[54] 
[CITE@ja[Linkification of URLs - 24122-url-linkification.pdf]], [TIME[2024-04-19T17:17:04.000Z]], [TIME[2024-04-25T04:12:14.741Z]] <https://www.unicode.org/L2/L2024/24122-url-linkification.pdf>

[55] 
[CITE@en-US[UASG 010 Quick Guide to Linkification EN - Universal Acceptance Steering Group (UASG)]], [TIME[2024-04-24T23:51:14.000Z]], [TIME[2024-04-25T04:12:59.902Z]] <https://uasg.tech/download/uasg-010-quick-guide-to-linkification-en/>


[56] 
>>55 例文自体の[[自動リンク化]]が推奨と無関係の滅茶苦茶な状態のままで草。てきとーに編集してるんかいw



[87] 
[CITE@ja[電子メール本文中の日本語ドメイン名URLをクリックできるようにするには - 日本語.jp]] ([TIME[2006-11-29 16:15:15 +09:00]] 版) <http://nihongojp.jp/support/mail_guide/>
([[名無しさん]] [TIME[2006-12-29 07:19:52 +00:00]])



[FIG(quote)[
[FIGCAPTION[
[96] [CITE[SMSおよび+メッセージの本文に電話番号を指定するとリンクが付与され、タップすることで発信できますか? – KDDI Message Cast サポートWEB]]
([TIME[2024-11-07T07:11:38.000Z]])
<https://help-kmcsupport.com/faq/a0310014/>
]FIGCAPTION]

> [SNIP[]]電話番号の前後にスペースを付与し本文指定(例:△0120-xxx-xxx△)することで実現可能です。ただし、端末機種およびアプリバージョンに依存する仕様となるため、[SNIP[]]

]FIG]


[97] [CITE@ja[JVN#43561812: スマートフォンアプリ「+メッセージ(プラスメッセージ)」における Unicode 制御文字の扱いに関する脆弱性]]
([TIME[2022-12-21T03:00:00.000Z]], [TIME[2024-11-07T07:14:35.551Z]])
<https://jvn.jp/jp/JVN43561812/>

[98] [CITE@ja[JVN#43561812: スマートフォンアプリ「+メッセージ(プラスメッセージ)」における Unicode 制御文字の扱いに関する脆弱性]]
([TIME[2022-12-21T03:00:00.000Z]], [TIME[2024-11-07T07:14:35.551Z]])
<https://jvn.jp/jp/JVN43561812/>


[99] [[+メッセージ]]の挙動はクライアントによると推測されますが、
ある[[携帯電話]]のクライアントの場合は、
[CODE[foo.test/abc]]
や
[CODE[foo.test]]
のような [[URL scheme]]
がないものも [[URL]]
として[[自動リンク]]します。

[100] 
[[非ASCII文字]]も認識されることがあるらしく、
[CODE[foo.test…]]
だと[CH[…]]まで[[ドメイン名]]の一部とみなします。
[TIME[2024-11-15T03:47:23.800Z]]



[101] 
[[Chatwork]] の[[自動リンク]]は [[URL]] の後に [CH[>]] があると [CH[>]] まで
[[URL]] の一部と誤認します。
[TIME[2024-12-02T05:28:28.800Z]]

