• 追加された行はこの色です。
  • 削除された行はこの色です。
RIGHT:[[:t/Wiki]] [[:t/実装]]

[[フレームワーク/WikiEngine]]より。

#contents

*やること [#b0ecaf87]

***フレームワーク/WikiEngine [#e202a9a0]
†[[フレームワーク/WikiEngine#be46ac08,WikiEngineとは]] [#v47ed41a]

+利用者 → フレームワーク/Webアプリケーション
クライアントアプリとユーザーエージェントの役目。リクエスト。
+フレームワーク/Webアプリケーション → フレームワーク/WikiEngine
クエリーの解析、セッションの用意など。
†[[プロトタイピング#d19defef,フレームワーク間の関係]]
+フレームワーク/WikiEngine → ページと要素
セッションページなどページ/要素のための環境を用意。ページが持つWikiTextからページ/要素の生成。
+ページ → ページ/要素
ページでやること。
+ページ/要素(各種機能)
各ページ/要素でやること。
+…
+フレームワーク/WikiEngine → フレームワーク/Webアプリケーション → 利用者
レスポンスをデコレーションしてそれぞれふさわしい形式にして。
†[[プロトタイピング#d19defef,フレームワーク間の関係]]

***[[:i/Tokenize対象はNotationText]] [#fed7ca6f]
NotationText解析・ページ/要素構築の仕組みを変更。


*これから考えること [#h0ad6a3d]

**[[X]] [#z799ea9d]
実装案。

RIGHT:[[:t/Wiki]] [[:t/X]] [[:t/実装]]



**連携相手になるページ/要素を指定する方法 [#hca262be]

***全てURIで [#xd4ba4da]
***参照記法は不要 [#zf9a4c9e]
全てURIで。埋め込みで使えれば参照記法は不要。

RIGHT:[[:t/URI]] [[:t/埋め込み]] [[:t/要素]]



***API向けパーマリンク [#k60b745d]
全てURIで参照するための仕組み。
InterWikiName、InterIncludeでも使うのでUI(=API)。


RIGHT:[[:t/URI]] [[:t/API]] [[:t/パーマリンク]]





**ページ/要素の導入と呼び出す仕組み [#b3132b75]
***プラグイン [#i6d4c004]
プラグインの仕組みはフレームワーク/WikiEngineのもの。
最も多いのはページ/要素のプラグイン。

†[[プラグインは既存クラスのプラグイン版]]

RIGHT:[[:t/プラグイン]] [[:t/管理]]
***記法の優先順位 [#w0db0d4e]
優先順位は表やリスト記法で特定のページに記述。
記述順が優先順。
正規表現→ページ/要素を複数記述。正規表現にもページ/要素にも重複があっていい。そうしたほうが設定しやすいし優先順位があるので解決できる。

RIGHT:[[:t/記法]] [[:t/管理]] [[:t/データアクセス]] [[:t/API]]


**ページから要素を作る方法 [#z75ea4bf]

***[[記法]] [#a1753617]
***記法の仕組み [#w848fd97]
[[:t/機能]]とその実装である[[:t/要素]]、それを呼び出す[[:t/記法]]。

†[[変換ルールはページ内で定義]]
†[[記法の書式]]


RIGHT:[[:t/記法]] [[:t/要素]] [[:t/機能]]



***WikiTextから得られるページ/要素 [#i327c2f7]
-Notations
[[:i/ページ/要素]]を表す記法
-AutoLink
[[自動リンク]]も記法。動的記法。
-Semantics
WikiTextを独占しない/消費しない記法
†[[検索用テキストを作るならページ要素で]]
-Plains
WikiText中の記法になっていない部分

RIGHT:[[:t/記法]] [[:t/要素]] [[:t/リンク]] [[:t/検索]]
**ページ/要素に提供するもの [#v26d9026]
***[[ページ/要素]] [#z86c0c6e]
***[[:i/ページ要素間の連携方法]] [#o15b3863]
***[[:i/要素に書き込む方法]] [#l9138c6d]

***[[:i/クラス別のセッションデータ]] [#i668dee7]
セッションをクラス間連携に使用するルール。
フレームワークの中で制御するので、個々の要素は値名と値を用意するだけ。簡単不自由なI/F.

†[[フレームワーク/WikiEngineでやること,ページ要素間の連携方法]]

RIGHT:[[:t/API]] [[:t/セッション]] [[:t/Wiki]] [[:t/セッション]]
***ページに記述されたとき、Chain of Responsibilityで? [#bc5af990]
%%リクエストされたページにある要素は全て呼ばれる。その中でどのクエリーをどう使うかは要素次第なので、別にChain of Responsibilityでなくてもいい。全ての要素がResponsibility.%%
%%ページではなくURLクエリーに記述されたときもChain of Responsibilityではない。Chain(連鎖)はするけど。%%
%%Androidのインテントのようなものでもない。送り先を決めてパラメーターを用意。戻り値の型も要求する。%%

----
%%機能使用時の記述は要素を表すキーワードと、要素が指定するキーワードで。1つのキーワードで複数の機能呼び出し可能。Androidのインテントのようなもので。処理できる機能1つが反応する。%%

%%処理可能かどうかの判定は機能ごとに優先順位ありで、機能内に優先度を記述しておく。%%

----
→リクエストされたページにある要素は全て呼ばれて、URLクエリーを自分なりに解釈する。いくつの要素が反応するかは不明。クエリーに反応できるものが反応する。
宛先要素を書いたり、その要素以外にはクエリーを渡さないといった制限は必要ない。リクエストに含まれるデータは対応する全ての要素に渡る。宛先を書くことで特定要素を確実に反応させるということはあるかも。いずれにせよデータを受ける要素自身が判断。
ネスト構造になっている要素間だけで有効なデータはある。引数と戻り値のようなもの。これは記述の通り。

RIGHT:[[:t/要素]] [[:t/実装]] [[:t/Wiki]] [[:t/インテント]] [[:t/ページ]] [[:t/URI]]
***[[:i/要素のインスタンスID]] [#b1ca6fdf]
getElementById()のようなAPIに必要。

RIGHT:[[:t/データアクセス]] [[:t/要素]] [[:t/実装]]
***クエリーにどう反応するか [#v2ea51d4]
***[[:i/クエリーにどう反応するか]] [#v2ea51d4]
要素の協調でリダイレクトをどう行なうか??

RIGHT:[[:t/要素]] [[:t/UI]] [[:t/実装]]



***[[:/プラグインが使えるフック]] [#hd18a058]
フックは不要。要素が動くトリガーは状況に依らない。状況次第なのはそれ以降の要素内の処理。つまり要素次第。

RIGHT:[[:t/要素]] [[:t/開発]]
***[[:i/ページのイテレーター]] [#vad5bbbb]
ページ/要素のスキャンはVisitorパターン。その中でページ/要素のイテレーター(これもページ/要素)を使っている。
例えば検索にヒットしてページのプレビューテキスト取得に。

ページのイテレーターならPage/Factoryが提供するといい。
いろいろな順番で。

RIGHT:[[:t/ページ]] [[:t/API]] [[:t/要素]]
**形式変換 [#l2cc9409]

***[[:i/フレームワーク/WikiEngineからの出力をレスポンスにする]] [#v2df05ce]

***[[ToWikitextはそのまま返す]] [#z1837b75]
***[[:i/ToWikitextはそのまま返す]] [#z1837b75]
ToGenericNotationText()


**セレクター/全てURIで [#dc8493ae]

***下位展開 [#u989dc3a]
***[[下位展開]] [#u989dc3a]
ビューの問題。閲覧時以外にもページを扱う場面ならどこでも起こる。

RIGHT:[[:t/ビュー]] [[:t/UI]]

***スタイルシートをページから生成 [#be33d4d8]
***[[:i/スタイルシートをページから生成]] [#be33d4d8]
データアクセス可能なのは埋め込み解決後のページ。
埋め込み前にアクセスできても煩わしいだけ。

WikiでWiki自身の設定を。


RIGHT:[[:t/設定]] [[:t/スタイル]] [[:t/埋め込み]] [[:t/データアクセス]]

***URLクエリーに置くデータ [#i23dcd1f]
***[[:i/URLクエリーに置くデータ]] [#i23dcd1f]
クエリー文字列にはよそに貼れるデータだけを。
年月が経っても有効なものを。

RIGHT:[[:t/URI]] [[:t/リクエスト]]

***[[名前の同一視#sa0f0121]] [#s515ccc6]
***[[:i/名前の同一視#sa0f0121]] [#s515ccc6]
括弧書き記法はビルトインのページ/要素。

RIGHT:[[:t/ビルトイン]] [[:t/要素]] [[:t/同一視]]

***負荷軽減に編集後の更新処理を分割 [#y453f2be]
***[[:i/負荷軽減に編集後の更新処理を分割]] [#y453f2be]
[[検索:永続化システム]]([[検索:永続化クラス]])で実装。

RIGHT:[[:t/編集]] [[:t/負荷]] [[:t/永続化]]


**認証 [#xbe291c5]

***[[:t/利用者]]と[[:t/アカウント]]の利用 [#w754de3e]
†[[ログインはWebフレームワーク、ユーザー管理はWikiフレームワーク]]

フレームワークで扱うのはログイン(認証)と、権限(錠と鍵)の整合判定。

RIGHT:[[:t/Web]] [[:t/Wiki]] [[:t/ログイン]]

**ほか [#yb2d8d2a]

***ページタイトルにユースケース別接頭辞 [#l759d331]
閲覧時には無印なのがポイント。コピペで再利用しやすくなる。

RIGHT:[[:t/閲覧]]

***リクエスト再送はフレームワークで [#of9bf0c9]
利用者の情報損失を防ぐ。リトライ可能に。使いにくくなるのを防ぐ。


RIGHT:[[:t/エラー]] [[:t/UI]]

**まだ [#f83f441b]

***ページと要素を扱う仕組み [#kd5a13b1]
-[[ページ]]
-[[ページ/名前]]
-[[ページ/内部名]]
-[[ページ/属性]]
-[[ページ/裏]]
-[[履歴]]
-[[編集/UI]]
-[[ToDo/ページ削除のUI]]