2004年12月29日

プラグインの形式

12/3にHeimdallr 1.07をリリースしてからだいぶ経ちますが、
まだ1.08はalpha1さえリリースできていません。しかもまだまだかかりそうな感じです。
既存のコードにChannelExtension用のコードを追加するのに手間取っています。
うーん難しい。

ところで、Heimdallr 1.08にはChannelExtension Framework(仮称)が実装されて、DLL形式のプラグインにより機能を追加できるようになる予定です。

ところでDLL形式ってこういったアプリケーションのプラグインとして使われる形式としては古い形式なんですよね。なにせインターフェースが関数形式。
一応DLL形式以外も検討したのですが、色々悩んだ挙句、DLL形式を使うことにしました。
他に検討したのはこんな形式です。

Javaバイトコード
Eclipseのプラグインがこれですね。Javaの強力なクラスライブラリを使えますのでプラグインの開発は楽でしょう。コンパイラも無料です。しかし残念ながらHeimdallr本体はJavaで書かれたアプリケーションではありません。HeimdallrとJavaバイトコードを繋げるのも大変ですし、いまさらJava実行環境が無いとHeimdallrは動きませんと言うのもなんだったのでこの案はやめました。
.NETバイナリ(MSIL)
MSILを動かすために必要な.NET FrameworkはWindows Updateから簡単にダウンロードできますので、Javaよりはまだ望みはありました。Managed C++を使えばHeimdallrからMSILを呼び出すのもさほど難しくは無いでしょう。.NET FrameworkのクラスライブラリもJavaに匹敵するほど強力です。でも、(Heimdallr開発において)ここまで.NET Frameworkを使わずに来たからには、やっぱ最後まで使いたくないなぁ・・・という想いが勝ってこの案はやめました。
Javaスクリプト
Firefoxのプラグインが(たぶん)これですね。テキストエディタだけでお手軽にプラグインが作成できるという素晴らしいメリットがあります。しかし残念ながらどうやれば実現できるのか分からず断念しました。もしかしてJavaスクリプト実行環境を作らなければならないのかな・・・。そんなの無理・・・。
オリジナル言語
XMLあたりをベースにしたプラグイン記述用のオリジナル言語を作成してはどうかというお話です。Heimdallrのスキンはこれですね。しかしChannelExtensionは、様々なことができるようにしたいと思っていますので、オリジナル言語にも多機能が要求されます。そんな多機能な言語を新しく作るのは大変です。というかそんな言語作った上に実行環境まで作るのは、Javaスクリプト実行環境を作るよりも難しいでしょう。というわけで断念。
ActiveX
DLLと似たようなものですが、オブジェクト指向っぽいインターフェースが使えるはずです。しかし残念ながら私がActiveXに詳しくなく、かつ今からActiveXの深い世界に嵌る気もしなかったのでやめておきました。私がもっとActiveXに詳しかったらこれを使ったでしょう。
というわけであれこれ考えましたが、
そもそも私が作りたいのは「プラグインを追加できる仕組み」ではなく「プラグインそのもの」なので、仕組みの方に凝るよりも、仕組みの方は慣れた技術でさらっと作ってプラグインそのものを凝ることにした方がいいかなーということで自分を納得させて、慣れた技術であるDLL形式を使うことにしました。
現実には慣れていてもなかなかさらっとは行かないものですけどね。

投稿者 MASATO : 2004年12月29日 01:36 | トラックバック
コメント
コメントする









名前、アドレスを登録しますか?