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

ページでやること
X/Page


  1. ページ
    1. ページとは
      1. メタファー
      2. 権限を独占できる
    2. ページの構造
      1. ページの組み合わせ方
      2. :i/ページ本文も属性のひとつ
    3. ページを操作するためのUI
      1. ページの削除方法
    4. UIになるページ
    5. UIになるページ/テンプレート
      1. 入力用のテンプレート
      2. ページの元にするためのテンプレート
      3. 複数ページをまとめる枠
      4. テンプレートや見解をクライアントに合わせて差し替えれば多言語対応に。
    6. Wiki構築のためのページ
      1. いろいろなカスタマイズ
      2. カスタマイズの動機になる情報を載せるページ
    7. ページを実装するには
      1. ページとページ/要素
      2. ページの用途
      3. ページの上下関係
      4. :i/なんでもページに記録
      5. ほか
      6. 関連
  2. :t/ページより
    1. ページとは
      1. :i/派閥はページ←Amazonでの商品にあたるもの
      2. :i/ページは…
      3. :i/ページとは
      4. :i/ページと要素は似ている[?]
      5. :i/ページの属性は下位が豪華、内容は上位が豪華
      6. :i/ページはファイルと類似
      7. :i/ページは機能のDB
      8. :i/ページは要素のインターフェイス
    2. ページの内部
      1. :Done/スレッドモードは不要
      2. :Done/ページの中のページは不可か
      3. :i/ページ内容がオブジェクト構成を表す
    3. ページの性質
      1. :i/BracketNameは不要
      2. :i/ページに型を
      3. HTMLを直接書けるページ
      4. :i/俺のモノは俺のモノ
      5. :i/見出しをページのタイトルに
    4. ページを操作するためのUI
      1. →:タイトルとURLをコピペ
      2. :i/存在しないページは無い
      3. :Done/ページ削除のUI
    5. UIになるページ
    6. Wiki構築のためのページ
      1. :i/Wiki構築をページで
      2. :i/ページ主体の設計
      3. :i/Webページのテンプレートは特定のページに書く
      4. :i/増殖するページ
      5. :i/テンプレートは制限するものではない
      6. :i/利用者のページ化
      7. 隠しページ
      8. 機能/分析
      9. :i/ログはページに記録
      10. :i/ページの重さ
      11. :i/最近更新されたページ
    7. 実装案
      1. :Done/ページ型/スレッド/データコンテキスト/記法定義まとめ
      2. ルートページ
      3. :i/ページと他オブジェクトとの関わり合い
      4. :i/ページを保存するときはオブジェクトだけ
      5. :i/アクセスログはページの属性
      6. :i/クラスごとにページを
      7. :/セクションをやめてページのネストで
      8. :i/テンプレートはページ名
      9. :i/属性と内容
      10. :i/検索結果でページを作れば「検索結果の検索結果」が可能に
      11. :i/権限を判定するケース
      12. :i/添付ファイルもページ
      13. :i/ページにtoJsonを
      14. :i/ページの1行目は特別
      15. :i/ページは要素でもある
      16. :i/ページ内容と属性領域の違い
    8. コード
    9. まだまとめてない
      1. :i/仮想ページという考え方
      2. :/ページ属性の型は文字列だけ
      3. :i/ページ属性の接頭辞をやめる
      4. :i/ページ属性はセレクターで読む
      5. :i/ページ属性はデータアクセスで参照
      6. :i/属性領域も複数に
      7. :/権限領域のページ名
      8. :i/継承にも錠と鍵を[?]
      9. :i/見出しかダガーがその見出しへのリンク
      10. :Done/Twitter連携するときページ名をどうするか
    10. いらない
      1. :/ユーティリティページ
      2. :/ページはメモ化しない
      3. :/DBクラスにページ検索の機能を
      4. :/X/PageFactory
      5. :/プラグインが使えるフック
      6. :/ページをセクションと比べると…
      7. :/ページを更新できるのは自身だけ
      8. :/リストとハッシュ
      9. :/保存は入力されたままのWikiTextか
      10. :/ページの出力はHTML
      11. :/ページを細切れにするのは隠蔽すべき?
      12. :/対象範囲
      13. :/機能/複数ページ組み合わせ
      14. :/自動生成されるページ
      15. :/埋め込めないプレースホルダーは非表示
  3. ページ/

ページ Edit

ページとは Edit

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

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

メタファー Edit

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

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

Edit

ページにはがある。ページ/型設定すればHTMLを直接書いたり、各種記法のレンダリング後(HTML)を貼っただけのページも利用可能。
:i/HTML許可ページ
:i/HTML書き込み

管理者のみページ/型:HTMLを使えるようにするには属性値に「ページ/型をHTMLにできる」といった値を設定可能にする。運用の問題
:Done/ページ型/スレッド/データコンテキスト/記法定義まとめ#o051e5a4

権限を独占できる Edit

