• 追加された行はこの色です。
  • 削除された行はこの色です。
RIGHT:[[:t/ページ]] [[:t/永続化]]
RIGHT:[[:t/ページ]] [[☆]]

詳細な設計→X/Page
Wikiはページの集約。利用者はページ/内容にしか興味はない。
Wikiの情報もデータもすべてページに記録する。ページは[[永続化]]する。

→ [[ページでやること]]
→ [[X/Page>X#g329967c]]

----

#contents

**ページとは [#x1fc8f6a]
RIGHT:&tag(ページ,フィルタリング,拡張,アクセス権,リダイレクト);
*ページ [#g90e2d85]

→ [[Page]]
**ページとは [#x0bbed95]

ページは再帰構造のデータベース。''MVCのModelの中核。MVCのViewでもある。''
ページがMまたはVに属するのではなく、ページの中にMとVが存在する。
wikiは1つのページ。
ページは情報を持ち、アクセス制御をするもの。アクセス制御するので見る者によって与える情報を変えることになる。見る者とは利用者、他のページ/要素、よそのシステム。
ページ/名前 × アクセス制御 → 情報。書き込むときは逆方向。

RIGHT:&tag(自動生成ページ,テンプレート,属性);
アクセス制御を表すのは権限。情報を表すのはページ/要素。
つまり、ページ/名前 × ページ/要素 × 権限を対応付けるのがWiki。

ページは…
-データ保存場所
-保持しているデータや関連情報を提供する
-利用者から送られてきたクエリーのうち、自身に関する部分だけは解釈できる
→これはフレームワークに。他のクラスにおいても同じ。
-%%入れ子関係になっている場合、親になるページインスタンスから属性を受け継ぐ%%
→入れ子にはしない。埋め込みリンクで閲覧時にそう見えるようにするだけ。でも下位にあるページは属性を継承できる。

*思い付き [#o96998b0]
**ページの内容はコードと見なせる [#xae85282]
ページ内容をコードと見なすと…
***メタファー [#pf679adc]
ページはいろいろなアプリケーションやサービスにも見られるもの。情報を記録するものと見たり、商品として見たり。

-ページの内容は基本的に全てコメント
-ただし、#(機能の接頭辞)で始まる行はコード
-コードの出力はコメント
コードとして再処理することは無い。
他のコードの引数(データ)になることはある。
-コードの出力はコードと置き換わる。
**ファイルと類似 [#s9dbd154]
Wikiのページにはファイルと同様にアクセス許可リスト、日付、読み専用などの属性、パスなどがある。
ページはファイルやデータベースに例えることができる。利用者が書いたことを記録してアクセス制御をするもの。そのページを集めたのがWiki。どのページに何を書いてどれとどれをリンクするかがWikiの構造。現在では情報は検索で探すものになっているので構造は重要でないとされているが、構造も情報のひとつなので、利用しない手はない。
***型 [#e26eed04]
ページには型がある。ページ/型を設定すればHTMLを直接書いたり、各種記法のレンダリング後(HTML)を貼っただけのページも利用可能。
→ [[:i/HTML許可ページ]]
→ [[:i/HTML書き込み]]

管理者のみページ/型:HTMLを使えるようにするには属性値に「ページ/型をHTMLにできる」といった値を設定可能にする。運用の問題。
→ [[:Done/ページ型/スレッド/データコンテキスト/記法定義まとめ#o051e5a4]]
*** 権限を独占できる [#h9e1af1f]
ページの作成者には以降の編集を自分だけで行なう権利がある。
全ての利用者には権限があって、その権限で編集可能なページがある。
→ [[:i/俺のモノは俺のモノ]]

** スレッドモード [#hef972b0]
コメント、トラックバック、Wikipediaでのノートのようなものは裏に隠す。(ページ/裏に限らず、普段見えないところ)
UIはWikipedia式のタブでいい。

フローとストックのフロー側。

**Wiki構築をページで [#g3e22770]
Wiki構築をページで。
APIでページ内の表をレコード単位で読み出しするようなことができれば実現しやすい。
† [[#te598c37]]
**ページの構造 [#mcaa3b41]

RIGHT:&tag(組み立て);
**%%アクセス権は引き継がれる%% [#cfbd8cd4]
%%自動生成ページは元のページ(入力されたページ)すべてのアクセス権を引き継ぐ。アクセス権の合成ルールが必要。%%
ページの内容(本文)はページ/要素だけ。要素間ではネストするけど、ページ内にページは現れない。
下位展開では名前に共通部分があるページをまとまりと''見なして''レイアウト上で並べるだけ。ページ間のつながりではない。明示的リンクでページ間の関連性を示すことはできる。自動検出ではない関連性。

RIGHT:&tag(アクセス権);
***ページの組み合わせ方 [#r1272a4d]
ページの組み合わせがWiki。でもページ──Wikiまでの間にも組み合わせはある。
よそのWikiEngineと同じく各ページには固有のページ名がある。でも同じページに複数の版があったりして…それらを列挙すると全部で4つの名前が必要になる。

→[[:ToDo/ページ自動更新時の権限]]
**Wikiは1ページが1つの板 [#g198eae4]
-この範囲で検索
-書き込み
-削除
:外部名4区分|
利用者に見えるほうのページ名。(もう一方は内部名)
4区分とはスペース/[[ページ/名前]]/見解/版(統一感がない。統一感を出す別名…名前空間?ウィキ名?/項目名/見解名/版名)

…などを。
ページ/名前はページ内容から自動生成。ページ内容の一部をページ名にする。
実体は版。外部名を完全に決めないとページを特定できないということ。

※利用者登録も?WikiFarmとは違う?
版のリストが[[ページ/履歴]]。
版名以外を特定しなければページ/履歴は得られないということ。

→[[ToDo/ブログや掲示板として利用できるか]]
**HTML許可ページ [#ac7869e0]
ブログパーツなど、サイトに貢献する人だけが作れるページ。
HTMLタグなどが閲覧ページまでエスケープされずに残る。
ページ/名前のほかにWeb上でのページタイトル(<title>...</title>)もある。これもページ/内容の見出し要素から自動的に生成される。

作った後は(ページの機能を利用して)他のページに埋め込んだりできる。言い換えればホワイトリスト。
† [[#afb81108]]
*** [[:i/ページ本文も属性のひとつ]] [#i76b1baa]

**ヘッダーの使い道 [#s9cf9fc3]
ページ内容以外から呼ばれた機能のディスプレイとして使用。
形式いくつか用意。上部にテキスト表示するバナー、下部に表示するバルーン、右上にアイコンや通知バッジ出すなど。コードで指定。そのためフレームワーク側にライブラリとして用意を。
組み込み済みの基本的な記法を使えるように。

ヘッダー。つまり通常のページを埋め込みリンクで埋め込むだけ。

内容は…
-(管理者からではなく)システムからのメッセージ
リンクやボタンなども含む。
-検索に適合した部分リスト
前後の数文字、数行を含めて表示。
ページ内リンクも生成して。ページ内にはアンカーを埋め込んで。
**ページを操作するためのUI [#seca03a4]
ページの管理は名前で行なう。名前の変更でページの移動や削除まで実施できる。そういうわけで(編集作業のために)閲覧中のページ名をコピペしやすくする必要がある。

…などをAPI経由で追加。
名前さえあれば内容がなくてもページは存在できる。存在しないページを閲覧すると「書いて」ではなく空のページ(と関連情報)が見られる。この点はよそのWikiと違う点。

*方法 [#t1357f32]
**canonical [#y61ffcd2]
[[正規化 - ウェブマスター ツール ヘルプ>http://support.google.com/webmasters/bin/answer.py?hl=ja&answer=139066&topic=2371375&ctx=topic]]

link rel="canonical" にするページは
-同じページの編集ビュー・履歴ビューなど
ページ名(外部名)が同じページはすべてデフォルトビュー(閲覧ビュー)をおすすめ。
-データフォーマットの違い
HTML/プレーンテキスト/印刷用など
デフォルトのデータ形式(HTML)に。

スタイル・体裁のほうのフォーマットなどは対象外。
読む側設定のスタイルは無視できないのでおすすめ条件にしない。
体裁の方もそのまま。
***ページの削除方法 [#bc67cd19]
ページの削除も編集で。ページ名を(空)にすれば削除手続きになる。削除は編集なので、編集と同様に編集/承認が必要。その後実際の削除が行なわれる。(とは言っても(空)を示す最新版が作られるだけ)

これはGoogleに見せるためのメタデータ。
**セクションと比べると… [#c9fee6e2]
ページはセクションの集約。
Wikitextを持たない。代わりに(Wikitextを持った)セクションを持つ。

作り方はページ作成フォームとか、DanglingLinkとかから。

リンク先になれる。URIを持つ。

下位展開のルールによって一度に展開される埋め込みの深度に制限がかかる。
† [[#m7402a92]]
**UIになるページ [#i4d79437]
UI化するページ/要素。
特定のページ/型を持つページ有効。→ [[:i/UI要素]]

**UIになるページ/テンプレート [#template]
閲覧時に適用されるテンプレートはヘッダー/フッター/常設メニューを作るのに使う。
***入力用のテンプレート [#cda4734d]
複数のUI要素を集めたテンプレートは「入力用テンプレート」とも呼べる。別名「フォームテンプレート」。閲覧ビューでの編集UI(その場編集のUI)としても利用する。
† [[:i/UI要素]]
† [[:i/テンプレートは制限するものではない]]

**全ページ見出しから始める [#q76e9492]
閲覧時、ページ名を見出しと同様に表示。
見出しになったページ名にもEditボタンを付ける。
***ページの元にするためのテンプレート [#b94b7db5]
† [[:i/増殖するページ]]
利用者がページ/作成をリクエストするほか、ログが増えるときにも使われる。投稿時に適用されるテンプレートなので、適用後はドキュメントに混ざって再利用はできなくなる。

ページ内容の有効な一行目がページ名。なのでページ名を見出しにすればいい。
記法/タイトル記法もあるけど、これは後に続く要素にタイトルを付けるものなのでページタイトルには向かない。でも最初の記法/タイトルをタイトルにしてもいいかも?
***複数ページをまとめる枠 [#ibe8d757]
下位展開時の枠や、複数のユースケースを一度に呼ばれたときの枠も「テンプレート」と呼んでいるけど「レイアウト」にしたほうが良さそう。複数のビューを1つのWebページにする。枠/枠1つぶんのリクエストはそれぞれ別。枠の数だけリクエストしてもらう。
† [[:i/ヘッダーの使い道]]
† [[:/ユースケースチェイン]]
† [[ヘッダー]]
***テンプレートや見解をクライアントに合わせて差し替えれば多言語対応に。 [#z0e59289]
テンプレートにも見解がある??
† [[:i/Webページのテンプレートは特定のページに書く]]

**new機能を標準に [#b38375a2]
ページ名の隣(一覧や検索結果や自動リンク)には[[機能/New!]]が付く。
実装するならオプション。サイト設定でon/off。
† [[#a6ce55e1]]
**Wiki構築のためのページ [#rc051169]
管理者によるカスタマイズ。ページを作ることで実現できるように。

RIGHT:&tag(機能,設定);
カスタマイズの手順。
+ プラグインを導入。プラグインではないページ/要素(ビルトイン要素)もある。
+ その設定(特定のページ)を書き換える。
+ プラグイン/ビルトイン要素をページ上に配置。

**添付ファイルもページ [#hf16f53a]
→[[機能/ファイルアップロード]]
**存在しないページは無い [#pc2d3b3b]
存在しないページ=内容が空で存在するページ。
ページ管理クラス(ページとファイルを結び付けるクラス)以外では(UIからも含めて)そうなっているように。つまりこれを実現するのはページ管理クラス(PageFactory)
--------------------------------------------------

- 設定もページに書くという発想。設定以外でも使えるように汎用化して[[データアクセス]]になった。
† [[:i/Wiki構築をページで]]
† [[:i/ページ主体の設計]]
- 設定はそれを使うページ/要素やフレームワーク/WikiEngineの機能次第。
- (コンテンツではなく)設定を書くページは隠しページにする。
† [[隠しページ]]

**本文のレンダリングは最後 [#ua1b6934]
描画順序は内容が変わりにくい順で、上から。ヘッダー、サイドバー、フッター、本文。
これは重複描画の判定を考えて。
1つの画面に重複部分があるとき、ヘッダーなどを優先、重複判定は本文側でする。

二重展開を防ぐようにした場合、先にヘッダーなどを展開しないとヘッダー編集時のプレビューができなくなるから。

***いろいろなカスタマイズ [#customize]
- 公開範囲のカスタマイズ。権限設定で利用者を制限。Wikiがどう使われるかを決められる。
- 記法のカスタマイズ。既存記法の別表記(シンタックスシュガー)を追加可能。
- スタイルのカスタマイズ。テンプレートと属性/継承を使ってWiki内の一部分のスタイル変更。
- 各種テンプレートのカスタマイズ。
† [[ページ#template]]
- ページはデータベース→永続的な情報はなんでもページ化→利用者もページ化。
† [[:i/利用者のページ化]]
ページの移動が利用者の異動。移動で上位ページが変われば(属性/継承によって)その利用者のロールや権限も変わる。
***カスタマイズの動機になる情報を載せるページ [#b0075388]
† [[:i/機能/分析]]
MediaWikiでの''特別ページ''のように管理に役立つ情報を載せるページ。%%(ユーティリティページ)%%

**ページを更新できるのは自身だけ [#e17f3c5c]
編集など、ページの属性を変更する操作は自身が全て行なう。
(自身とはインスタンス)
分析ページは通常のページと実装が異なっていても、ページとして扱えるようにしたい。そのため呼び出し方を統一する。ページ名指定でページを参照すれば分析結果が通常のページの形式で分かるように。多くの場合、テンプレートを埋め込んだりするのでページ/要素として実装する。それを配置したページが分析ページ。管理者に作ってもらう。情報を記録する必要があるならページに記録する。† [[:i/ログはページに記録]]

他から変更したいときは、指示を対象ページにキューイング。
そのページは最新状態をリクエストされるまでに自身を変更すればいい。
キュー出し/入れはフレームワーク/WikiEngineで。それを呼び出すのはページクラス。ページだけのものではないので。
[[:i/ページの重さ]]も特別ページの1つ。
Wikiの可視化。概要把握の機能とその表示。

ページの参照は自由にできていい。普通にロックを掛けて読むだけ。
[[:i/最近更新されたページ]]も特別ページ。実体がページ/要素で、その出力が動的なページリスト。

編集は遅延処理。
ページに手を加えるにはページごとに{属性→値}という形式で指示をキューイング。
適当なときに処理。

最新版が必要なときはそのページを呼び出して、最新版になってもらう。
これはページの特殊な参照方法。
衝突したか知らせるために、編集後のレスポンスには最新版が必要。それまでに更新しなければならない。
† [[#pfc0f372]]
**ページを実装するには [#s2e64fa6]
ページ自体の機能は永続化くらい。豊富な機能はページ/要素に委譲したり、ページを扱う側で実装。
[[ページでやること]]と[[X/Page>X#g329967c]]はページクラスの仕様。

RIGHT:&tag(遅延処理);
† [[#v0cd5027]]

**Webページのテンプレートは特定のページに書く [#e7516dbe]
システムが用意するページ(Webページ)は:config/Page/Editのような特定のページで定義。
WikiTextの編集方法でページデザインやヘッダーの機能を変更。
----

このページを書き換えて…
-ページの構造・内容(HTML)
-どんなときにどんなページを使うか
User-Agent別に定義して、フルブラウザ用とか、ケータイ用とか、スマートフォン用とか。
利用者の権限別とか。
ページは情報をページ/要素の入れ子にして保持する。永続化の対象はページ(と含まれるページ/要素)だけ。情報を生かすのはページ/要素自身とそれを使う側の問題なのでページは個々の要素を区別しない。ページが持つ機能は「NotationText(記法を使ったテキスト)←→ページ/要素」の相互変換と保持と参照くらい。

条件、それに合ったときの戻り値は特定のページに。
条件に使えるデータ、戻り値の用途はシステムにコードで定義。(用意されている中から選択して設定で利用)
ページ/要素→NotationTextのとき、ページ/型が「ページ/要素」を表す値のとき、データコンテキストに合った変換を行なう。「行なう」と言ってもページが行なうのはページ/要素にデータコンテキストの型を伝えるくらい。
- ページ/要素を表す値は application/x-X-document とか application/prs.X.document といった感じにして。
- データコンテキストのうち、記法を使ったテキスト(NotationText)を表す値は text/x-wikicreole, text/x-markdown, text/x-web-markdown, ... など。
-- その他のデータコンテキスト型は text/csv, ... など。

RIGHT:&tag(構築,設定);
ページ/要素←NotationTextのときの変換はNotationTextで使われている記法系とページ/要素次第。ページ自体は介入しない。

**%%リストとハッシュ%% [#z69970b0]
%%エントリー、見解はハッシュ構造。順序なし。キー指定で参照。%%
%%版はリスト構造。末尾が最新版。%%
**ページ内容がオブジェクト構成を表す [#qdd0826b]
ページは独立したオブジェクト。
それを構成するPageElementを決めるのはページ内容。
***ページとページ/要素 [#x3a5c2d4]
主体はページ/要素が持つ情報(利用者が書いたこと)。それを組み合わせるのがページ。ページを組み合わせるのがWiki。ページ/要素が中心。

機能からはこのオブジェクト構成を参照できるように。
WebページのDOM風アクセスと同様に。
ページ間に上下関係があったり要素間に構造があったりするものの、利用者からのリクエストパラメーターはそれを解釈できる要素が直接解釈する。中間にあるオブジェクトは受け渡しするだけ。リクエスト→要素→レスポンス。構造無視。要素は単独でWebアプリのように振る舞う。

**1つのページ内部名にインスタンスは1つ [#ocee16cb]
Flyweight。内部名がID。ページ名は同じものが複数あっていいが内部名は重複なし。
Xのモデル層にはページとページ/要素くらいしかない。永続化するのはこれらのオブジェクトくらい。(よそのアプリと連携するためのモデルクラスはできるかも知れない。)ページとページ/要素は同一視できないものの共通点はある([[:i/ページは要素でもある]])。例えばデータコンテキストに応じる機能。ページ/要素と[[:i/ページにtoJsonを]]実装して、いずれでもJSON形式を作れるようにする。インターフェイスを共通にする??

**アクセスログはページの属性 [#i50a7b52]
アクセスログもページ化する。
機能から扱えるように。
RIGHT:&tag(フレームワーク,属性);
***ページの用途 [#r8dc39d3]
Wikiの構成要素としての使われ方
[[:i/属性と内容]]の実態は同じ。[[:i/ページ内容と属性領域の違い]]は操作に必要な権限。いずれも実体はページ。
[[:i/権限を判定するケース]]はページが関わるところ全てと、ユースケース。つまりいたるところ。権限の参照を速くすれば高速化できそう。

アクセスログから逆リンクを表示すればその場しのぎの低負荷のBackLinkになる。
利用者からの使われ方/用途は決めていない。「何を書き込まれるか」と書き込みから生じた要素の実装次第なので定義不可。ページを操作するAPIは用意するけど用途は未定義。
利用者にとってのページ(UI上で見えるページ)は複数のページの集約。ページ/内容、ページ/属性、ページ/裏、ページ/権限。さらに内容はドキュメント/スレッド1/スレッド1-1/スレッド2/…と分かれている。いずれも実体は独立したページ。
***ページの上下関係 [#z0b442cd]
1つの上位ページで複数の下位ページをまとめることができる。ただページ/名前に共通部分を作るだけ。ページ間に関連なし・名前だけつながりのネスト構造。オブジェクト間はつながっていない。

**ページは機能のDB [#d6676d32]
機能が生成するデータはPageElementを通じてページに記録。見ることは出来るので、読みやすいデータ書式がいい。
機能が独自にデータ保存するよりも使いやすくなければ無意味。
例えばテーブル(表)にレコード形式のデータ、定義リスト(DD)にキー・バリュー形式のデータ、のように。
ページを上下関係でまとめるとページ/属性の継承(属性/継承)や下位展開の対象になる。

機能の設定もページ。
これは利用者が書いて機能が読む。
下位のあるページは[[下位展開]]でまとめて表示可能。上下関係はページ名に含まれる単語数で分かる。→ [[順不同パス#i8d1b64a]] "1つ上/1つ下"
下位展開時の表示順序はページ/属性で(だいたい)決まる。
† [[:i/ページと他オブジェクトとの関わり合い]]
† [[:/セクションをやめてページのネストで]]

**資料 [#sb6c1333]
ごく簡単なHTMLの説明 - The Web KANZAKI
[[http://www.kanzaki.com/docs/htminfo.html>http://www.kanzaki.com/docs/htminfo.html]]
上下関係で最上位にあるのはルートページ。
:ルートページ|
…は全てのページの上位に位置するページ。
…は全てのページに共通する名前 ''/'' を持つ(だけの)ページということ。
…の階層レベルは0。単語1つでレベル1。
*** [[:i/なんでもページに記録]] [#v091f421]
***ほか [#adb264af]
- [[:i/ページを保存するときはオブジェクトだけ]]。NotationTextは要素が分担して永続化する。ページ/要素を記法と切り離す。
- [[:i/ページタイトルにビュー別接頭辞]]を入れておくと、ブラウザーの履歴検索でも役立つ。
- [[:i/ページの1行目は特別]]で、ページ/名前の元になる。ページタイトルになるのは最初の見出し。ページ/内容に全てを含める。コピペ1回でページ作成可能に。→ [[:Done/ページ名とページタイトルの書き方]]
- [[:i/プロトタイピング]]には以前行なったページの実装がある。
- → [[:Done/ページ型/スレッド/データコンテキスト/記法定義まとめ]]

閲覧時のページ→HTML変換の参考に。
***関連 [#la4f5879]
ページ関連のアイデア目録。
- 全てURIで
- 外部名(4区分)
- 内部名(パーマリンク)
- リンク
-- リンクラベル
-- リンク先
--- 内部リンク/外部リンク
内部リンクは「全てURIで」
スキーマが特別
- 永続化
-- データストア
-- 版はデータストアのもの
- ほか、ページ構造に関わるクラス
- ユースケース
- ページ/要素とセレクター
-- データコンテキスト
-- 記法←→要素(ビルトイン記法)
- ページ/属性
-- 属性/継承
- 権限(鍵)
-- 権限/継承
*[[:t/ページ]]より [#v215978a]

**空のページ [#o6881ae4]
空でページ名だけのページは、閲覧時に編集画面。DanglingLinkのかわり。
内容が無いからといって削除されたりはしない。
まとめる前の原案と、[[ページ]]の参考になる点について言及したもの。

**ページとは [#te598c37]

***[[:i/派閥はページ←Amazonでの商品にあたるもの]] [#i6758216]
派閥は無くなったけど、ページがAmazonの商品にあたるのは変わらない。

**属性と内容 [#kcd08e8d]
ページ/属性と、ページ/内容。
「属性」という言葉が紛らわしい。&tag(ToDo);
ほしい物リストに登録すれば備忘録になったり価格の変動を通知してくれる点も、ページにレビューが付く点も。

:属性|
WikiTextのリスト。下位ページが継承する。(1項目ごとに)。ページ/裏と違い、利用者が書いてシステムが読むもの。
ほしい物リストから生成されたおすすめ商品や、それらを集めたマイストアも参考になりそう。登録したページでサブセットWikiを作っておいて、それを何かに利用したり?

:内容|
WikiText1つ。継承されない。

どちらも記法あり。内容の方はそれに加えてプレーンテキストも。
属性の方にプレーンテキストを書いてもいいが特に意味がない。

APIや機能呼び出しからは区別なし。指定すると呼び出しが煩雑になるので。
継承処理後の属性と内容を1つにしたものが参照可能になる。
属性部分を何かで括ったりもしない。
***[[:i/ページは…]] [#k041008c]
> データ保存場所
>
RIGHT:[[:i/ページは…]]

> 利用者から送られてきたクエリーのうち、自身に関する部分だけは解釈できる
>
RIGHT:[[:i/ページは…]]

> (ページを)入れ子にはしない。
>
RIGHT:[[:i/ページは…]]

**他オブジェクトとの関わり合い [#wf50993c]
ページ…Elementのコンテナー。ページがページを含むことはできない。
ページ同士に関連は無し。リンクオブジェクトでつながりが分かるだけ。
Element…ページの要素。ページはElementに含まない。深い構造にしないため。
入れ子(ネスト)にしないのは埋め込みができるから。クラス定義ではネスト不可。でも閲覧時の埋め込み解決後にネストしているかのように見えるのはあり。

ページ/セクション(実装がページと類似)はセクション同士でネスト可能。


*コード [#b9332bbb]
***[[:i/ページとは]] [#i097cab3]
ページ内部は要素のリストでも、ページ要素ごとにデータ構造が違う。
ページはRDBのテーブル。ページ/要素1つが1つの型を持つフィールド。

→ [[フレームワーク/WikiEngineでやること#vad5bbbb]]
WikiEngineはページを操作するもの。



***[[:i/ページと要素は似ている]] [#c6934989]
要素と同じ使い方ができても目的が違う。

要素は内向きで要素間連携のための、ページは外向きのインターフェイス。



***[[:i/ページの属性は下位が豪華、内容は上位が豪華]] [#t9a5584a]
継承とフォルダー式のまとめ。下位が上位を参照すると、下位が豪華になる。どう依存するかの違いでもある。



***[[:i/ページはファイルと類似]] [#m42ea2cc]
ページ/属性とページ/裏に管理用データを持たせて。



***[[:i/ページは機能のDB]] [#wfc07b2e]
ページ/要素にデータアクセス。それをシリアライズして記法化。



***[[:i/ページは要素のインターフェイス]] [#i468126e]
%%このインターフェイスを使わなければ直接依存することになる。それもあり。プラグイン開発の戦略。%%
利用者からのクエリーはそれを解釈できる要素だけが解釈する。解釈できる要素がいくつ存在していてもいい。ページを介しては伝わらない。
ページは要素にとっての場所。要素の配置を変えるときはページに指示することになる。



**ページの内部 [#d7770632]
// ------------------------------------------------------------------------------------------------------------------------



***[[:Done/スレッドモードは不要]] [#y1cd5f11]
> ドキュメントはスレッド投稿の1件に相当。それぞれ内部にページ/型を持つ。
>
RIGHT:[[スレッドは1件1件がドキュメントと同じ型>:Done/ページ型/スレッド/データコンテキスト/記法定義まとめ#kf220197]]

ページの内部構造はページ/要素だけ。
***[[:Done/ページの中のページは不可か]] [#k7998b52]
> ページ同士に関連は無し。
>
RIGHT:[[:Done/ページの中のページは不可か]]

下位展開ならレイアウト上の問題。ページはネストしない。

- ページ名でまとまっていると''見なす''ことはできる。下位展開時はこのまとまりを一挙に表示。
- 明示的リンクで関連性を示すことはできる。自動検出ではない関連性。



***[[:i/ページ内容がオブジェクト構成を表す]] [#e859055b]
ページは要素の構成。要素も要素の構成。それらを決めるのがページ/内容。利用者はページを通して要素をあつかう。



**ページの性質 [#afb81108]
// ------------------------------------------------------------------------------------------------------------------------

***[[:i/BracketNameは不要]] [#y8c1151a]
明示的リンク。
不要だけど利用者の意図をシステムに伝える手段として使う。
ページ同士に明確なつながりが有ることを示す。



***[[:i/ページに型を]] [#j0dee4a4]
Xの拡張容易点。要素だけで対応できない拡張はページ/型で。




***HTMLを直接書けるページ [#i746c5ac]
→ [[:i/HTML許可ページ]]
→ [[:i/HTML書き込み]]

ページ/型の1つ。HTMLや各種記法のレンダリング後(HTML)を貼るためのもの。

この型を管理者だけの物にするには?権限設定では属性値(ページ/型の値)を制限できない。
%%→「特定のページ/型を使わせない」のは不可能。%%
→属性値に「ページ/型をHTMLにできる」といった値を設定可能にする。使う側で''きちんと''判定すればいい。
→ [[:Done/ページ型/スレッド/データコンテキスト/記法定義まとめ#o051e5a4]]

%%型を分ければ権限(錠)も分けられる?%%
%%→型では分けられないが、その型を集めて1つの上位ページでまとめればいい。属性の継承機能で一度に権限を設定できる。HTMLを書くためのページに特定のディレクトリ名を付けてまとめておく。そのまとまりに管理者だけの編集権限/錠を与えて。%%

%%ページを「ページ/型:HTML」にできては権限設定が無意味。ページ/型の変更…ページ/属性設定のすべてを管理者権限にしなければならない。一般利用者はページ/属性を変更できないので、ページ/型も変更できない。可能。%%

%%ページ/属性は複数に分けて、一部は誰でも変更可能にする必要があるかも知れない。%%
***[[:i/俺のモノは俺のモノ]] [#j8a9a00c]
ページに書かれた情報の権利/権限。
権限設定、権利表明の''コマンド''。それと紹介文にも。


***[[:i/見出しをページのタイトルに]] [#j58387ce]

1行目よりもふさわしい箇所があればそっちで。

%%→ [[:i/全ページ見出しから始める]]%%
タイトルを見出し化するよりも、見出しをタイトル化。書くときは見出しだけを書くように。

→ [[:i/UI上でページ名は「管理用」とする]]
最初の見出しをページタイトルにするといい。
Webブラウザーに表示されるのは最初の見出し。
1行目をWebブラウザーのタブやGoogle検索結果に表示したいなら、1行目を見出しにしてでも見出しがページタイトルになるようにする。

----

見出しと本文のうち最初の1行をページタイトルに。
**ページを操作するためのUI [#m7402a92]
// ------------------------------------------------------------------------------------------------------------------------



*** [[→:タイトルとURLをコピペ]] [#b6fa6f8f]

はてなフォトライフのフォトライフ記法欄のような。
ページ名のコピペ以外に内部リンクを作る方法があるなら不要。オートコンプリートとか。ドラッグ・ドロップで使えるクリップボードとか。
このコピペ機能の代わりにページ名を逆リンク一覧にリンクするのもあり。クラシックWikiではそうなっているけどMediaWikiではそうなっていないので、どちらでもいい。
***[[:i/存在しないページは無い]] [#e2e28745]
UI上では内容が無くても関連情報はある。ページ名も情報のうち。
実装上はページの有無を気にしない。ページはSingletonのようなもの。

DanglingLinkは「存在しないページヘのリンク」という意味ではなくなる。



***[[:Done/ページ削除のUI]] [#ob0cfa17]
→ [[ページ/削除]]
**UIになるページ [#a6ce55e1]
// ------------------------------------------------------------------------------------------------------------------------

それ用の要素を使って入力フォームを持つページを作ることができる。
[[→:UI要素]]
**Wiki構築のためのページ [#pfc0f372]
// ------------------------------------------------------------------------------------------------------------------------

***[[:i/Wiki構築をページで]] [#zccacd77]
設定項目をページに書ければいい。
汎用化して[[データアクセス]]になった。



***[[:i/ページ主体の設計]] [#q138cd45]
Wiki構築をページで行なうという発想。
ページの仕様が大きくなる。



***[[:i/Webページのテンプレートは特定のページに書く]] [#c4ee467b]
条件別のページテンプレート。言語別とか。
***[[:i/増殖するページ]] [#g0a21fb1]
ページの元になるページ。ログなど自動生成されるデータのテンプレート。
(ヘッダーなど)通常のテンプレートと異なるのは、テンプレートを穴埋めした後に保存する点。



***[[:i/テンプレートは制限するものではない]] [#k86f3c03]
入力用テンプレートはUI要素として実装。編集ビューではなく閲覧ビューでのその場編集に有効。
→ [[:i/UI要素]]




***[[:i/利用者のページ化]] [#t98d478d]
ページはデータベース。利用者はページ。ページの移動が利用者の異動。
移動で上位ページが変われば(属性/継承によって)その利用者のロールや権限も変わる。
***[[隠しページ]] [#u1b73b7b]
(コンテンツ用ではなく)システム用のページは隠しページにする。
***[[機能/分析>:i/機能#g2f99200]] [#dc9a77a2]
MediaWikiでの特別ページ。%%(ユーティリティページ)%%
***[[:i/ログはページに記録]] [#hce77106]
分析結果はページ自身に記録する。
***[[:i/ページの重さ]] [#o45d0a00]
Wikiの可視化。概要把握の機能とその表示。



***[[:i/最近更新されたページ]] [#i7902b3b]
システムが作るページ。実体がページ/要素で、その出力が動的なページリスト。なので「システムが書き込むのはページ/裏だけ」のルールと衝突しない。
**実装案 [#v0cd5027]
// ------------------------------------------------------------------------------------------------------------------------

***[[:Done/ページ型/スレッド/データコンテキスト/記法定義まとめ]] [#q97ea804]
***[[ルートページ]] [#m80fde0f]
ページはページでまとめる。どうまとまるかはページ/名前次第なので、ルートページはそういう名前を持つ(だけの)ページということになる。

***[[:i/ページと他オブジェクトとの関わり合い]] [#o3452815]
ページ同士の関わりはなし。ページ名でまとめる。順不同パスに共通点があれば下位展開でまとめて表示可能。
下位展開ビューでの順序情報に他のページ名が含まれるくらい。その情報は消えても間違っていてもいい。表示順序が変わるだけ。

***[[:i/ページを保存するときはオブジェクトだけ]] [#qfa54968]
NotationText(WikiText)は要素が分担して保存する。
記法テキスト以外でも書き換えられるようにするため。この方法でもテキストで書き換えられる。

***[[:i/アクセスログはページの属性]] [#k00303e2]
ログの出力先を特定の(設定された)ページに。
でもシステムが書き込むのはページ/裏のはず。ページ/裏の1つに追記していく。アクセスログ専用のページ/裏。

%%裏だけを使うページがあってもいいかも?%%



***[[:i/クラスごとにページを]] [#h50fe0ba]
アクセスログもクラス名を冠したページ(のページ/裏)に?

***[[:/セクションをやめてページのネストで]] [#d829ef1d]
ページ名でつながるネスト構造。オブジェクト間はつながっていない。
上位ページを閲覧すると下位ページも見える。上位と下位について→ [[順不同パス]]
***[[:i/テンプレートはページ名]] [#t4fd31e8]
独立したページにすると機能充実。その反面、テンプレートにも権限(錠)を設定できてしまう。運用の問題にしておく。


***[[:i/属性と内容]] [#r359cfe9]
扱いは同じ。操作に必要な権限が違う。
ページ/内容、ページ/属性、ページ/裏。
***[[:i/検索結果でページを作れば「検索結果の検索結果」が可能に]] [#q85af08c]
まず見るべきところを「まず見て欲しいページ」という''ページ名で''見せることができる。更新される動的まとめ。

***[[:i/権限を判定するケース]] [#t6879152]
ページが関わるところ全てとユースケース。つまりいたるところ。権限の参照を速くすれば高速化できそう。
***[[:i/添付ファイルもページ]] [#kc2c0e30]
ページは添付ファイルのアダプター。

***[[:i/ページにtoJsonを]] [#pca316eb]
実装。


***[[:i/ページの1行目は特別]] [#n3d4e945]
実装。

***[[:i/ページは要素でもある]] [#x5cde9ca]
実装。

***[[:i/ページ内容と属性領域の違い]] [#bc3ca9a4]
実装。
**コード [#b9332bbb]
[[code*:364]] Perl
// ------------------------------------------------------------------------------------------------------------------------

**ページ/ [#ba1b4b58]
#lsx(new=true)

**[[tag:ページ]] [#w8d62be4]
#lsx(tag=ページ,new=true)

**まだまとめてない [#z5f15e45]
// ------------------------------------------------------------------------------------------------------------------------

***[[:i/仮想ページという考え方]] [#i88a35cc]
***[[:/ページ属性の型は文字列だけ]] [#c1d81e26]
***[[:i/ページ属性の接頭辞をやめる]] [#xbb9544d]
***[[:i/ページ属性はセレクターで読む]] [#t27decc8]
***[[:i/ページ属性はデータアクセスで参照]] [#ld96e8d0]
***[[:i/属性領域も複数に]] [#q501cf6d]
***[[:/権限領域のページ名]] [#k6c25b29]
***[[:i/継承にも錠と鍵を]] [#m1f49938]
***[[:i/見出しかダガーがその見出しへのリンク]] [#abfd2299]
***[[:Done/Twitter連携するときページ名をどうするか]] [#y4ed2841]

**いらない [#x54b71de]
// ------------------------------------------------------------------------------------------------------------------------

***%%[[:/ユーティリティページ]]%% [#g470d3aa]
***%%[[:/ページはメモ化しない]]%% [#k7edab34]
ページ/要素は制御されないので、外からはメモ化可能か分からない。
***%%[[:/DBクラスにページ検索の機能を]]%% [#f890a445]
***%%[[:/X/PageFactory]]%% [#c81bc4bd]
***%%[[:/プラグインが使えるフック]]%% [#u787d86f]
***%%[[:/ページをセクションと比べると…]]%% [#o6f1dd71]
***%%[[:/ページを更新できるのは自身だけ]]%% [#z052431a]
***%%[[:/リストとハッシュ]]%% [#x3f32980]
***%%[[:/保存は入力されたままのWikiTextか]]%% [#ud576605]
***%%[[:/ページの出力はHTML]]%% [#q44452f7]
***%%[[:/ページを細切れにするのは隠蔽すべき?]]%% [#zae94000]
***%%[[:/対象範囲]]%% [#u4118be6]
***%%[[:/機能/複数ページ組み合わせ]]%% [#de61a854]
***%%[[:/自動生成されるページ]]%% [#n0830a1e]

***%%[[:/埋め込めないプレースホルダーは非表示]]%% [#a5855115]
*ページ/ [#ba1b4b58]
- ページでやること

#ls()