ページ/名前の一部。システム内部で使う名前。
ページ名が変更されてもこちらは変更しない。
ページ/名前ひとつに対して複数あるID。版の名前。システム内部で使う。
「内部名」よりも「ページID」「版ID」としたほうが分かりやすそう。ページインスタンスである版のID。
見解、版は変更されることが無いので、そのまま内部名の一部にしてもいいかも。
ページ名:見解f12o:版0 → E3839AE383BCE382B8-f12o-0
…みたいに。
同じ内部名を持つページは複数あるので、内部名だけではページ実体の特定はできない。同名ページが複数あっても版IDで区別できる。版IDはページ/履歴の要素である版のIDなので、ページを編集しても引き継がれるけど、ページを編集してもフォークしても引き継がれない。
また、ページ名が変更されてもそれは次の版でのことなので、影響なし。こちらは変更しない。
見解IDも版番号もページIDには依存しない。
版番号は見解IDに依存するので、版だけを他の見解に移動することが可能なら版番号を付け直す必要がある。
見解、版は変更されることが無いので、そのまま内部名の一部にしてもいいかも。
ページ名:見解f12o:版0 → E3839AE383BCE382B8-f12o-0
…みたいに。
- そのままファイル名などにできる
- ページ名変更がシステムに影響しなくなる
見解IDも版番号もページIDには依存しない。
版番号は見解IDに依存するので、版だけを他の見解に移動することが可能なら版番号を付け直す必要がある。
内部名は利用者に見せない。
- そのままファイル名などに利用できる文字列
ページ名変更しても変わらない名前
- 同じ名前のページが複数あっても、内部名で区別できる
ページIDでなら区別できる。
実装 †
内部名は利用者に見せない。パーマリンク(特定版リンク)では見える。
内部名はページ属性ではない。
永続化キーそのもの。
「内部名」「外部名」という言葉は不要になった。版IDとページ名があればいい。
版を内部名に含めない?
版違いを管理せずとも内部名が分かるようになるが、必要ない。
外部名 1←→* 内部名 1←→1 ページID 1←→* 特定版ID (数字は多重度)
…では?同名ページすべてのページ名を変えるとは限らないので。そして内部名はページIDと同一。一方を省略可能。
→ で、こうなる。
外部名 1←→* 内部名(ページインスタンスのID) 1←→* 特定版ID (数字は多重度)
ページを参照するのに必要なのは特定版ID。内部名はページ名変更で明示的リンクを維持するためのもの。(明示的リンクはページ名で指定されるので、内部名に変換して保存)
実装 †
ページ名クラス。
項目名、見解ID、版番号
ファイル名として使えるように区切りは「_」
内部名は永続化キーそのもの。ページ/履歴のひとつでもある。
ページ名にのみ内部名が必要。他の区分はシステムが生成するIDだけなので、内部/外部ともにそれでいい。
メジャーID、マイナーID †
編集をすると版が変わる。それでも同じページには同じ内部名であって欲しいので、編集ごとに変わる部分と変わらない部分とに分ける。
ユーザーが決められる部分…ページ名(+ディレクトリ名)→メジャーID
内部名はページ名に対応するもの。同名ページは複数あるので特定のページが持っていてはいけない情報。
見解名は上位の名前(ページ名)に依存、合わせないと意味を成さないし、ページ名を指定しないと見解名のリストアップもできない。版番号も上位2つを指定しないとリストアップ不可能。
独立できるのはページ名だけ。→内部では分ける。メジャーID依存しているのをマイナーIDとして、2部構成に。
Entry:Side:Rev → Major:Miner
ファイル構成は内部名依存。Major(Entry)を指定するとMiner(Side:Rev)をリストアップ可能。3層にそれぞれ代表があるから、どれが欠けていても扱うべき内部名は得られるけど。
版を内部名に含めない?
版違いを管理せずとも内部名が分かるようになるが、必要ない。
辞書ファイルはEntryごと:編集があるたびに更新しなければならないので。EntryのメジャーIDと同じ生存期間。ページ名リストは1つじゃないと意味をなさない