遅い→起動時

http://d.hatena.ne.jp/pmint/

プラグインを呼び出すペイントツール11

d:id:pmint:20080329:p1の続き。


プラグイン的ブラシの実装。
.dllファイルの中のブラシを使えるように。

ペイントツール プロトタイプ11。
WindowsApplication1.zip

起動はここからClickOnceで。ClickOnceIE系で。
WindowsApplication1

操作

左ドラッグ(右でも可)
線を描く。
「Brush4」
ブラシをプラグインのものに切り替える。

概要

このプラグインとはClassLibrary1.dllにあるBrush4というクラスのこと。
ClassLibrary2.dllはプラグイン用のインターフェイスを定義している。

リフレクションで正体不明のままBrush4を使えばClassLibrary2.dllは不要だけど。


Brush4のブラシパターンはDarkSlateGray色で塗りつぶした円。
前バージョンのBrush3のようなキャンバスを参照するブラシでは、アプリ側のデータを使う必要がある。
その場合、プラグイン側からアプリを呼び出すほうが拡張しやすい良い設計になるけど、それにはもう1つインターフェイスを追加しないと。
プロトタイプで似たようなものを増やしても仕方がないので、今回はアプリ→プラグイン一方向の呼び出しで済むようにした。

クラス

クラス名は固定しているけど、どうせ1ファイルに1クラスなのでクラス名を変えられなくても実装可能。
でも、1つのファイルに複数のプラグインを含めてもいい仕様にすれば、プラグインの開発がしやすくなるかも。
名前がPlugin_…になっているクラスを全てプラグイン扱いにするとか。

テスト用ドライバー

結合テストのために、プラグインを呼び出すドライバーがあったほうがいいかも知れない。
ドライバーと言ってもプラグインに全機能を提供しないといけないので、アプリ本体を「起動時から指定されたプラグインを使える状態」にしたものにするしかなさそう。

置くだけインストール

あとはファイル検索をすれば「ファイルを置くだけで使えるプラグイン」になる。
ただ、本当に置くだけで使えるようになるのはどうかと思うので、一工夫したいところ。

  • このアプリ経由で置いたファイルだけ…
    とか
  • ファイルを置いたあと利用者に使用可否を尋ねる
    とか。
拡張案

プラグイン固有の設定などを保存するために、データを記録する仕組みも必要だろうか。
アプリの設定類と同じ仕組みで残せればいいので、それができてから。


プラグインからアプリを呼び出すためのインターフェイスも定義しないと。
リフレクションを使う方法もあるけど。