あとでなおす。
別名AutoLink。
プレーンテキストをリンク化する。
リンクになる書式は決まっていて不用意にリンク化されないよう言葉として使わない記号を含んでいるが、自動リンクは異なる。
ただ長いページ(文字数の多いページ)につながりやすいので、自動リンクでつながっているだけで「関連性がある」とするのは間違い。
自動リンクはセレンディピティのためのリンク。
明示的リンクになる書式は不用意にリンク化されないようにするけど、自動リンクはとにかくリンク化。
存在するページ名をリンク化。書式ではなくページが存在するかどうかでリンク化。
明示的リンクとは異なり、利用者の知らないうちにリンク化するため、ページ名の変更に追従すると利用者の思惑を外れることがある。追従するかどうかは場合による。
キーワードにできるもの †
ページ名はタグのようなもので、識別のための言葉(キーワード)。
それに知識を文章で書いて結びつけるのが現状。
なぜならキーワードでなければリンクできないから。リンクのための言葉に本文を結びつけている。
† 明示的リンク
ページ名は文章であってはならない。
- -------
システムが活用できる順に
- パーマリンク
ユーザーは読めない。書けない。システムが作る。確実にリンク可能。 - タグ
ユーザーは読める。書ける。曖昧にリンク可能。重複が起きる。そのためタグ検索で参照、リンク先の一覧を経て本文にたどり着く。 - 題名
ユーザーが読む・書くためのもの。リンクには使えない。自然文解析で似ている記事を探すのには使える。 - 本文
ユーザーが読む・書くためのもの。システムでは処理できないし、したとしても精度が低くて使えない。
読むときよりも書くときのほうが大事。
書いたときにリンクできるかどうかなので。
→両方可能なのはタグ。システム向けにユーザーが作ったデータ。タグを書くときに(システムが自身に都合のいいように)サポートすればよりシステムに適したタグを書ける。
タグのようなディレクトリ名に対応した自動リンク規則 †
ページ名の階層部分は順不同。
語順が変わっても自動リンクに支障が出ないように。
セクションに対応 †
ページ内のセクションにもリンクする。
ページ名#セクション名
→リンクにパラメーター付与。曖昧検索用文字列。リンクの後(または前後。リンクモジュールの設定で)の単語をいくつか使う。
リンク先ではページ内検索用UI作成、検索結果を一覧表示。
ユーザーはリンククリック、検索結果を見て選びクリック。曖昧検索なのでユーザーの判断が必要。
検索結果はクライアント側で作成。
リンク対象の決定方法 †
リンク化するテキストの決まり方。
「自動リンク」と「リンクルール」というページ名があるときに「自動リンクルール」はどうリンクされるか。
→「自動リンク」だけにリンク。
でも「自動リンクルール」を2つのページを合成したページや、2つのページにつながるメタページにするのもいいかも。
そうなると優先順位なしに全てのページ名をリンクすることになる。
※ページ名が接しているときは重複にならないことに注意。
自動リンクはリンクか埋め込み(include) †
明示的なリンク方法はリンクと埋め込みの2種類がある。
自動リンクがどちらになるかはリンク先次第。
どちらのリンク先も明示可能。指定すれば指定した通りになる。
これで記法のカスタマイズをWiki上で可能に。
記法1つを1ページにして、それを埋め込み側ページにする。
シンタックスシュガーを作る。
埋め込み側であることを指定するには特定ディレクトリ以下に置くことなどで。
自動リンクの先にあるもの †
区切り文字で区切った単語ごとに最長一致。
- (ディレクトリ名を含む)フルパス名
- (ディレクトリ名を1つ以上含み、後方一致で適合する)ディレクトリ名と、ページ名
ディレクトリ名やページ名の途中からという意味ではない。適合の単位は区切り文字で分割した部分文字列。 - ページ名のみ、ディレクトリ名のみ
後方優先。ページ名→ディレクトリ名→さらに上のディレクトリ名。
…の順に優先。
つまり、後方からより長い部分に一致するページ、かつリンク文字列を全て含むページ。
ディレクトリ区切りはページ名に使えない文字を使うので、「ページ名だけを書いたのにディレクトリにリンクされる」ようなことはない。
適合するページが複数あるときは…
…の順に判定。
- -------
ページ名だけで深い階層にあるページにリンクするので、自動リンク→ページ/リンク/自動リンクのようなリダイレクトページが要らない。バックリンクなどの自動リンクを統一できる。
自動リンク化対象 †
ディレクトリ名無しでもリンク。
/区切り以降の名前だけを書いても自動リンク。リンク先はフルパスのページ名。
ただし、優先順位がある。
- (Wikitext内の)フルパスで書かれているページ名
- (Wikitext内の)相対パス
親ディレクトリの指定方法が無いので、同じ階層と下位階層しか指定できない。 - 曖昧さ回避ページへのリンク
探索条件は→メタページ 検索リンク
候補が全くないとき。全文検索するリンク。
→自動リンクではなくBracketLinkの場合に、メタページの処理で行われる。
NaneyOrgWiki: WiKicker/HierarchicalWikiPage
http://www.naney.org/wiki/WiKicker/HierarchicalWikiPage.html
…のように、途中が抜けているパスを使えるのも良い。これは曖昧リンクの1つ。ページ名だけの場合も曖昧リンク。パス内の単語が1つでも見つかったらリンク対象。
存在しないページ名として使えるのは候補が1つに決まる書き方のみ。
ページ/作成リンク(DanglingLink)のつもりで書かれた曖昧リンクはフルパスか相対パスとして解釈される。
- -------
後で正確な名前のページを作ったとしても、機能が無くならないようにしたい。
近いページをすぐに探せるようにしたい。
「このページの周辺を探す」というリンクがナビゲーションにでもあればいい。
(現在の)ページ自身にはリンクしない †
現在のページへのリンクはナビゲーションの中にあるので不要。
こうしないと包含関係にあるページ名の短いほうがリンクされなくなってしまう。
包含関係にあるページ名は長いほう優先。
現在のページとは距離ゼロのもっとも近いページのこと。
曖昧さ回避ページと競合する?
2つの機能で実装 †
[[]]を付ける機能[[]]をリンク化する機能
ディレクトリ構造ではなくタグのようなもので †
/から始まるのをフルパスとして、それ以外を相対パスにする方法はあるが、これは使いにくい。
→ディレクトリ廃止、全てタグのようなものとして、ページ作成リンクはそれらを全て引き継ぐ。(タグというオブジェクトはすでにあるので「タグのようなもの」)
とりあえずそうして、(移動ではなく)タグの付け外しを後からでも可能に。
ページ作成リンクで引き継ぐのはタグのようなものだけなので、末尾の1区間(ページ名)は引き継がない。同じ階層へのリンクとみなすということ。
DanglingLinkは曖昧さ回避ページへリンク。
そのページにページ作成リンクがある。複数あってもいい。
こういう対話UIはwikiでは少ない?