- やること
- トリガー(前提条件)・事前条件 → 事後条件
ページでやること † 
ページに記録された情報はページ/要素の入れ子になったものに変換される。実際に保存されるのはページ/要素だけ。それをどう特別扱いするかは使う側と要素自身の問題なので、ページ自体にはNotationText(記法を使ったテキスト)←→ページ/要素の変換と記録、それぞれの参照くらいしか機能がない。
- NotationTextのMIMEタイプは text/x-wikicreole, text/x-markdown, ... など。
- ページ/要素のMIMEタイプは application/x-X-document とか application/prs.X.document といった感じにして。
主体はページ/要素が持つ情報(利用者が書いたこと)。それを組み合わせたり記録したりするものがページ。ページを組み合わせるのがWiki。情報中心の設計。
要素に構造があったり、ページ間に上下関係があったりするものの、利用者からのリクエストパラメーターはそれを解釈できる要素だけが解釈する。リクエスト→要素→レスポンス。構造無視。要素は単独でWebアプリのように振る舞える。
Xのモデル層にはページとページ/要素くらいしかない。永続化するのはこれらのオブジェクトくらい。よそのアプリと連携するためのモデルクラスはできるかも知れないけど。ページとページ/要素には共通点がある。どちらもデータコンテキストに対応。
ページの使われ方…用途は決めていない。何を書き込まれるか…要素次第なので定義不可。ページを操作するAPIは用意するけど用途は未定義。
:i/属性と内容、:i/ページ内容と属性領域の違いは操作に必要な権限。他は同じで、実体はページ。
利用者から見えるページはページ/内容、ページ/属性、ページ/裏、ページ/権限。さらに内容はドキュメント/スレッド1/スレッド1-1/スレッド2/…と分かれている。いずれも実体は独立したページ。
:i/権限が影響するもの[?]はページが関わるところ全てと、ユースケース。つまりいたるところ。権限の参照を速くすれば高速化できそう。
ページの永続化。
NotationText(WikiText)は要素が分担して保存する。
記法テキスト以外でも書き換えられるようにするため。この方法でもテキストで書き換えられる。
:i/ページを保存するときはオブジェクトだけ
:i/ページタイトルにユースケース別接頭辞[?]を入れておくと、ブラウザーの履歴検索でも役立つ。
:i/ページの1行目は特別で、ページ/名前の元になる。ページタイトルになるのは最初の見出し。ページ/内容に全てを含める。コピペ1回でページ作成可能に。
→ :Done/ページ名とページタイトルの書き方[?]
→ :Done/ページ型/スレッド/データコンテキスト/記法定義をまとめて設計[?]
ページの上下関係 † 
1つの上位ページで複数の下位ページをまとめることができる。ただページ/名前に共通部分を作るだけ。ページ間に関連なしの名前だけつながり。
上下関係はページ名に含まれる単語数。→ ページ/名前#i8d1b64a
順不同パスに共通点があれば下位展開でまとめて表示可能。
下位展開ビューでの順序情報に他のページ名が含まれるくらい。その情報は消えても間違っていてもいい。表示順序が変わるだけ。
† :i/ページと他オブジェクトとの関わり合い
ルートページは全てのページの上位に位置するページ。
ルートページは全てのページに共通する名前 / を持つ(だけの)ページということ。
ルートページの階層レベルは0。単語1つでレベル1。
ページ名でつながるネスト構造。オブジェクト間はつながっていない。
上位ページを閲覧すると下位ページも見える。上位と下位について→ 順不同パス
:Done/セクションをやめてページのネストで[?]
なんでもページに記録 † 
ログの保存もページに。
ログの出力先を特定の(設定された)ページにする。
でもシステムが書き込むのはページ/裏のはず。ページ/裏の1つに追記していく。アクセスログ専用のページ/裏。
裏だけを使うページがあってもいいかも?
:i/アクセスログはページの属性
アクセスログもクラス名を冠したページ(のページ/裏)に?
:i/クラスごとにページを
:i/検索結果でページを作れば「検索結果の検索結果」が可能になる。
まず見せるところを「まず見て欲しいページ」というページ名で見せることができる。更新される動的まとめ。
ページにさえできれば他のページに情報を渡せる。永続化されたページでなくてもいい。
ページを作るのに必要な情報を蓄積なしに揃えられる場合のみ?蓄積が必要なら呼出し回数に関わらず、何度でも同じ結果が生成できないと情報がおかしくなってしまう。
:i/テンプレートはページ名。テンプレートを適用するときはそのページ名をページ/属性に書く。ページ/属性→ページ/名前→テンプレート内容。
独立したページにすると機能充実。その反面、テンプレートにも権限(錠)を設定できてしまう。運用の問題にしておく。
:i/添付ファイルもページ
ページは添付ファイルのアダプター。
:i/ページは要素でもある。ページとページ/要素は同一視可能…ではないものの、両方に共通した機能がある。例えばデータコンテキストに応じる機能。ページ/要素と:i/ページにtoJsonを実装して、いずれでもJSON形式を作れるようにする。
その他 † 
特定のページが必要になったとき † 
- 復帰
永続化してあったインスタンスから - 生成(コンストラクター)
指定されたNotationTextをページ/要素に変換して、自身のドキュメントとする。
ファイルアップロード時でもファイルを表すページのテンプレートはある。それをページ/要素に変換。