• 追加された行はこの色です。
  • 削除された行はこの色です。
RIGHT:&tag(ページ,リンク,思い付き,実装,設計,目次);
RIGHT:[[:t/リンク]] [[:t/バックリンク]] [[:t/自動リンク]] [[:t/DanglingLink]]

*目次 [#ne1b603c]
#contents
----
#lsx(new=true);

*関連 [#r7165e44]
#lsx(tag=リンク,new=true,except=^リンク(/.*)?$)

[[検索:リンク]]

*リンク周辺のタグ [#a429debd]
#tag(0,リンク)


*リンクとは [#h3fba4d7]
RIGHT:[[:t/リンク]]

ページ同士をつなぐもの、機能。
関連名で「このページはどう扱われているか」を表現。
検索で活用。検索の有用性を決めたり、情報の集約をするための機能。

プレーンテキストをリンク化する機能 →[[リンク/自動リンク]]
*思い付き [#o8af1904]
プレーンテキストをリンク化する機能→[[自動リンク]]

曖昧なリンクを可能にする。
-近いページ名とリンク
-完全に一致するページがないときは曖昧なリンク。候補一覧を表示。
ページを自動作成。
(候補が1つでも表示する。そういうときは一致するよう直してもらわないといけないので表示して知らせる)
-候補一覧に順序入れ替え機能を。
--リンク先を1つにできないとき、適当なリンクを上位にできる。
専用UIではなく、更新日時が新しいものを上位にするなど、ユーザーの行動に付随する方法で。
上位にしたリンクと自動作成されたリンクとは分けて表示。
-ただし、間違いない場合(ディレクトリ名違いの同一ファイル名がたった1つしかないとき)は通常のリンクに。
2つめができると候補ページが作られる。
-ディレクトリ名違いの同一ファイル名が複数ある時はやはり候補ページを。
**自動リンクには手間がかかる [#u8eaa781]
----

Wikiの自動リンクは「自動リンク」というより「半自動リンク」。何をリンクするかページを作ることで明示しなければならない。
#contents

*リンク [#f4ac9729]

これでは「書き散らしたことが自動的にまとまる」とはいかない。
人的資源が必要。
***ページ名変更に追従 [#mb72ab7a]
†[[:i/外部からのリンクはメタページで追従]]
†[[:i/リンク要素はページ名変更に追従]]


一人で使うとなると手間がかかってしょうがないので、検索キーワードを自動的にページ化する機能でもないとアイデアノートにはしづらい。
とは言っても他の方法と比べると格段にWikiのほうが良いわけだけど。


**自動生成ページの削除条件 [#q47274ac]

検索キーワードから自動的にページを作るとなると、そうやって作ったページを自動的に削除する機能も欲しくなってくる。
削除の条件は、自動的に作られて、かつ…
-古いもの
-参照数の少ないもの
-検索結果の少ないもの(リンクの少ないもの)
-被リンク数(BackLink数)の少ないもの(参照数、検索結果とも関係がある)
…といったものだろうか。


被リンク数は有効そう。PageRank式でランクの高いページを残すように。
検索ワードをページ化すると、検索結果はBackLinkリストになる。(ヒット数=被リンク数になる)
BackLinkも検索対象になれば、あとで関係のある検索ワード(検索結果に出てきたページ名の一部)を検索したときにも被リンク数が増えてより残ることになる。


被リンク数に新しいものを残す(古いものを消す)というルールを加味すれば実用的になりそう。(しきい値ではなく)古いほどPageRankを減点するような仕組みで。古さやPageRankには上限を設けて。
これで’’最近’’注目されている言葉ほど残ることになる。注目され続けていればいつまでも残る。個々のページを参照しなくても残る。あまり書かれていない言葉でも残る。

全文検索が利用されることが前提だけど、この機能はその利用頻度を下げるものなので、全文検索とこの機能でバランスが保たれるようになりそう。

さらに効果を上げるにはタグクラウドのように検索ワードページを目立たせる。
消えそうなページほど早く消えるように。浮き沈みを激しく。

----------

検索ワードページは全文検索のメモ化、検索結果のキャッシュになる?
**リンクも検索対象 [#pd5eb18d]
プラグインと同じ扱いで。
検索式にリンクを表す特別な記号「→」があれば。
*[[:t/リンク]]より [#va20d8a5]

''自動リンクも対象に''。
**追跡 [#n00f8b7f]
:RenameLogを使ってページ追跡を。
参照リクエストのときに自動遷移。
編集ページのリクエストなら追跡しない。新ページを指すリンクを表示する。
あとで[[:t/リンク]]のページを追加。

// **断片の分類
// ***[[:i/]]


**?付きリンク(DanglingLink)も有効に [#l7ffd0a8]
>言葉?

「言葉」部分は曖昧さ回避ページ(曖昧検索の結果)へのリンク、「?」部分は新規作成へのリンク。「?」部分はなくてもいい。曖昧さ回避ページに新規作成リンクを置けばいい。
曖昧さ回避ページへつなげる。(似ているページ一覧)
**リンク/ [#w256424e]

%%ページ作成しなくても、全ページの「言葉」を自動リンクできるようにするため。%%
用語集や別名・表記揺れをページ化しなくても、言葉のつながりや連想ができるようにするため。
#ls

書くときのタグ一覧と合わせればアイデアノートに効果大。

**特定版リンク [#kf2ea123]





**リンクにタグを付けたい [#u14ad063]
例えば…
>WikiPageはテキスト1つでは実現不可能
>[[なぜ?:表示用と編集を分ける]]

この関連名(なぜ?)はリンク([[表示用と編集を分ける]])の属性。
2つのページがどう関連しているのかを表す。

このタグは検索可能、検索結果に表示することも可能に。
ページ同士を関係づけることができる。RDBMSのリレーション機能のように。

表示の仕方次第でアイデア創出に効果が見込める。

----------

例:
-「「懸案事項」タグと「未解決」タグの両方が付いているページと、それに「解決策」という関連のあるページをリスト化」とか、それをデータ交換用形式でエクスポート、他のアプリで読み込んで…とか。
-「「アイデアノート」というタグの付いた各ページにある「更新日」というタグ付きリンクで関連したページを、そのページの名前順にソートして表示」(更新日順に表示)とか。
日付くらいならページの属性にしてもいい。それ以外のユーザーが自分でしか使わない属性もリンクで表せるということ。
リンク先は無くてもそれなりに機能するので、リンクの関連名をページの属性のように使うこともできる。書くだけで機能する属性。全文検索でも代用可能だけど。
-「「「アイデアノート」というタグの付いた各ページ」にある「「更新日」というタグ付きリンクで関連したページ」にある「「曜日」というタグ付きリンクで関連したページ」のページ名を表示」(何曜日にアイデアがよく生まれるか?を表示)とか。
「更新日」リンクは「更新:2001-01-01」というタグでも良さそう。

----------

→リンクの属性:関連名で実現。リンクにはタグは付けられないが同等の効果。
*実装 [#v6346e58]

**target [#y707eea2]
外へのリンクを作る際、開くフレームはリンク先のパスと同じ名前にする。
リンク先URIのうち、最後の/まで。

ドメイン毎にタブをまとめる。
これは正しいかどうか不明なのでサイト設定で固定値にできるように。

 http://wiki.pmint.name/wiki/?FrontPage

 <a href="http://wiki.pmint.name/wiki/?FrontPage"
 target="http://wiki.pmint.name/wiki/">

 http://wiki.pmint.name

 <a href="http://wiki.pmint.name"
 target="http://wiki.pmint.name/">

URIのドメイン名+最初のディレクトリまで、もいい。
**表示を省略 [#t8057390]
文字列展開したときにパスの中間を省略。
ただし、省略しない指定になっているのは除く。

省略はパス区切りを単位として。
最初と最後は省略しない。

リスト表示する際に要点を目立たせるための機能。
省略するのではなく、特徴を強調表示するのもいい。が、大抵末尾に特徴が現れるものなので目に留まりやすい。
→不要。


***出現頻度による省略 [#yf2659f7]
パスの中間を省略する際、どこを省略するかを似ているページ名がどれだけあるかで判断してもいい。
パス区切りで区切って、共通部分を省略するように。
多く存在するパス名から順に省略していく。適度な長さになるまで繰り返し。
だから、「/ページ/…/UI/…/配色」のように数カ所省略することもある。
表記が動的になるので、定期的に更新しないと同じページ名でも略し方に違いが出てくる。
**曖昧リンク [#te218b9b]
曖昧リンクはリンクを先に作るときに効果的。
リンク先のページ名が違っていても有効だから。

異字体にも対応するとか。
いとゐとかも。

RIGHT:[[:t/柔らかいUI]]

→リンク先が存在しなかったり一意でないBracketNameのリンク先。実装では[[曖昧さ回避ページ]]へのリンクにする。
**NewPage? → NewPage[?] [#t5674cd6]
1文字ではクリックしづらい。
クリックしやすく。

スタイルシートで。
[? NewPage ?]
にもできるように。
**リンク [#xa35a423]
外のサイトに読めるリンクを貼れるようにするため、サイト内リンクは日本語で。
そのために…
-エンコーディング用のヒントを付ける
ヒントが無ければUTF-8として扱う。
RIGHT:[[:t/文字コード]]

#br

-リクエストされたURLがURLエンコード済みならデコードしてから文字コードのデコードを。
-URL→ページ名の変換法則をWiki上の設定で。
-/の後にページ名を付ける拡張パス形式の他、?以降にpage=ページ名を付ける形式にも対応。
**%%リンクはページ内にのみ存在するオブジェクト%% [#j6f7e1b6]
%%でも通常のクラスで良い。%%
%%リンク元になるページが所有する。%%

%%リンクオブジェクトのIDはオブジェクトID(普通。特に工夫しない)%%
%%…リンク元/先が同じでもリンクが複数存在することもあるので(ID以外全て同じ、ということがあるので)。%%
**リンクもWikiNotationの1つ [#ae0eb1c1]
ただ、検索式で特別な扱い…なのは他も同じ。
「→」はリンクを表す。

→WikiNotationの1つ。
**%%フィルタリングしてからリンク%% [#x4e6a597]
%%実装では自動リンクならフィルタリングした文字列を検索、リンク。%%
%%Wikiページでフィルタリングルール設定。%%
%%DanglingLinkをまとめる効果がある。%%

%%RIGHT:[[:t/設定]]%%

%%URIを書いたもの(http://…)もフィルタリングして。%%
%%こっちはWikiに限らないリンクの仕方と同じ。%%
**強いBackLink [#o47fa82f]
バックリンクは2種類。
-普通のバックリンク
-強いバックリンク
(自動リンクではなく)明示的なリンクに対応するもの。
 [[キーワード]]
…で「キーワード」ページに強いバックリンクが作れられるが、
 キーワード
…が自動リンクされたときは普通のバックリンクになる。

----------

強いバックリンクは…
-強調表示
-他のリンクよりも先に表示
-ページ/一覧などに「代表的な」「Wikiの構造として」表示できる


----------------------------------------

これを利用すると、適当な(思い付きの)ページ名でページ作成しても、ページ内容で自然にまとまるようにできる。
思い付いたことの追加位置を調べなくて良い。


**外部へのリンク(http:…)も書ける [#vee8ae0d]
ページ名を使えるところでは外部リンクも使えるように。
**一部重なっている自動リンク [#qb71fa36]
例:
「リンクページ」、「自動リンク」の2ページが存在するとき「自動リンクページ」をどうリンクするか。

+どちらかのみ
+共通部分「リンク」を曖昧なリンクに。他は通常の自動リンク。
「自動」「リンク」「ページ」の3つに分ける。
+分けずに曖昧なリンクに。
「自動リンクページ」が1つの曖昧なリンクになる。

→分けずに曖昧なリンクに。
3つに分けたのでは操作しづらい。
「どちらかのみ」は次点。

----------

包含関係の場合は長い方に直接リンク。これはおそらく妥当なので。

----------

実装ではリンク候補を全て揃えてから一意のリンクか曖昧リンクかを判断することになる。
完全に重複(包含している)なら長い方に通常リンク、部分重複なら曖昧リンク、重複していないなら通常のリンク。
**自動リンクも明示的リンクも同じクラス [#f88e6902]
AutoLinkもBracketNameも同じリンククラス。
作られ方(コンストラクターに渡す引数を生成する方法)が違うだけ。

*設計 [#jf0ba18c]

**AutoLinkは機能名では? [#y2034d36]
クラス名にするなら”BracketName”のように「存在するページ名」(…Name)といった名前にしたい。
**属性 [#m6d6214c]
-関連名
「1日前」つながりとか。「タグ」ならリンク先ページはタグという意味になる。ただのページが「他のページからどう扱われているか」で多様性を持つ。
-リンク先
ページ名とは限らない。外部のURIかも。
**リンク先別 [#h9052cfe]
+元ページ
+先ページ
+元ページから見た先ページとの関係

-1つのページに付けられ、先が1つのページに決まっている→「リンク」
リンクは関連名(どういう関係か)があるので、元と先のいずれかが異なれば別物。
-1つのページに付けられ、先がいくつあっても良い→「曖昧リンク」
曖昧でも関連名はある。
-%%複数のページに付けられ、先が無い|先が元と同じページただ1つになっている→「タグ」%%
%%タグページへのリンクになる。%%
%%タグはページ、自動リンク対象%%
**リンクはElement [#v605b6f7]

リンクはElement。ページに含まれる要素。
中に他のElementを含むことは無い。タグも持てない。

リンクはページの属性ではない。他のWikiNotationと同じクラス。

リンクはページを指し示すNotation。指し示す先特に制限なし。ページでないかも知れない。

リンク先は検索さえできれば他に機能は要らないので、見出しなどと同じ扱いでいい。
リンクを検索するコードはリンククラスが持つ、という点も通常の検索の範疇。リンククラスが特別扱いされることはない。
**リンクは組み込み済み [#eb064c49]
WikiNotationではあるが、フレームワーク内でも有効。プラグインではなく組み込み済み。
プラグインを実現するために必要なので、フレームワーク側に組み込み。