ページ作成者には以降の編集を自分だけで行なう権利がある。
全ての利用者には権限があって、その権限編集可能なページがある。
:i/俺のモノは俺のモノ

#te598c37

ページの構造 Edit

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

ページの組み合わせ方 Edit

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

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

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

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

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

#afb81108

:i/ページ本文も属性のひとつ Edit

ページを操作するためのUI Edit

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

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

ページ削除方法 Edit

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

#m7402a92

UIになるページ Edit

UI化するページ/要素
特定のページ/型を持つページ有効。→ :i/UI要素

UIになるページ/テンプレート Edit

閲覧時に適用されるテンプレートヘッダー/フッター/常設メニューを作るのに使う。

入力用のテンプレート Edit

複数のUI要素を集めたテンプレートは「入力用テンプレート」とも呼べる。別名フォームテンプレート」。閲覧ビューでの編集UIその場編集UI)としても利用する。
:i/UI要素
:i/テンプレートは制限するものではない

ページの元にするためのテンプレート Edit

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

複数ページをまとめる枠 Edit

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

テンプレート見解クライアントに合わせて差し替えれば多言語対応に。 Edit

テンプレートにも見解がある??
:i/Webページのテンプレートは特定のページに書く

#a6ce55e1

Wiki構築のためのページ Edit

管理者によるカスタマイズ。ページを作ることで実現できるように。

カスタマイズの手順。

  1. プラグインを導入。プラグインではないページ/要素ビルトイン要素)もある。
  2. その設定(特定のページ)を書き換える。
  3. プラグインビルトイン要素ページ上に配置。



いろいろなカスタマイズ Edit

カスタマイズの動機になる情報を載せるページ Edit

† :i/機能/分析[?]
MediaWikiでの特別ページのように管理に役立つ情報を載せるページ(ユーティリティページ

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

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

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

#pfc0f372

ページを実装するには Edit

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

#v0cd5027


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

ページ/要素NotationTextのとき、ページ/型が「ページ/要素」を表す値のとき、データコンテキストに合った変換を行なう。「行なう」と言ってもページが行なうのはページ/要素データコンテキストを伝えるくらい。

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

ページページ/要素 Edit

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

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

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

ページの用途 Edit

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

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

ページの上下関係 Edit

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

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

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

上下関係で最上位にあるのはルートページ

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

:i/なんでもページに記録 Edit

ほか Edit

関連 Edit

ページ関連のアイデア目録。

:t/ページより Edit

まとめる前の原案と、ページの参考になる点について言及したもの。

ページとは Edit

:i/派閥はページ←Amazonでの商品にあたるもの Edit

派閥は無くなったけど、ページがAmazonの商品にあたるのは変わらない。

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

ほしい物リストから生成されたおすすめ商品や、それらを集めたマイストアも参考になりそう。登録したページサブセットWikiを作っておいて、それを何かに利用したり?

:i/ページは… Edit

データ保存場所

利用者から送られてきたクエリーのうち、自身に関する部分だけは解釈できる

ページを)入れ子にはしない。

入れ子(ネスト)にしないのは埋め込みができるから。クラス定義ではネスト不可。でも閲覧時の埋め込み解決後にネストしているかのように見えるのはあり。

:i/ページとは Edit

ページ内部は要素のリストでも、ページ要素ごとにデータ構造が違う。
ページはRDBのテーブルページ/要素1つが1つのを持つフィールド。

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

:i/ページと要素は似ている[?] Edit

要素と同じ使い方ができても目的が違う。

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

:i/ページの属性は下位が豪華、内容は上位が豪華 Edit

継承とフォルダー式のまとめ。下位が上位を参照すると、下位が豪華になる。どう依存するかの違いでもある。

:i/ページはファイルと類似 Edit

ページ/属性ページ/裏に管理用データを持たせて。

:i/ページは機能のDB Edit

ページ/要素データアクセス。それをシリアライズして記法化。

:i/ページは要素のインターフェイス Edit

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

ページの内部 Edit

:Done/スレッドモードは不要 Edit

ドキュメントはスレッド投稿の1件に相当。それぞれ内部にページ/型を持つ。

ページの内部構造はページ/要素だけ。

:Done/ページの中のページは不可か Edit

ページ同士に関連は無し。

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

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

:i/ページ内容がオブジェクト構成を表す Edit

ページ要素の構成。要素要素の構成。それらを決めるのがページ/内容利用者ページを通して要素をあつかう。

ページの性質 Edit

:i/BracketNameは不要 Edit

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

:i/ページに型を Edit

Xの拡張容易点。要素だけで対応できない拡張はページ/型で。

HTMLを直接書けるページ Edit

:i/HTML許可ページ
:i/HTML書き込み

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

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

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

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

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

:i/俺のモノは俺のモノ Edit

ページに書かれた情報の権利/権限
権限設定、権利表明のコマンド。それと紹介文にも。

:i/見出しをページのタイトルに Edit

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

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

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


