RIGHT:[[:t/要素]] [[:t/Wiki]] [[☆]]

機能の実装。ほとんどのプラグインはページ/要素。拡張の要。

- ページ/要素を使うためにXというフレームワークがある。
- 利用者によってページに記述され、ページごと呼び出される。
- 要素は利用者が入力した情報と、いろいろな機能を併せ持つもの。
-- 要素はページに記録された情報をオブジェクト化したもの。
-- 要素はいろいろ考えた機能の実装。要素の作り方は自由にしていい。
- 要素をページ上に配置するために使われるのが[[記法]]。
ビルトイン要素は簡易マークアップで。プラグイン要素は汎用記法で。
→ [[:Done/ページ型/スレッド/データコンテキスト/記法定義まとめ#je7681db]]
- 要素はページに記述できるプラグイン。記述方法は→[[記法]]。
汎用記法か、管理者が定義した記法で記述すると機能するようになる。
- 記法処理中にどの記法も汎用記法に置き換えられる。
→ %%意味ない。編集時に記法を再現するので置き換える前のテキストは必要。汎用記法に置き換えたとしてもさらにオブジェクトに置き換えなければならないため何のキャッシュにもならない。%%
→ 解析処理を統一するため。簡易マークアップをプラグイン要素に対応付けられるようになる。

----

#contents


* [[:t/要素]]より [#te5640f9]

** URLクエリー [#v30abc62]

*** [[:/検索式を使う検索]] [#sb56a3e1]
''利用するユースケースクラスによっては''URLクエリーがページと同じ型になる。ページとの違いはデータコンテキストの違いだけ。呼ばれたページに含まれるページ/要素は、URLクエリーからデータを引き出すことになる。

あるユースケースでは、URLクエリー上で一時的なページを作れる。レスポンスにはそのページが載る。複数のページをひとつのレスポンスにまとめたりできる。

RIGHT:[[:t/ユースケース]]

** いろいろなページ/要素 [#nf290fa7]

*** [[:i/レイアウト要素]] [#a5536ac3]
随時作ればいい。
スタイルを与えるだけのもの。あるいは入口と出口の要素を分けて、出口をテンプレート内に配置。入口はページ本文で後から追加。入口の内容が出口にだけ表示される。

** 未分類 [#v3a8d683]

*** [[:i/時刻だけ書いたら同じページに書かれている日付を加味]] [#abb7f24b]
その要素自身の機能で。
*** [[:i/投稿時展開する記法は要らない]] [#ub49bdac]
*** [[:i/階層化ページ名がタグなら一覧化しないと]] [#f728d358]
*** [[:/HTMLコンテナー]] [#x1aa5c6c]
*** [[:/HTML変換の内部処理]] [#lb52fea9]
*** [[:/WikiEngineから機能の呼び出し]] [#dfee6a5c]
*** [[:/データアクセスとは]] [#k910c5d2]
*** [[:/ブロック要素は段落単位で]] [#gafedf6a]
*** [[:/プラグインが使えるフック]] [#p7db3210]
*** [[:/ページ全体も要素]] [#k0098410]
*** [[:/ページ属性の型は文字列だけ]] [#ye8dbe86]
*** [[:/機能/API/オブジェクト取得API]] [#l78c8222]
*** [[:/機能/API/トリガー2種類]] [#j856e75c]
*** [[:/機能/API/バージョン]] [#bbfeed80]
*** [[:/機能/APIとは]] [#ia5372fb]
*** [[:/継承対応要素]] [#s162d75a]
*** [[:/要素からWikiEngineインスタンスを起動可能]] [#f728758c]
*** [[:/解釈をはさんだ検索]] [#pa2c8a3f]

*** [[:Done/2つ呼ぶ記法]] [#v096f692]
*** [[:Done/クライアント側にサービス側オブジェクトのProxyを作るには]] [#v3d189db]
*** [[:Done/グローバルオブジェクトを書き換える機能]] [#b3ba2ee4]
*** [[:Done/セレクターは属性値デコレーションに使えない]] [#w81f318f]
*** [[:/セレクターは属性値デコレーションに使えない]] [#w81f318f]
*** [[:Done/ページセット取得記法とエレメント取得記法]] [#b1fd5b05]
*** [[:Done/ページ型/スレッド/データコンテキスト/記法定義をまとめて設計]] [#z825b185]
*** [[:Done/履歴はオブジェクト形式で?]] [#y76fef8c]
*** [[:Done/検索はクエリーとページの類似度判定]] [#ba3d9b9a]
*** [[:Done/検索フォーマットは機能を呼ぶか]] [#n38dd7e2]
*** [[:Done/目次に出したいだけの見出しはどう書くか]] [#gf75d445]
*** [[:Done/要素がアクティブなWiki/Page/Userを得るには]] [#hf82f772]
*** [[:Done/記法の衝突対策]] [#p21f24bc]
*** [[:Done/タグとは何か]] [#idfa16f6]
*** [[:i/APIリファレンスはページ]] [#c7663097]
*** [[:i/LTSV→テーブル]] [#h07c59c2]
*** [[:i/ToWikitextはそのまま返す]] [#p279c36f]
*** [[:i/Tokenize対象はNotationText]] [#w2bee494]
*** [[:i/UIからの呼び出し方法2種]] [#e75d4dad]
*** [[:i/UIを使うページ要素]] [#m10676e2]
*** [[:i/UI要素]] [#d948bed4]
*** [[:i/URIは内部型を含むラッパー]] [#nd059914]
*** [[:i/URIを解析して異なるページ要素に渡す仕組み]] [#f2c2a3af]
*** [[:i/URLクエリーは一時的ページ]] [#qb5d3f94]
*** [[:i/class属性を付けるならそれごと記法として実装]] [#yee02faa]
*** [[:i/to…は複数指定]] [#c80af7e5]
*** [[:i/「Wiki記法」の削減]] [#d5de96a6]
*** [[:i/おとなりページ]] [#l2be0e85]
*** [[:i/ここからの目次]] [#u739a553]
*** [[:i/なにかのカウンター]] [#n93d6613]
*** [[:i/インライン/ブロック/ページの3スコープ → ページ/ラインの2スコープ]] [#zb0c5ed6]
*** [[:i/オブジェクトにUIを持たせる]] [#c2314421]
*** [[:i/クエリーにどう反応するか]] [#qd2ea3ca]
*** [[:i/データの保存先指定]] [#b09b62e5]
*** [[:i/ハブとして機能する要素]] [#r1999565]
*** [[:i/ファセットを並べるだけでなく集計もしたい]] [#d36f44d3]
*** [[:i/ファセット分類]] [#k38d8cf2]
*** [[:i/ファセット化の対象は専用のメタデータ]] [#ac9417e6]
*** [[:i/フォーム要素]] [#x1d5d878]
*** [[:i/ブロック要素/インライン要素を区別しない]] [#n13f144a]
*** [[:i/プラグイン内でプラグインを呼び出すために]] [#naf031b4]
*** [[:i/プラグイン要素は記法]] [#u7563587]
*** [[:i/プレビューの集め方]] [#mcd153ec]
*** [[:i/プレースホルダー記法]] [#pac05906]
*** [[:i/プログラムコードを記述するには]] [#e078b290]
*** [[:i/プロセス起動ごとに呼ばれる要素]] [#s6964ae1]
*** [[:i/ページ──要素間はコンポジションに]] [#f651b2af]
*** [[:i/ページとは]] [#g36eb9b2]
*** [[:i/ページと他オブジェクトとの関わり合い]] [#w71d157b]
*** [[:i/ページと要素は似ている]] [#y3430d79]
*** [[:i/ページのイテレーター]] [#cda0f2b6]
*** [[:i/ページは…]] [#fa86f5e9]
*** [[:i/ページは要素でもある]] [#t36bd9f6]
*** [[:i/ページは要素のインターフェイス]] [#eb56cdc7]
*** [[:i/ページは要素のコンポジション]] [#cc330af3]
*** [[:i/ページ内容がオブジェクト構成を表す]] [#mcc2d4a3]
*** [[:i/ページ要素のUI]] [#ta7b5213]
*** [[:i/ページ要素間のつながり]] [#rb79599c]
*** [[:i/ページ要素間の連携方法]] [#i045519a]
*** [[:i/メタタグになる要素]] [#y9dc809d]
*** [[:i/ユースケースに即席ページを]] [#eddaf5d9]
*** [[:i/リンクは種別によって見せ方を変える]] [#e20bc996]
*** [[:i/ローカライズに関西弁や語尾に何かを付ける方言も]] [#le4853f5]
*** [[:i/一行テキスト]] [#e9384bc0]
*** [[:i/下位展開範囲のスレッドを統合するもの]] [#a96e37c0]
*** [[:i/何かのカウンター]] [#k698f565]
*** [[:i/全ページの属性を一覧化して書き換え]] [#df531a3a]
*** [[:i/名前の同一視]] [#ydc0fac4]
*** [[:i/型別一覧]] [#n02a9acd]
*** [[:i/大抵のHTMLはテンプレートで]] [#b7d4beb9]
*** [[:i/改行は要素]] [#g776cfb9]
*** [[:i/文字列からの型変換はExcelでもやっている]] [#ze0b3183]
*** [[:i/日付に経過日数]] [#se397543]
*** [[:i/検索で共起要素を探すには]] [#i88d033f]
*** [[:i/検索式は1つの要素で]] [#ra14491c]
*** [[:i/検索用テキストを作るならページ要素で]] [#c36c9ac3]
*** [[:i/検索語にスケール指定を]] [#u3c753c4]
*** [[:i/機能/New!]] [#ebc2c892]
*** [[:i/機能/カウンター]] [#q15df6ce]
*** [[:i/機能/カレンダー]] [#y8aec402]
*** [[:i/機能/ソート]] [#vc87bb18]
*** [[:i/機能/バルーン]] [#qe6bc717]
*** [[:i/機能/文字数]] [#y0a059e4]
*** [[:i/機能/集合操作]] [#od956b3f]
*** [[:i/段落まるごとの打ち消しは見せない]] [#o133e683]
*** [[:i/注釈(note)はセクションを越えない]] [#hc048609]
*** [[:i/注釈は…化]] [#x4fdce2c]
*** [[:i/画像検索]] [#rf277942]
*** [[:i/目次に出したいだけの注釈]] [#ea315225]
*** [[:i/編集できないときDanglingLinkを無くす]] [#y9edc27d]
*** [[:i/置き換えもElement任せ]] [#g032c48f]
*** [[:i/裏は複数]] [#u1f09dcd]
*** [[:i/要素がページに記述されたとき、Chain of Responsibilityで?]] [#x92f4eb3]
*** [[:i/要素が使用できるもの]] [#u09aefe8]
*** [[:i/要素ごとの処理時間計測]] [#a6372493]
*** [[:i/要素にidを付けるとき]] [#s638b82a]
*** [[:i/要素にはUsageを含める]] [#bbcea3b7]
*** [[:i/要素には個数制限を設けないように]] [#kb1c1083]
*** [[:i/要素に書き込む方法]] [#u06624cd]
*** [[:i/要素のインスタンスID]] [#ze280d8a]
*** [[:i/要素のネスト]] [#c8b2c664]
*** [[:i/要素の使い方は2種類]] [#j044a7be]
*** [[:i/要素の展開タイミング]] [#h6093bf8]
*** [[:i/要素の説明はページに]] [#s52d9d78]
*** [[:i/要素は検索時の比較方法もメソッドとして持つ]] [#g10a4889]
*** [[:i/要素は部品]] [#fbfb556f]
*** [[:i/要素同士の順序]] [#k8d55d3a]
*** [[:i/要素埋め込み]] [#oe40bac1]
*** [[:i/要素展開は閲覧時]] [#nc7238b4]
*** [[:i/要素間データフローの分岐]] [#f5b0239a]
*** [[:i/記法が含むもの]] [#vc7b8496]
*** [[:i/記法定義は記法→要素クラス→記法]] [#bdac5f1a]
*** [[:i/設定違いを別記法にするとシンプルに]] [#md0bdc8d]
*** [[セレクター]] [#t7305543]
*** [[データアクセス]] [#xc1555f1]
*** [[フレームワーク/WikiEngineでやること]] [#wead6607]
*** [[プラグイン]] [#h7216619]
*** [[プロトタイピング]] [#c63f0761]
*** [[ページ/要素]] [#ad22a27f]
*** [[ページ/要素/API]] [#z6b93379]
*** [[ページ/要素/UI]] [#le4cabd0]
*** [[ライブラリー]] [#z70a87d0]
*** [[全てURIで]] [#nd76e57f]
*** [[埋め込み]] [#e30adfd3]
*** [[旧検索]] [#k0e3d89c]
*** [[汎用記法]] [#k57a2a51]

** ページ/要素とは [#we337123]

*** [[:i/ページとは]] [#z4b6eb42]
ページ/要素はデータベーステーブル内のフィールドにあたる。ただし1要素で値1つ(1フィールドの1レコード分)。



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



** ページ/要素ができること/しなくてもいいこと [#afe6664b]

*** [[:i/リクエスト内のパラメーターと汎用記法のパラメーターは同じ]] [#xa5d7802]
呼び出され方を区別しなくていい。
データコンテキストの区別はデータコンテキスト名別のTo…メソッドでできるし。



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

→リダイレクトは要素ではなくユースケースの役目。問題なし。

%%要素がリダイレクトを指示するなら他の要素の出力を抑えなければならない。協調しないということなので、不可。リダイレクトをするユースケースを呼び出すボタンを用意して、利用者に押してもらう(協調しないユースケースを呼んでもらう)ような方法なら可。%%

要素で行う場合でも、[[:i/レイアウト要素]]と同じように、HTMLヘッダーやHTTPヘッダーに出力できれば可能。要素から要素を呼ぶことになる。

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



*** [[:i/要素の展開タイミング]] [#h0c61b5c]



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

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

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



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

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

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



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

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

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



*** [[:i/エラーメッセージにクラス名]] [#o2917bed]
エラーメッセージの書き方。
競合も矛盾もない。

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


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



*** [[:i/汎用記法で名前付きパラメーター]] [#c9c65a09]



*** [[:i/要素にはUsageを含める]] [#tc941d49]




** 性質 [#g0407c5a]

*** [[:i/設定違いを別記法にするとシンプルに]] [#f0d5212f]
設定はスペースにひとつ。その中に同じ要素のパラメーター違いを用意して、それぞれを別の記法にするのがいい。



*** [[:i/複数行パラメーターの書き方]] [#ge311214]
書き方…記法の問題。改行文字をどう扱うか。



*** [[:i/要素3態]] [#n5e4849f]
記法は別になった。要素はオブジェクト。



*** [[:i/ページは要素のコンポジション]] [#gda58d96]
ページに要素を与えると機能になるような設計。
ページが機能を持つので、ページ名が機能名になっていい。



*** [[:i/要素は部品]] [#t2754893]
要素は組み合わせて使う。
個々が機能を提供しなくてもいい。



*** [[:i/要素がページに記述されたとき、Chain of Responsibilityで]] [#jc33dcab]
→ [[:i/要素がページに記述されたとき、Chain of Responsibilityで?]]
要素間/ページ間の依存をなくす。それぞれが独立。連携するなら相手に依存することになる。プラグインが守らなければならないルールが無い代わりに、連携をサポートすることも無い。



*** %%[[:/ページ全体も要素]]%% [#ud923f83]



*** [[:i/プラグイン要素は記法]] [#n085aa93]
プラグインは作る。要素の元になる上位クラス。
要素のプラグイン版として作るので、プラグインインターフェイスを実装した要素になる。



*** [[:i/要素展開は閲覧時]] [#a1f40378]
*** [[:i/要素はChain of Responsibility]] [#gdcdb7fd]
*** [[:i/要素クラスの継承]] [#x39b52f8]
*** [[:i/要素の使い方は2種類]] [#rb6c207c]
*** [[:i/要素に使い方が2種類あっても実体は1つ]] [#cc305ab7]
*** [[:i/要素はリクエストから直接呼び出されてもネスト可能]] [#h4b7f9f3]



*** [[:i/要素呼び出しとMVC]] [#ic40f915]
ビューを軽量にするにはビューから子を呼ばないこと。子はコントローラーから呼ぶ。
ビューから別のコントローラー呼び出しができれば効率的なように見えるけど、利用者によって貼り付けるものが変わったり判断を要するので、結局コントローラーがいろいろやることになる。



** 使われ方 [#tb1f3cab]

*** [[:i/URLクエリーは一時的ページ]] [#y6c3ad4f]
*** [[:i/要素を必要なときにインストール]] [#e50d12d9]
*ページ/要素/ [#w1784890]
- [[ページ/要素でやること]]

#ls

*** [[:i/検索語にスケール指定を]] [#u3c753 [#rf76e91d]