• 追加された行はこの色です。
  • 削除された行はこの色です。
#norelated

**ページとは [#x0bbed95]

ページは情報を持ち、アクセス制御をするもの。アクセス制御するので見る者によって与える情報を変えることになる。見る者とは利用者、他のページ/要素、よそのシステム。
ページ/名前 × アクセス制御 → 情報。書き込むときは逆方向。

アクセス制御を表すのは権限。情報を表すのはページ/要素。
つまり、ページ/名前 × ページ/要素 × 権限を対応付けるのがWiki。


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

ページはファイルやデータベースに例えることができる。利用者が書いたことを記録してアクセス制御をするもの。そのページを集めたのがWiki。どのページに何を書いてどれとどれをリンクするかがWikiの構造。現在では情報は検索で探すものになっているので構造は重要でないとされているが、構造も情報のひとつなので、利用しない手はない。
***型 [#e26eed04]
ページには型がある。ページ/型を設定すればHTMLを直接書いたり、各種記法のレンダリング後(HTML)を貼っただけのページも利用可能。
→ [[:i/HTML許可ページ]]
→ [[:i/HTML書き込み]]

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



† [[#te598c37]]
**ページの構造 [#mcaa3b41]

ページの内容(本文)はページ/要素だけ。要素間ではネストするけど、ページ内にページは現れない。
下位展開では名前に共通部分があるページをまとまりと''見なして''レイアウト上で並べるだけ。ページ間のつながりではない。明示的リンクでページ間の関連性を示すことはできる。自動検出ではない関連性。

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

:外部名4区分|
利用者に見えるほうのページ名。(もう一方は内部名)
4区分とはスペース/[[ページ/名前]]/見解/版(統一感がない。統一感を出す別名…名前空間?ウィキ名?/項目名/見解名/版名)

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

版のリストが[[ページ/履歴]]。
版名以外を特定しなければページ/履歴は得られないということ。

ページ/名前のほかにWeb上でのページタイトル(<title>...</title>)もある。これもページ/内容の見出し要素から自動的に生成される。

† [[#afb81108]]
*** [[:i/ページ本文も属性のひとつ]] [#i76b1baa]



**ページを操作するためのUI [#seca03a4]
ページの管理は名前で行なう。名前の変更でページの移動や削除まで実施できる。そういうわけで(編集作業のために)閲覧中のページ名をコピペしやすくする必要がある。

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



***ページの削除方法 [#bc67cd19]
ページの削除も編集で。ページ名を(空)にすれば削除手続きになる。削除は編集なので、編集と同様に編集/承認が必要。その後実際の削除が行なわれる。(とは言っても(空)を示す最新版が作られるだけ)




† [[#m7402a92]]
**UIになるページ [#i4d79437]
UI化するページ/要素。
特定のページ/型を持つページ有効。→ [[:i/UI要素]]

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

***ページの元にするためのテンプレート [#b94b7db5]
† [[:i/増殖するページ]]
利用者がページ/作成をリクエストするほか、ログが増えるときにも使われる。投稿時に適用されるテンプレートなので、適用後はドキュメントに混ざって再利用はできなくなる。

***複数ページをまとめる枠 [#ibe8d757]
下位展開時の枠や、複数のユースケースを一度に呼ばれたときの枠も「テンプレート」と呼んでいるけど「レイアウト」にしたほうが良さそう。複数のビューを1つのWebページにする。枠/枠1つぶんのリクエストはそれぞれ別。枠の数だけリクエストしてもらう。
† [[:i/ヘッダーの使い道]]
† [[:i/ユースケースチェイン]]
† [[ヘッダー]]

***テンプレートや見解をクライアントに合わせて差し替えれば多言語対応に。 [#z0e59289]
テンプレートにも見解がある??
† [[:i/Webページのテンプレートは特定のページに書く]]

† [[#a6ce55e1]]
**Wiki構築のためのページ [#rc051169]
管理者によるカスタマイズ。ページを作ることで実現できるように。

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

--------------------------------------------------

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



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

分析ページは通常のページと実装が異なっていても、ページとして扱えるようにしたい。そのため呼び出し方を統一する。ページ名指定でページを参照すれば分析結果が通常のページの形式で分かるように。多くの場合、テンプレートを埋め込んだりするのでページ/要素として実装する。それを配置したページが分析ページ。管理者に作ってもらう。情報を記録する必要があるならページに記録する。† [[:i/ログはページに記録]]

[[:i/ページの重さ]]も特別ページの1つ。
Wikiの可視化。概要把握の機能とその表示。

[[:i/最近更新されたページ]]も特別ページ。実体がページ/要素で、その出力が動的なページリスト。


† [[#pfc0f372]]
**ページを実装するには [#s2e64fa6]
ページ自体の機能は永続化くらい。豊富な機能はページ/要素に委譲したり、ページを扱う側で実装。
[[ページでやること]]と[[X/Page>X#g329967c]]はページクラスの仕様。

† [[#v0cd5027]]

----

ページは情報をページ/要素の入れ子にして保持する。永続化の対象はページ(と含まれるページ/要素)だけ。情報を生かすのはページ/要素自身とそれを使う側の問題なのでページは個々の要素を区別しない。ページが持つ機能は「NotationText(記法を使ったテキスト)←→ページ/要素」の相互変換と保持と参照くらい。

ページ/要素→NotationTextのとき、ページ/型が「ページ/要素」を表す値のとき、データコンテキストに合った変換を行なう。「行なう」と言ってもページが行なうのはページ/要素にデータコンテキストの型を伝えるくらい。
- ページ/要素を表す値は application/x-X-document とか application/prs.X.document といった感じにして。
- データコンテキストのうち、記法を使ったテキスト(NotationText)を表す値は text/x-wikicreole, text/x-markdown, text/x-web-markdown, ... など。
-- その他のデータコンテキスト型は text/csv, ... など。

ページ/要素←NotationTextのときの変換はNotationTextで使われている記法系とページ/要素次第。ページ自体は介入しない。

***ページとページ/要素 [#x3a5c2d4]
主体はページ/要素が持つ情報(利用者が書いたこと)。それを組み合わせるのがページ。ページを組み合わせるのがWiki。ページ/要素が中心。

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

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

***ページの用途 [#r8dc39d3]
Wikiの構成要素としての使われ方
[[:i/属性と内容]]の実態は同じ。[[:i/ページ内容と属性領域の違い]]は操作に必要な権限。いずれも実体はページ。
[[:i/権限が影響するもの]]はページが関わるところ全てと、ユースケース。つまりいたるところ。権限の参照を速くすれば高速化できそう。

利用者からの使われ方/用途は決めていない。「何を書き込まれるか」と書き込みから生じた要素の実装次第なので定義不可。ページを操作するAPIは用意するけど用途は未定義。
利用者にとってのページ(UI上で見えるページ)は複数のページの集約。ページ/内容、ページ/属性、ページ/裏、ページ/権限。さらに内容はドキュメント/スレッド1/スレッド1-1/スレッド2/…と分かれている。いずれも実体は独立したページ。

***ページの上下関係 [#z0b442cd]
1つの上位ページで複数の下位ページをまとめることができる。ただページ/名前に共通部分を作るだけ。ページ間に関連なし・名前だけつながりのネスト構造。オブジェクト間はつながっていない。

ページを上下関係でまとめるとページ/属性の継承(属性/継承)や下位展開の対象になる。

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

上下関係で最上位にあるのはルートページ。
:ルートページ|
…は全てのページの上位に位置するページ。
…は全てのページに共通する名前 ''/'' を持つ(だけの)ページということ。
…の階層レベルは0。単語1つでレベル1。

*** [[:i/なんでもページに記録]] [#v091f421]
***ほか [#adb264af]
- [[:i/ページを保存するときはオブジェクトだけ]]。NotationTextは要素が分担して永続化する。ページ/要素を記法と切り離す。
- [[:i/ページタイトルにビュー別接頭辞]]を入れておくと、ブラウザーの履歴検索でも役立つ。
- [[:i/ページの1行目は特別]]で、ページ/名前の元になる。ページタイトルになるのは最初の見出し。ページ/内容に全てを含める。コピペ1回でページ作成可能に。→ [[:Done/ページ名とページタイトルの書き方]]
- [[:i/プロトタイピング]]には以前行なったページの実装がある。
- → [[:Done/ページ型/スレッド/データコンテキスト/記法定義まとめ]]

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