見出し本文のうち最初の1行をページタイトルに。

ページを操作するためのUI Edit

→:タイトルとURLをコピペ Edit

はてなフォトライフのフォトライフ記法欄のような。
ページ名のコピペ以外に内部リンクを作る方法があるなら不要。オートコンプリートとか。ドラッグ・ドロップで使えるクリップボードとか。
このコピペ機能の代わりにページ名逆リンク一覧にリンクするのもあり。クラシックWikiではそうなっているけどMediaWikiではそうなっていないので、どちらでもいい。

:i/存在しないページは無い Edit

UI上では内容が無くても関連情報はある。ページ名も情報のうち。
実装上はページの有無を気にしない。ページはSingletonのようなもの。

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

:Done/ページ削除のUI Edit

ページ/削除

UIになるページ Edit

それ用の要素を使って入力フォームを持つページを作ることができる。
→:UI要素

Wiki構築のためのページ Edit

:i/Wiki構築をページで Edit

設定項目をページに書ければいい。
汎用化してデータアクセスになった。

:i/ページ主体の設計 Edit

Wiki構築をページで行なうという発想。
ページの仕様が大きくなる。

:i/Webページのテンプレートは特定のページに書く Edit

条件別のページテンプレート。言語別とか。

:i/増殖するページ Edit

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

:i/テンプレートは制限するものではない Edit

入力用テンプレートUI要素として実装。編集ビューではなく閲覧ビューでのその場編集に有効。
:i/UI要素

:i/利用者のページ化 Edit

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

隠しページ Edit

(コンテンツ用ではなく)システム用のページ隠しページにする。

機能/分析 Edit

MediaWikiでの特別ページ(ユーティリティページ

:i/ログはページに記録 Edit

分析結果はページ自身に記録する。

:i/ページの重さ Edit

Wikiの可視化概要把握の機能とその表示。

:i/最近更新されたページ Edit

システムが作るページ。実体がページ/要素で、その出力が動的なページリスト。なので「システムが書き込むのはページ/裏だけ」のルールと衝突しない。

実装案 Edit

:Done/ページ型/スレッド/データコンテキスト/記法定義まとめ Edit

ルートページ Edit

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

:i/ページと他オブジェクトとの関わり合い Edit

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

:i/ページを保存するときはオブジェクトだけ Edit

NotationText(WikiText)は要素が分担して保存する。
記法テキスト以外でも書き換えられるようにするため。この方法でもテキストで書き換えられる。

:i/アクセスログはページの属性 Edit

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

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

:i/クラスごとにページを Edit

アクセスログもクラス名を冠したページ(のページ/裏)に?

:/セクションをやめてページのネストで Edit

ページ名でつながるネスト構造。オブジェクト間はつながっていない。
上位ページを閲覧すると下位ページも見える。上位と下位について→ 順不同パス

:i/テンプレートはページ名 Edit

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

:i/属性と内容 Edit

扱いは同じ。操作に必要な権限が違う。
ページ/内容ページ/属性ページ/裏。

:i/検索結果でページを作れば「検索結果の検索結果」が可能に Edit

まず見るべきところを「まず見て欲しいページ」というページ名見せることができる。更新される動的まとめ。

:i/権限を判定するケース Edit

ページが関わるところ全てとユースケース。つまりいたるところ。権限の参照を速くすれば高速化できそう。

:i/添付ファイルもページ Edit

ページ添付ファイルのアダプター。

:i/ページにtoJsonを Edit

実装。

:i/ページの1行目は特別 Edit

実装。

:i/ページは要素でもある Edit

実装。

:i/ページ内容と属性領域の違い Edit

実装。

コード Edit

code*:364 Perl

まだまとめてない Edit

:i/仮想ページという考え方 Edit

:/ページ属性の型は文字列だけ Edit

:i/ページ属性の接頭辞をやめる Edit

:i/ページ属性はセレクターで読む Edit

:i/ページ属性はデータアクセスで参照 Edit

:i/属性領域も複数に Edit

:/権限領域のページ名 Edit

:i/継承にも錠と鍵を[?] Edit

:i/見出しかダガーがその見出しへのリンク Edit

:Done/Twitter連携するときページ名をどうするか Edit

いらない Edit

:/ユーティリティページ Edit

:/ページはメモ化しない Edit

ページ/要素は制御されないので、外からはメモ化可能か分からない。

:/DBクラスにページ検索の機能を Edit

:/X/PageFactory Edit

:/プラグインが使えるフック Edit

:/ページをセクションと比べると… Edit

:/ページを更新できるのは自身だけ Edit

:/リストとハッシュ Edit

:/保存は入力されたままのWikiTextか Edit

:/ページの出力はHTML Edit

:/ページを細切れにするのは隠蔽すべき? Edit

:/対象範囲 Edit

:/機能/複数ページ組み合わせ Edit

:/自動生成されるページ Edit

:/埋め込めないプレースホルダーは非表示 Edit

ページ/ Edit