• 追加された行はこの色です。
  • 削除された行はこの色です。
RIGHT:&tag(プラグイン,API,フレームワーク,思い付き);

*目次 [#a375eb94]
#contents
#br
#lsx(new=true);
#br

*関連 [#h55f8226]
#related
#br
#lsx(tag=API,new=true,except=^プラグイン/API(/.*)?$)
#br
[[検索:API]]
#br

*API周辺のタグ [#k03b1ff4]
#tag(0,API)
#br
----

*プラグイン/API [#j163d593]
RIGHT:[[:t/API]]

-内部だけのデータでも指定されていればそれを使う。
-指定されていないデータだけ内部で作る。
一部でも指定されていないデータは内部で作る。
-データの単位をオブジェクトとすれば判定が単純に。


**フレームワーク/WikiEngineからの呼び出し [#h9d19911]
可能な限り多くの副処理呼び出しで割り込み可能にしたい。
APIに制限は要らない。
→TemplateMethodで。


**APIリファレンスは処理系に付属しているツールで生成 [#p872338e]
標準ツールで生成されたテキストを体裁付きでページ化できれば尚可。

RIGHT:[[:t/API]]


**ページのイテレーター [#e8145d18]
プラグイン側で使えるように。
ページを出すイテレーターを。

-全ページを内部名順に/表示名順に
-章を記述されている順に

…などをFlyweightFactoryのI/Fから。


…などをPageFactoryのI/Fから。
**バージョン [#b73e4bc8]
プラグインでは使うクラスのバージョン番号((APIのバージョン。つまり使い方のバージョン))を判定。
想定したものより古いなら停止。実行も展開もしない。
フレームワーク側で実現するように。


 **トリガー2種類 [#cc61954e]
 +検索クエリーとページ1つ入力、スコア出力、ページごとに実行
 (ページとスコアの結び付けはフレームワークで行う)
 +検索クエリー入力
 全ページのスコアを加算。検索の始まり・終わりなどで実行される。
 
 RIGHT:[[:t/トリガー]]


**テスト用コード [#mabb9fcd]
プラグインにテスト用コードを含めること。
実行環境でのテスト。

RIGHT:[[:t/テスト]]

管理者からのコマンドで実行される。

前提としているプログラムを使えるか確認。
※全てプラグイン任せ。


**インスタンスID [#c82ced61]
プラグインはどれもIDを持つ。
同じIDなら設定とデータも同じ。
定義時も参照時もデフォルト値あり。だから指定しなくてもいい。
参照時に未定義のIDを使うとエラーメッセージが出力される。

 プラグインの設定ページ
   ID
     設定項目
     設定項目
   ID
     設定項目


**オブジェクト取得API [#b70284dd]
プラグイン用APIにページ/名前やページ/内部名でページ/内容(というかページオブジェクト)を得るものを。

-WikiTextとして書かれているプラグインオブジェクトについては
呼び出しの引数をハッシュ変数にして。
-ページを最後に編集した利用者と見ている利用者を得るのも。
最初に編集した利用者や…を得るものも。

RIGHT:[[:t/フレームワーク]]
**スクラッチ [#v9152fc8]
全ページのある言葉を置き換えたいときにプラグインを作ってできるように。
必要なのは…
-全ページを得るAPI
-テスト(…は不可。ページ同士の兼ね合いを見たいこともあるし)
-ロールバック
APIで印を付けるとクエリー1つで印の付いた全ページがその印付きの版になる。
ロールバック可能な点にはIDを付けて複数設定可能に。
-ログ記録API
ログはページなので、ページに追加できればいい。
-プラグイン名を秘密にすれば管理者パスワードは要らないはず。
-使って、不要になったら消す。
印付きのプラグイン名にしておけば分かりやすい。一時的なプラグインを検索するような機能はサポートしない。