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

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

#contents

***WikiEngineとは [#be46ac08]
**WikiEngineとは [#be46ac08]
ユーザーとページを始めとするページ/要素をつなぐもの。
利用者→フレームワーク/Webアプリケーション→フレームワーク/WikiEngine→ページ→ページ/要素(各種機能)


利用者の認証情報でさらなる情報を引き出せるようにするのも。


RIGHT:[[:t/Wiki]]
***[[X]] [#z799ea9d]
実装案。
**開発, 実装, API [#gc258b0e]

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

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

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

RIGHT:[[:t/記法]] [[:t/管理]] [[:t/データアクセス]] [[:t/API]]
***[[X]] [#z799ea9d]
実装案。

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

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

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

***ページ要素間の連携方法 [#sdf5bce0]

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

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

RIGHT:[[:t/API]] [[:t/セッション]] [[:t/Wiki]] [[:t/セッション]]



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

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

RIGHT:[[:t/ページ]] [[:t/API]] [[:t/要素]]



***ページに記述されたとき、Chain of Responsibilityで [#bc5af990]
リクエストされたページにある要素は全て呼ばれる。
その中でどのクエリーをどう使うかは要素次第なので、別にChain of Responsibilityでなくてもいい。全ての要素がResponsibility.

ページではなくURLクエリーに記述されたときもChain of Responsibilityではない。Chain(連鎖)はするけど。

Androidのインテントのようなものでもない。送り先を決めてパラメーターを用意。戻り値の型も要求する。


RIGHT:[[:t/要素]] [[:t/UI]] [[:t/Wiki]] [[:t/ページ]] [[:t/URI]]


RIGHT:[[:t/要素]] [[:t/実装]] [[:t/Wiki]] [[:t/ページ]] [[:t/URI]]
***フレームワーク/エラーメッセージにクラス名 [#y3fb5f7e]
エラーメッセージの書き方。
競合も矛盾もない。

エラーメッセージはエラー対処のためのUIでもある。
検索がサイト間のハブサイト、エラーメッセージはその検索へユーザーを誘導する。


RIGHT:[[:t/管理]] [[:t/開発]] [[:t/実装]]



***フレームワーク/Webアプリケーション/再送 [#of9bf0c9]
利用者の情報損失を防ぐ。リトライ可能に。使いにくくなるのを防ぐ。


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


***機能/APIとは [#v9a941b9]
要素(機能の実装)がAPIを提供してもいい。制限しないだけ。サポートもしない。自由。

***簡単なAPI [#c65a0538]
簡単不自由なAPIと、面倒自由なAPIの両方を用意。
引数の違い。

RIGHT:[[:t/API]] [[:t/要素]]
例えばページ/要素のコンストラクターを2種類用意。どちらかを定義すれば要素として使えるように。

RIGHT:[[:t/API]] [[:t/開発]] [[:t/要素]]

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

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

***要素のインスタンスID [#b1ca6fdf]
getElementById()のようなAPIに必要。

***ページ要素間の連携方法 [#sdf5bce0]
RIGHT:[[:t/データアクセス]] [[:t/要素]]

RIGHT:[[:t/要素]]


***クエリーにどう反応するか [#v2ea51d4]
要素の協調でリダイレクトをどう行なうか。:t/?

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




**普段の利用, 閲覧 [#ff2af47a]



***下位展開 [#u989dc3a]



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

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



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

RIGHT:[[:t/UI]]


***[[フレームワーク/WikiEngine/同一視#sa0f0121]] [#s515ccc6]
括弧書き記法はビルトインのページ/要素。

RIGHT:[[:t/ビルトイン]] [[:t/要素]] [[:t/同一視]]
***ページを扱う仕組み [#kd5a13b1]
-[[ページ]]
-[[ページ/名前]]
-[[ページ/内部名]]
-[[ページ/属性]]
-[[ページ/裏]]
-[[ページ/履歴]]
-[[ページ/編集/UI]]
-[[ToDo/ページ削除のUI]]


***フレームワーク/WikiEngine/スタイルシートをページから生成 [#be33d4d8]
埋め込み後のページにデータアクセス。
埋め込み前にアクセスできても煩わしいだけ。

WikiでWiki自身の設定を。

**編集, 記法, プラグイン [#l080ada2]

RIGHT:[[:t/設定]] [[:t/スタイル]] [[:t/埋め込み]] [[:t/データアクセス]]
***簡単なAPI [#c65a0538]
簡単不自由なAPIと、面倒自由なAPIの両方を用意。
引数の違い。

例えばページ/要素のコンストラクターを2種類用意。どちらかを定義すれば要素として使えるように。

RIGHT:[[:t/API]] [[:t/開発]] [[:t/要素]]
***機能/APIとは [#v9a941b9]
要素(機能の実装)がAPIを提供してもいい。制限しないだけ。サポートもしない。自由。


RIGHT:[[:t/API]] [[:t/要素]]



***機能/API/テスト用コード [#q1e224ba]
インストール時に動くか確認。
管理者が改造したときにも使える。運用しやすくなる。

UIは…ページ/要素クラス別のページ(複数のバージョンがある場合は下位ページでも作って)にあるテスト実行ボタンで。
テストが複数定義されていればその数だけボタンを表示するように。リフレクション→UIに反映。
テスト環境をどう作るのか。テスト用コードだけでできる:t/?

RIGHT:[[:t/開発]] [[:t/API]] [[:t/管理]]


***要素のインスタンスID [#b1ca6fdf]
getElementById()のようなAPIに必要。

RIGHT:[[:t/データアクセス]] [[:t/要素]]

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

***クエリーにどう反応するか [#v2ea51d4]
要素の協調でリダイレクトをどう行なうか。:t/?
†[[変換ルールはページ内で定義]]
†[[記法の書式]]

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

†[[フレームワーク/WikiEngineでやること#sdf5bce0]]
RIGHT:[[:t/記法]] [[:t/要素]] [[:t/機能]]

RIGHT:[[:t/API]] [[:t/セッション]] [[:t/Wiki]] [[:t/セッション]]


***WikiTextから得られるページ/要素 [#i327c2f7]
-Notations
[[ページ/要素]]を表す記法
-AutoLink
[[リンク/自動リンク]]記法
-Semantics
WikiTextを独占しない/消費しない記法
-Plains
WikiText中の記法になっていない部分

RIGHT:[[:t/記法]] [[:t/要素]] [[:t/リンク]]



***ページ/要素/UI [#k5398aa0]
拡張可能な要素のUIとは。
†[[UIを使うページ要素]]

要素を呼び出すためのUIは記法。エディターと組み合わせて使う一大機能。
†[[記法]]
†[[汎用記法]]

RIGHT:[[:t/UI]] [[:t/要素]] [[:t/開発]] [[:t/記法]]



***プラグイン [#i6d4c004]
プラグインの仕組みはフレームワーク/WikiEngineのもの。


RIGHT:[[:t/プラグイン]] [[:t/管理]]



***[[フレームワーク/WikiEngine/同一視#sa0f0121]] [#s515ccc6]
括弧書き記法はビルトインのページ/要素。

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



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

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




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

WikiでWiki自身の設定を。


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




**全てURIで [#hca262be]

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

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



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


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


***ページ/要素/UI [#k5398aa0]
拡張可能な要素のUIとは。
†[[UIを使うページ要素]]

要素を呼び出すためのUIは記法。エディターと組み合わせて使う一大機能。
†[[記法]]
†[[汎用記法]]

RIGHT:[[:t/UI]] [[:t/要素]] [[:t/開発]] [[:t/記法]]
**ほか [#y93e77a6]


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

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

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


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

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


RIGHT:[[:t/記法]] [[:t/要素]] [[:t/機能]]
***WikiTextから得られるページ/要素 [#i327c2f7]
-Notations
[[ページ/要素]]を表す記法
-AutoLink
[[リンク/自動リンク]]記法
-Semantics
WikiTextを独占しない/消費しない記法
-Plains
WikiText中の記法になっていない部分

RIGHT:[[:t/記法]] [[:t/要素]] [[:t/リンク]]
***ページを扱う仕組み [#kd5a13b1]
-[[ページ]]
-[[ページ/名前]]
-[[ページ/内部名]]
-[[ページ/属性]]
-[[ページ/裏]]
-[[ページ/履歴]]
-[[ページ/編集/UI]]
-[[ToDo/ページ削除のUI]]
***下位展開 [#u989dc3a]