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


必要性ついて疑う余地なし。Wikiはリクエストされたページを返すもの。Xでも同じ。
関わる機能をどう簡潔に実現するかが問題。






Wikiはページの集約。利用者はページ/内容にしか興味はない。
Wikiの情報もデータもすべてページに記録する。

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

----

#contents

*ページ [#g90e2d85]
**ページとは [#x0bbed95]

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

ページはファイルやデータベースに例えることができる。利用者が書いたことを記録してアクセス制御をするもの。それを集めたのがWiki。どのページに何を書いてどれとどれをリンクするかがWikiの構造。現在では情報は検索で探すものになっているので構造は重要でない。
**ページの実装 [#s2150053]

ページの記録はネスト可能なページ/要素に変換される。実際に保存されるのはページ/要素だけ。それをどう特別扱いするかは使う側と要素自身の問題なので、ページ自体にはNotationText(記法を使ったテキスト)←→ページ/要素の変換と記録、それぞれの参照くらいしか機能がない。

- NotationTextのMIMEタイプは text/x-wikicreole, text/x-markdown, ... など。
- ページ/要素のMIMEタイプは application/x-X-document とか application/prs.X.document といった感じにして。

情報はページ/要素。ページはそれを記録するもの。主体はページ/要素が持つ情報(利用者が書いたこと)。ページはそれを利用しやすくするもの。Wikiはページを操作できるようにするもの。情報中心の設計。
主体はページ/要素が持つ情報(利用者が書いたこと)。それを組み合わせたり記録したりするものがページ。ページを組み合わせるのがWiki。情報中心の設計。

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

Xのモデル層にはページとページ/要素くらいしかない。永続化するのはこれらのオブジェクトくらい。よそのアプリと連携するためのモデルクラスはできるかも知れないけど。ページとページ/要素には共通点がある。どちらもデータコンテキストに対応。

ページの使われ方…用途は決めていない。何を書き込まれるか…要素次第なので定義不可。ページを操作するAPIは用意するけど用途は未定義。

→ [[:Done/ページ型/スレッド/データコンテキスト/記法定義をまとめて設計]]
**ページの構造 [#mcaa3b41]

***ページはページの複合体 [#ye8afaca]
- ドキュメントモード
- スレッドモード
- ページ/属性領域
- ページ/裏領域
- ページ/権限領域

…などをそれぞれ1つのページで実現。ページ自体にページ/属性領域はない。
「ページ」と呼ぶのは上記ページの複合体。
[[ページ/内容]]と呼ぶのはドキュメントとスレッド。

ページの集約がWiki。個々のページにはページ/名前がある。

***外 [#r1272a4d]
- 外部名4区分
-- スペース/[[ページ/名前]]/見解/版
-- (ウィキ名/項目名/見解名/版名)
- 実体は版
- 版のリストが[[ページ/履歴]]
- ページ/名前はページ内容から自動生成。ページ内容の一部をページ名にする。

***内 [#r0897783]
- ドキュメント
- スレッド
- 属性(複数)
-- 属性領域名で区別
- 裏属性(複数)
-- 裏属性名で区別




*[[:t/ページ]]の断片 [#v215978a]

まとめる前の原案と、参考になる点について言及したもの。
**ページとは [#te598c37]
***[[:i/派閥はページ←Amazonでの商品にあたるもの]] [#i6758216]
派閥は無くなったけど、ページがAmazonの商品にあたるのは変わらない。

ほしい物リストに登録すれば備忘録になったり価格の変動を通知してくれる点も、ページにレビューが付く点も。

ほしい物リストから生成されたおすすめ商品や、それらを集めたマイストアも参考になりそう。登録したページでサブセットWikiを作っておいて、それを何かに利用したり?
***[[:i/ページは…]] [#k041008c]
> データ保存場所
>
RIGHT:[[:i/ページは…]]

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

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

入れ子(ネスト)にしないのは埋め込みができるから。クラス定義ではネスト不可。でも閲覧時の埋め込み解決後にネストしているかのように見えるのはあり。
***[[:i/ページとは]] [#i097cab3]
ページ内部は要素のリストでも、ページ要素ごとにデータ構造が違う。
ページはデータベースを集めたもの。ページ/要素1つが1つの型を持つデータベース。RDBのテーブルのような。

→ [[フレームワーク/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の拡張容易点。要素だけで対応できない拡張はページ/型で。



***[[埋め込み式ページ]] [#r455de51]
%%ページ/型の1つ。%%
用途が決まっているなら指定なしに(デフォルトで)そうなるように。
***HTMLを直接書けるページ [#i746c5ac]
→ [[:i/HTML許可ページ]]
→ [[:i/HTML書き込み]]

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

この型を管理者だけの物にするには?権限設定では属性値(ページ/型の値)を制限できない。
→「特定のページ/型を使わせない」のは不可能。

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

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

ページ/属性は複数に分けて、一部は誰でも変更可能にする必要があるかも知れない。
RIGHT:[[:t/属性]]



***[[:i/俺のモノは俺のモノ]] [#j8a9a00c]
ページに書かれた情報の権利/権限。
権限設定、権利表明の''コマンド''。それと紹介文にも。


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

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

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

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



**ページを操作するためのUI [#m7402a92]
// ------------------------------------------------------------------------------------------------------------------------

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

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

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



***[[:Done/ページ削除のUI]] [#ob0cfa17]
→ [[ページ/削除]]



**UIとしてのページ [#a6ce55e1]
// ------------------------------------------------------------------------------------------------------------------------

***[[:i/UI要素]] [#k3fbe5a1]
UI要素を配置するためのページ/型が必要。その型のページに配置しないとUI要素は有効にならない。



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



**Wiki構築のためのページ [#pfc0f372]
// ------------------------------------------------------------------------------------------------------------------------

***[[:i/隠しページ]] [#u1b73b7b]
(コンテンツ用ではなく)システム用のページは隠しページにする。



***[[:i/機能/分析]] [#dc9a77a2]
MediaWikiでの特別ページ。%%(ユーティリティページ)%%



***[[:i/ページの重さ]] [#o45d0a00]
Wikiの可視化。概要把握の機能とその表示。



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



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



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



***[[:i/Webページのテンプレートは特定のページに書く]] [#c4ee467b]
条件別のページテンプレート。言語別とか。
→見解を使うといい。



**その他の用途 [#secc02fb]
// ------------------------------------------------------------------------------------------------------------------------

***[[:i/利用者のページ化]] [#t98d478d]
ページはデータベース。ページは利用者。ページの移動が利用者の異動。
移動で上位ページが変われば(属性/継承によって)その利用者のロールや権限も変わる。



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



***[[:i/機能/下書き]] [#ha5342e0]
積極的なリンクを避ける特殊なページ。



***[[:Done/ブログや掲示板として利用できるか]] [#pd40dcca]
ページ構成(ページ/要素の組み合わせ)で。運用の問題。



***[[:i/new機能を標準に]] [#bc65f533]
ページ名とページの更新日時を抱き合わせに。
ページ名ではなくページ自体を扱うようにして。



***[[:i/ヘッダーの使い道]] [#c4f18084]
複数のユースケースを一度に呼んだときにも有効。→ [[:i/ユースケースチェイン]]
これもページ統合の仕組みの一種。

→ [[ヘッダー]]



***[[:i/サブセットWikiで別物サイト生成]] [#we10657e]
権限/拒否判定に加えて検索結果のページセットも反映させて。権限/拒否判定ではページセットを利用する予定。同じパターンのコードが増える程度。自動リンク化やページ一覧の動的生成にどう影響するのかもまったく同じ。
→ [[:Done/サブセットモードの解除操作]]
→ [[:i/常にサブセットWiki]]



**実装 [#v0cd5027]
// ------------------------------------------------------------------------------------------------------------------------

***[[:Done/ページ型/スレッド/データコンテキスト/記法定義をまとめて設計]] [#q97ea804]

***[[ルートページ]] [#m80fde0f]
ページはページでまとめる。どうまとまるかはページ/名前次第なので、ルートページはそういう名前を持つ(だけの)ページということになる。

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

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

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

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



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

***[[:Done/セクションをやめてページのネストで]] [#d829ef1d]
ページ名でつながるネスト構造。オブジェクト間はつながっていない。
上位ページを閲覧すると下位ページも見える。上位と下位について→ [[順不同パス]]

***[[:i/テンプレートはページ名]] [#t4fd31e8]
独立したページにすると機能充実。その反面、テンプレートにも権限(錠)を設定できてしまう。運用の問題にしておく。

***[[:i/ページタイトルにユースケース別接頭辞]] [#rdbd097e]
ブラウザーでの履歴検索でも役立つ。

***[[:i/属性と内容]] [#r359cfe9]
扱いは同じ。でも分けた運用もできる。
ページ/内容、ページ/属性、ページ/裏。

***[[:i/検索結果でページを作れば「検索結果の検索結果」が可能に]] [#q85af08c]
まず見るべきところを「まず見て欲しいページ」という''ページ名で''見せることができる。更新される動的まとめ。

***[[:i/権限が影響するもの]] [#t6879152]
ページが関わるところ全てとユースケース。つまりいたるところ。権限の参照を速くすれば高速化できそう。

***[[:i/添付ファイルもページ]] [#kc2c0e30]
ページは添付ファイルのアダプター。

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

***[[プロトタイピング]] [#e6a7d9c7]
実装。

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

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

***[[:i/ページ内容と属性領域の違い]] [#bc3ca9a4]
実装。


**コード [#b9332bbb]
[[code*:364]] Perl
// ------------------------------------------------------------------------------------------------------------------------



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

***[[:ToDo/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()