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

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

ページでやること
X/Page


  1. ページ
    1. ページとは
    2. ページの実装
    3. ページの構造
      1. ページはページの複合体
    4. ページを操作するためのUI
    5. UIになるページ
    6. Wiki構築のためのページ
    7. 実装するには
  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. 埋め込み式ページ[?]
      4. HTMLを直接書けるページ
      5. :i/俺のモノは俺のモノ
      6. :i/見出しをページのタイトルに
    4. ページを操作するためのUI
      1. :i/UI/タイトルとURLをコピペ[?]
      2. :i/存在しないページは無い
      3. :Done/ページ削除のUI
    5. UIになるページ
      1. :i/UI要素
      2. :i/増殖するページ
      3. :i/テンプレートは制限するものではない
      4. :i/ヘッダーの使い道
    6. Wiki構築のためのページ
      1. :i/利用者のページ化
      2. :i/隠しページ[?]
      3. :i/機能/分析[?]
      4. :i/ページの重さ
      5. :i/最近更新されたページ
      6. :i/Wiki構築をページで
      7. :i/ページ主体の設計
      8. :i/Webページのテンプレートは特定のページに書く
    7. 実装
      1. :Done/ページ型/スレッド/データコンテキスト/記法定義をまとめて設計[?]
      2. ルートページ
      3. :i/ページと他オブジェクトとの関わり合い
      4. :i/ページを保存するときはオブジェクトだけ
      5. :i/アクセスログはページの属性
      6. :i/クラスごとにページを
      7. :Done/セクションをやめてページのネストで[?]
      8. :i/テンプレートはページ名
      9. :i/ページタイトルにユースケース別接頭辞[?]
      10. :i/属性と内容
      11. :i/検索結果でページを作れば「検索結果の検索結果」が可能に
      12. :i/権限が影響するもの[?]
      13. :i/添付ファイルもページ
      14. :i/ページにtoJsonを
      15. プロトタイピング[?]
      16. :i/ページの1行目は特別
      17. :i/ページは要素でもある
      18. :i/ページ内容と属性領域の違い
    8. コード
    9. まだまとめてない
      1. :ToDo/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。どのページに何を書いてどれとどれをリンクするかがWikiの構造。現在では情報は検索で探すものになっているので構造は重要でない。

ページの実装 Edit

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

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

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

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

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

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

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

ページの構造 Edit

#d7770632

ページページの複合体 Edit

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

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

Edit

Edit

#afb81108

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

#m7402a92

UIになるページ Edit

#a6ce55e1

Wiki構築のためのページ Edit

#pfc0f372

実装するには Edit

ページ自体の機能は永続化くらい。豊富な機能はページ/要素に委譲したり、ページを扱う側で実装。

#v0cd5027

: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の拡張容易点。要素だけで対応できない拡張はページ/型で。

埋め込み式ページ[?] Edit

ページ/型の1つ。
用途が決まっているなら指定なしに(デフォルトで)そうなるように。

HTMLを直接書けるページ Edit

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

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

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

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

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

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

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

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

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

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

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

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

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

:i/UI/タイトルとURLをコピペ[?] Edit

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

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

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

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

:Done/ページ削除のUI Edit

ページ/削除

UIになるページ Edit

:i/UI要素 Edit

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

:i/増殖するページ Edit

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

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

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

:i/ヘッダーの使い道 Edit

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

ヘッダー

Wiki構築のためのページ Edit

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

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

:i/隠しページ[?] Edit

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

:i/機能/分析[?] Edit

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

:i/ページの重さ Edit

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

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

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

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

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

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

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

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

条件別のページテンプレート。言語別とか。
見解を使うといい。

実装 Edit

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

ルートページ Edit

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

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

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

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

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

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

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

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

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

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

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

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

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

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

:i/ページタイトルにユースケース別接頭辞[?] Edit

ブラウザーでの履歴検索でも役立つ。

:i/属性と内容 Edit

扱いは同じ。でも分けた運用もできる。
ページ/内容ページ/属性ページ/裏。

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

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

:i/権限が影響するもの[?] Edit

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

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

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

:i/ページにtoJsonを Edit

実装。

プロトタイピング[?] Edit

実装。

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

実装。

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

実装。

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

実装。

コード Edit

code*:364 Perl

まだまとめてない Edit

:ToDo/Twitter連携するときページ名をどうするか[?] Edit

いらない Edit

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

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

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

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

:/X/PageFactory Edit

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

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

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

:/リストとハッシュ Edit

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

:/ページの出力はHTML Edit

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

:/対象範囲 Edit

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

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

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

ページ/ Edit