RIGHT:[[:t/内部名]]

ページ名クラス。
項目名、見解ID、版番号
ファイル名として使えるように区切りは「_」

----

#contents

*** 内部名はページ名の分だけ [#i951bf30]
「外部名」があるのはページ名だけ。''ページ名にのみ内部名を用意。''他の区分はシステムが生成するIDしかないので、内部/外部の区別なし。

同名ページがあっても重複しないように。外部名が同じページでも内部名は異なる。ひとつの外部名に複数の内部名が結び付く。
*** %%メジャーID、マイナーID%% [#t668609d]
%%編集をすると版が変わる。それでも同じページには同じ内部名であって欲しいので、編集ごとに変わる部分と変わらない部分とに分ける。%%
%%ユーザーが決められる部分…ページ名(+ディレクトリ名)→メジャーID%%

%%見解名は上位の名前(ページ名)に依存、合わせないと意味を成さないし、ページ名を指定しないと見解名のリストアップもできない。版番号も上位2つを指定しないとリストアップ不可能。%%

%%独立できるのはページ名だけ。→内部では分ける。メジャーID依存しているのをマイナーIDとして、2部構成に。%%

%%Entry:Side:Rev → Major:Miner%%

%%ファイル構成は内部名依存。Major(Entry)を指定するとMiner(Side:Rev)をリストアップ可能。3層にそれぞれ代表があるから、どれが欠けていても扱うべき内部名は得られるけど。%%

%%辞書ファイルはEntryごと:編集があるたびに更新しなければならないので。EntryのメジャーIDと同じ生存期間。ページ名リストは1つじゃないと意味をなさない%%

*** 版を含まない [#o2badbf0]
内部名の版番号を分けたとしても、版番号はページ名に依存する。ページごとに存在する版番号が異なるので。

- でもページ更新でできた新しい版に同じ内部名が必要。
- 自動リンク維持のためにも内部名は引き継ぐ必要あり。

→ 内部名をページ名と版に分ける。版のほうは外部名とも組み合わせられるので、内部名と呼べるのはページ名に対応する部分だけ。版は外部と共通。
本当にページ名に対応するだけの内部名。同名ページの数だけ同一内部名が存在する。内部名は裏のページ名。

*** 同名ページ内のIDが必要 [#s5140f39]
ページ名に対応する内部名だけでは複数ある同名ページに対応できないので、それを区別するIDが必要。
→ 結局、同名ページを区別するID(見解のID)が必要になる。自動リンクを維持するための外部名と一対一になる内部ページ名、同名ページを区別するための見解ID、版を区別するための版番号。
*** 自動リンクされる内部名はどう決まるか [#xe6f9324]
自動リンクではページ名変更に対応するため内部名を記録する。でもひとつのページに内部名は複数。複数ある中から選ぶ方法は?

結局、外部名にリンクするしかない?
外部名だと自動リンクの維持が困難。ページ名変更のたびに自動リンクを更新しないと。
%%→ 自動リンク用の「第二の外部名」必要?%%
→ 内部名のメジャーIDが必要。
ページ名が変わらない限り同じで、版番号を含まない。

外部名は投票を加味しないと特定のページにはならないし、ならなくていい。%%でも自動リンクを作るにはページを特定した上で、その内部名を調べなければならない。%%内部名はページ名変更しても自動リンクを維持するはずなのに、外部名を記録するのでは維持できない。
→ 自動リンクは内部名(ページ名に対応して、それだけではページや版を特定できない部分)と関連付ける。
*** 結局、内部名は必要 [#x74c1f37]
メジャーID(同名ページの集約に付けるID)と、マイナーID(これだけでページを特定するGUID)。
同名ページをひとつでも残して名前変更すると、メジャーIDは新しくつけないといけない。古いメジャーIDを残さなければならないうえに、それとは異なるメジャーIDが必要になるので。
*** ページ名を変更した場合2通り [#l7ab0ac9]
- 同名ページすべての名前を変更
内部名は変えなくていい。
- 同名ページをひとつでも残して名前変更
こちらは内部名も新しくしないと。
-- これまでにない名前のページにする
新しいメジャーIDが必要。
-- 他のページの同名ページにする
メジャーIDの付け替えになる。

いずれにしてもマイナーIDはそのまま。
版を重ねても既存のマイナーIDはGUIDとして有効なまま。

*** マイナーIDのほうがメジャーぽい [#he4878de]
GUIDのほうを「メジャー」としたほうが分かりやすい。
→ ページ名に対応するほうを「裏ページ名」とでもしたほうがいい?
GUIDのほうは「ページID」。
このふたつはつなげたりしない。

#ref(内部名/外部名と内部名.png,100%)
※ ページ名変更に対応するため、外部名ーー内部名ーーページIDのほうがいい。
*** 変更点 [#p6c8a29a]
- 見解IDと版番号(両方合わせてマイナーIDと呼んでいたもの)をGUIDにする。呼び方は%%「内部名」か%%「ページID」でいい。新しい版は全く異なるGUIDになる。
- ページ名(Entry)に対応する別名を用意して%%「裏ページ名」または%%「内部名」と呼ぶ。ページ名変更しても自動リンクを維持するため。
*** 最新版を指すURIがない [#a15ae0c9]
ページではなく特定版でもなく、
ある同名ページの最新版をURIで指すには?
同名ページの中のあるページの最新版をURIで指すには?
やはり見解IDは必要?

→ フォークを含んだり含まなかったりするので、ここでは用意しない。
特定の%%ページID%%ページ名と「この特定版ページの直系子孫のうち最新のもの」や「この特定版ページの派生版を含む子孫のうち最新のもの」といった問い合わせで、最新版を指定。
URIにはページ内容と同じ記法を書けるので、そこで特定の%%ページID%%ページ名を最新版のものに変換する。
→ [[汎用記法]]

ページIDからでは投票を反映した最新版が得られないので、ページ名を指定。内部名でも可。それで最新版を指す。



*** 再々考 [#k2915244]
やはり内部名をページインスタンスのIDにすべき?

ページ/名前と、版ID(内部名でGUID)だけで良さそう。特定版とは版ID(ページインスタンスのID)のこと。
名前変更してもリンクを維持するためには?パーマリンクとしても使う。
→ 全版共通のIDが要る。編集しても最新版に引き継がれ、ページ名変更しても変わらないID。ページ名と異なりシステムが生成する。このIDを指定するだけでページひとつの編集履歴が手に入る。フォークには引き継がれない。マージでは一方の全版共通IDだけ引き継ぐ。

- 内部名(履歴ID/履歴内全版共通ID)
(同名ページが複数あるので)ページ名とは1対多になる内部名。最新版に引き継がれる。ページ名変更では変わらない。これでページ名変更時の明示的リンク維持に対応。ページ/属性。以前のメジャーID。
- 特定版ID
版ごとのID。パーマリンクにも使われる。GUID。これだけで版を特定できる。ページ/属性。以前のマイナーID。
- ページ/名前(ページ名/外部名)
利用者が付ける名前。ページ/本文の1行目。ページ本文の一部なのでページ編集と同じ権限で変更可能。明示的リンク・自動リンクの対象。

#ref(:Done/内部名を再考/image.png,100%)
*** ページ名変更は編集のうち [#sea620a6]
ページ名を変更しても過去版に影響しない。履歴には異なるページ名が並ぶことになる。列挙されるのは同じ内部名を持つ版。
当時のページ名を調べやすい。ページ名はページ本文のうちという考え方に合っている。



*** %%自動リンクは内部名を保持%% [#k713a495]
%%ページ名変更時、自動リンクを維持する(変更に合わせて置き換える)なら自動リンクが内部名を持っていなければならない。%%
自動リンクは利用者によって異なる閲覧時展開。ページ名変更に追従する必要はない。(明示的リンクは投稿者が作る投稿時展開なので追従する)ページ名をページ本文と同じように変更できるようにするため、ページ名変更時には追従するかどうかなどを選択させない。