-OSGiの効能

Eclipse3.0から導入されたOSGiですが、このディストリビューションモデルを採用したことによってEclipseに何のメリットがあるかというと、思いつくところ3つです。まず一番目に感じるのはプラグインの依存関係解決がこれまでのplugin.xmlのパース結果をリポジトリしていく仕組みに比べ、圧倒的に速いことです。OSGiマニフェストファイルに依存関係を簡素な記述で書くのでXMLをパースするのより相当簡単高速なのですね。Eclipseの起動時間はほとんどこのプラグインの依存関係解決なので、後々には2.1に比べて相当起動が速くなることもあると思います。
今まではプラグインをインストールするとEclipseの再起動が必要でしたが、2番目の利点として、OSGiによってプラグインがプラットホームの動作している最中でもインストール・アップデート・アンインストールが可能な、ダイナミック設定になります。前に3.0M9からのPDE-JUnitが速くなったということを書きましたが、OSGi対応していないプラグインの場合はM9でもM8以前のような遅さです。PDE-JUnitはこの恩恵を受けているのでしょう。非OSGiだとランタイムワークベンチを丸々立ち上げてますが、OSGiプラグインだとランタイムワークベンチを立ち上げてないんじゃないかなと観察から想像しています。
3番目は、プラグインを作らないと感じられない利点ですが、プラグインに同梱するリソースへのアクセスがシンプルになったことです。プラグインのインストールベースが「/(スラッシュ)」であらわされるルートパスになりました。いままでは、ドライブのルートを基点としたパス構成を、Platformというstaticな環境情報ユーティリティを使って、相対パス絶対パスに直すような作業が必要だったのですが、プラグインクラスローダー等含めうまく再構築されているために、リソースアクセスは直感的な実装でうまく動きます。反面、別のプラグイン領域を侵犯するのは難しくなりました。これも利点でしょう。マニフェストファイルに、Javaのパッケージ単位、で公開する旨記述しないとダメなようになりました。コレまでも似たような機能はあったのですがこのへんの依存関係に関わるところはもっと厳格になりました。これもよいことだと思います。プラグイン間の疎結合がすすみます。
以上のよさを、まだEclipse3.0M9では出し切ってません。なぜならば、M9に含まれるほとんどのプラグインがOSGiに対応していないからです。数えてみたら、84本のM9を構成するプラグイン中、8本のみが対応です。JDTやPDEといった中核プラグインすら対応していません。おそらく、M10以降で徐々にOSGi対応していくものと思います。前述したように、Eclipseはもっと起動が速くなると思うゆえんです。正式リリースは遠いかなと思います。が、3.0は早期に出して、OSGiの完全対応を今年一年かけて3.1でやるのかな?

-Kijimunaビルド

いま、最後の大物バグ(?)Kijimunaのビルドが走ると一つのリソースに対して二度パースが走るというものの抑制に取り組んでいます。これは、ソースのフォルダにあるファイルが、ビルドによって出力フォルダにリソースがコピーされますが、そちらも変更が起こったものとしてビルドしにいかれてしまうというものです。うーん、M9の問題なのかなあ?それともこれまで気が付かなかっただけか。。。いや、気が付くでしょう。最近なにか変なことしたかなぁ?
OgnlRttiは時間かけただけあってサクサク動いてわれながら気持ちいいです。これはいろんな用途に使えそう。また、いままではXMLをプルパースしていましたが、SAXパースで全部書き直しました。理由は、3.0からXercesがバンドルされなくなるためです。これまでプルパーサーは試した中で選んだXerces XNI2プルパーサというのを使ってましたが、XercesがEclipseにないのでプラグインで独自にXercesを用意しないといけません。XNIというXercesのAPIを使って作られたプルパーサーなんで必要なのです。そうすると、一気に1MBのXercesのJarファイルを添付しないといけなく、プラグインがディストリビュートしにくくなってしまいます。また、プルパースでいろいろ作っているうちに、SAXでも同じ動きがかけるような形にリファクタされてきてしまいました。DefaultHandlerを継承したハンドラにプルパースで試した手法を搭載しました。S2Toolsとしていたものを改変したのではなく、新規に作り起こしたので様子見てS2Toolsに戻るかもしれませんが、まずは作り直したもののほうがシンプルでよいようです。これも汎用につくってます。
とはいえ、昼間仕事がいま立て込んでいて、夜帰ってからの3時間ぐらいでしか作れていないので、もうちょいかかりそう。ちなみに、ネイティブEclipse3.0M9以降対応です。OSGi対応。

-パンタグラフキーボード

会社のPCのPS/2ポートが壊れたみたいで、キーボードが認識しなくなってしまいました。他は問題ないので、USB接続のキーボードを購入。これが一部では人気の「パンタグラフキーボード」というのを買いました。ご存知ない方(私も買うまで知らなかった)のために紹介すると、ノートPCのキーボードみたいになってるものです。薄型でもキーストロークが結構ある(感じる)のと、キーの裏にサポートするパンタグラフ(電車の屋根に乗ってるヤツです)型の金具の効果でキーの真ん中をうちそこねてもさくっと入力できるとふれこみです。さらーに、買ったのはUSBハブ2ポート付きでOK。なかなかのものでした。私の買ったのはコレ。色はシルバーしか渋谷のビックカメラに無くて選べなかったのですが、いままでのアイボリーから雰囲気がかなり変わった感じでよいです。