ページ名クラス。
項目名、見解ID、版番号
ファイル名として使えるように区切りは「_」
内部名はページ名の分だけ †
「外部名」があるのはページ名だけ。ページ名にのみ内部名を用意。他の区分はシステムが生成するIDしかないので、内部/外部の区別なし。
同名ページがあっても重複しないように。外部名が同じページでも内部名は異なる。ひとつの外部名に複数の内部名が結び付く。
メジャーID、マイナーID †
編集をすると版が変わる。それでも同じページには同じ内部名であって欲しいので、編集ごとに変わる部分と変わらない部分とに分ける。
ユーザーが決められる部分…ページ名(+ディレクトリ名)→メジャーID
見解名は上位の名前(ページ名)に依存、合わせないと意味を成さないし、ページ名を指定しないと見解名のリストアップもできない。版番号も上位2つを指定しないとリストアップ不可能。
独立できるのはページ名だけ。→内部では分ける。メジャーID依存しているのをマイナーIDとして、2部構成に。
Entry:Side:Rev → Major:Miner
ファイル構成は内部名依存。Major(Entry)を指定するとMiner(Side:Rev)をリストアップ可能。3層にそれぞれ代表があるから、どれが欠けていても扱うべき内部名は得られるけど。
辞書ファイルはEntryごと:編集があるたびに更新しなければならないので。EntryのメジャーIDと同じ生存期間。ページ名リストは1つじゃないと意味をなさない
版を含まない †
内部名の版番号を分けたとしても、版番号はページ名に依存する。ページごとに存在する版番号が異なるので。
→ 内部名をページ名と版に分ける。版のほうは外部名とも組み合わせられるので、内部名と呼べるのはページ名に対応する部分だけ。版は外部と共通。
本当にページ名に対応するだけの内部名。同名ページの数だけ同一内部名が存在する。内部名は裏のページ名。
同名ページ内のIDが必要 †
ページ名に対応する内部名だけでは複数ある同名ページに対応できないので、それを区別するIDが必要。
→ 結局、同名ページを区別するID(見解のID)が必要になる。自動リンクを維持するための外部名と一対一になる内部ページ名、同名ページを区別するための見解ID、版を区別するための版番号。
自動リンクされる内部名はどう決まるか †
自動リンクではページ名変更に対応するため内部名を記録する。でもひとつのページに内部名は複数。複数ある中から選ぶ方法は?
結局、外部名にリンクするしかない?
外部名だと自動リンクの維持が困難。ページ名変更のたびに自動リンクを更新しないと。
→ 自動リンク用の「第二の外部名」必要?
→ 内部名のメジャーIDが必要。
ページ名が変わらない限り同じで、版番号を含まない。
外部名は投票を加味しないと特定のページにはならないし、ならなくていい。でも自動リンクを作るにはページを特定した上で、その内部名を調べなければならない。内部名はページ名変更しても自動リンクを維持するはずなのに、外部名を記録するのでは維持できない。
→ 自動リンクは内部名(ページ名に対応して、それだけではページや版を特定できない部分)と関連付ける。
結局、内部名は必要 †
メジャーID(同名ページの集約に付けるID)と、マイナーID(これだけでページを特定するGUID)。
同名ページをひとつでも残して名前変更すると、メジャーIDは新しくつけないといけない。古いメジャーIDを残さなければならないうえに、それとは異なるメジャーIDが必要になるので。
ページ名を変更した場合2通り †
いずれにしてもマイナーIDはそのまま。
版を重ねても既存のマイナーIDはGUIDとして有効なまま。
マイナーIDのほうがメジャーぽい †
GUIDのほうを「メジャー」としたほうが分かりやすい。
→ ページ名に対応するほうを「裏ページ名」とでもしたほうがいい?
GUIDのほうは「ページID」。
このふたつはつなげたりしない。
※ ページ名変更に対応するため、外部名ーー内部名ーーページIDのほうがいい。
変更点 †
- 見解IDと版番号(両方合わせてマイナーIDと呼んでいたもの)をGUIDにする。呼び方は
「内部名」か「ページID」でいい。新しい版は全く異なるGUIDになる。 - ページ名(Entry)に対応する別名を用意して
「裏ページ名」または「内部名」と呼ぶ。ページ名変更しても自動リンクを維持するため。
最新版を指すURIがない †
ページではなく特定版でもなく、
同名ページの中のあるページの最新版をURIで指すには?
やはり見解IDは必要?
→ フォークを含んだり含まなかったりするので、ここでは用意しない。
特定のページIDページ名と「この特定版ページの直系子孫のうち最新のもの」や「この特定版ページの派生版を含む子孫のうち最新のもの」といった問い合わせで、最新版を指定。
URIにはページ内容と同じ記法を書けるので、そこで特定のページIDページ名を最新版のものに変換する。
→ 汎用記法
ページIDからでは投票を反映した最新版が得られないので、ページ名を指定。内部名でも可。それで最新版を指す。
再々考 †
ページ/名前と、版ID(内部名でGUID)だけで良さそう。特定版とは版ID(ページインスタンスのID)のこと。
名前変更してもリンクを維持するためには?パーマリンクとしても使う。
→ 全版共通のIDが要る。編集しても最新版に引き継がれ、ページ名変更しても変わらないID。ページ名と異なりシステムが生成する。このIDを指定するだけでページひとつの編集履歴が手に入る。フォークには引き継がれない。マージでは一方の全版共通IDだけ引き継ぐ。
- 内部名(履歴ID/履歴内全版共通ID)
(同名ページが複数あるので)ページ名とは1対多になる内部名。最新版に引き継がれる。ページ名変更では変わらない。これでページ名変更時の明示的リンク維持に対応。ページ/属性。以前のメジャーID。 - 特定版ID
版ごとのID。パーマリンクにも使われる。GUID。これだけで版を特定できる。ページ/属性。以前のマイナーID。 - ページ/名前(ページ名/外部名)
利用者が付ける名前。ページ/本文の1行目。ページ本文の一部なのでページ編集と同じ権限で変更可能。明示的リンク・自動リンクの対象。
ページ名変更は編集のうち †
ページ名を変更しても過去版に影響しない。履歴には異なるページ名が並ぶことになる。列挙されるのは同じ内部名を持つ版。
当時のページ名を調べやすい。ページ名はページ本文のうちという考え方に合っている。
自動リンクは内部名を保持 †
ページ名変更時、自動リンクを維持する(変更に合わせて置き換える)なら自動リンクが内部名を持っていなければならない。
自動リンクは利用者によって異なる閲覧時展開。ページ名変更に追従する必要はない。(明示的リンクは投稿者が作る投稿時展開なので追従する)ページ名をページ本文と同じように変更できるようにするため、ページ名変更時には追従するかどうかなどを選択させない。