前回、lmageJ本体のソースコードの内容を理解するための第1歩として、Eclipseという無償のプログラミングツール(統合開発環境:IDE)を用いて、lmageJのソースコードを表示し、ビルドという作業によってlmageJの実行ファイルを作成するための手法を紹介しました。
今回は、前回に引き続き、lmageJ本体のソースコードの内容を整理しながらlmageJが動作する仕組みを理解し、プラグインの開発を行う方法について解説を行います。
ImageJのAPIドキュメント
ImageJは大きくいくつかのクラスファイルの集まりであるパッケージで構成されています。
このImageJのAPIは、そのパッケージやクラスについての内容をまとめたもので、ImageJのサイトで詳しく解説がされています(http://rsbweb.nih.gov/ij/developer/api/index.html) . ImageJはJava言語で書かれていますので、このAPIはJava APIの一つです。
この中で、ImageJの動作に関するメインのプログラムは、ijパッケージ下の“lmageJ”というクラスです。このクラスの中に、main関数が記述されています。
ImageJクラスには、“awt” というJavaで用いるGUIライブラリやマウスを用いたイベント処理の使用から、スレッド処理などを行えるように拡張されています。
スレッド処理とは、簡単に説明すると「同時に複数の処理を平行して行う」ことです。スレッドとは、アプリケーション内で実行する最小単位を意味し、複数のスレッドが独立して実行されるものを「マルチスレッド」といいます。
書式は、スレッド機能を持つクラス内にrunメソッドを用意し、その中に処理を記述します。実際の記述内容は、複数のスレッドが相互作用でブロックしてしまい、処理が完全に停止する「デッドロック」を避けるために、外部からスレッドをquitできるようになっています。
EclipseによるImageJのプラグイン開発「Hello world!」
Eclipseのプログラムエディタは、ユーザーサポート機能が豊富であるために、ImageJのプラグイン開発ツールとしても使いやすいです。
ここからはEclipseにプラグイン開発環境を整える手順について説明します。
なお、ここでご紹介する手順は、こちらを参考にしています。
http://imagejdocu.tudor.lu/doku.php?id=howto:plugins:the_imagej_eclipse_howto
なお、ここでご紹介する手順は、こちらを参考にしています。
http://imagejdocu.tudor.lu/doku.php?id=howto:plugins:the_imagej_eclipse_howto
前回までにImageJソースコードからEclipseを使ってビルドするところまで解説しました。
今回は、プラグインとしてテストしたいコードを作成するために、プラグイン用のプロジェクトを作成して、コードを書き、このコードをEclipse内のImageJのメインクラス 下で実行できるようにしてみましょう。
今回は、プラグインとしてテストしたいコードを作成するために、プラグイン用のプロジェクトを作成して、コードを書き、このコードをEclipse内のImageJのメインクラス 下で実行できるようにしてみましょう。
まず、プラグイン用のJavaプロジェクトを新しく作ります。例えば、MyPluginとします。
次に、このプラグインの中に新規Javaクラスを作成します。ここでは、簡単に。「Hello world!」表示プログラム「TestPlugin_」とします。
クラス名にアンダースコアを加えると、プラグイン実行時にリストがGUIに表示されますので、加えておきます。
そして、デバックを効率的に行うためのbuild.xmlを新規作成します。
あるいは、なんらかのテキストエディタなどで同様のxmlファイルを作り、プロジェクトファイルにコピーしてください。
次に、このプロジェクトファイルを右クリックし、プロパティから、ビルダーを選択して、Ant_builderを選択します。新規にNew_Builderを追加します。
次に、そのままビルダーの「編集」から、以下の通り設定します。
これで、mainメソッドがImageJであることを設定できます。
次に、「実行」の中のプルダウンに含まれる「実行の構成」を起動して、ImageJクラスが設定されていることを確認します。
また、その「ソース」タブで、MyPluginプロジェクトが選択されるように設定します。
そして、最後に、MyPluginの中のbuild.xmlから、ImageJを起動します。
無事にImageJが立ち上がり、MyPluginが読み込まれていることがわかります。
(起動したImageJのPluginsの構成)
(実行結果)
無事に「Hello world!」ウィンドウが表示されました!
動作の基本はここからさらに掘り下げていき、自分の作りたいプラグインを作りましょう。
ここで、1つ、注意事項があります。
それは、決して、自分のオリジナルで1からコードを組み立てないことです。
意外に思われる方もいらっしゃるかもしれませんが、プラグインを作る時点で、すでに、万人が開発に関わってきたImageJの肩の上にのっているので、しっかりと先人の知恵を学んで、活用させてもらいましょう。ImageJが教育の世界で利用されているのは、そういった背景もあります。
そもそも、Javaって何?という方、私は以下の参考資料で基本を学びました。
- Eclipse 完全攻略シリーズ
- Eclipse ではじめるJavaプログラミング入門シリーズ
(お使いになるEclipseのバージョンに合わせて、図書館とかで見つけてください。私は、この前、図書館でPC使って怒られたので、ちゃんとPCスペースでプログラミングしてくださいね笑。)
この本を読破したら、もうJavaの基本はわかると思いますので、Oracleが公開しているサンプルコードや、また、Java driveという専門のブログも非常に参考になります。
ということで、公開されているプラグインプログラムを参考にして、独自のプラグインを開発してみてください!
前回に続き、EclipseによるImageJのソースコードのビルド方法やプラグインの開発方法を解説しました。
次回からは、再び医用画像処理の基本に戻り、プラグインと対比しながら解説を行います。
Reference
- 「山本修司:ImageJで学ぶ実践医用・バイオ画像処理.INNERVISION(23・10) 2008, p84-85」
0 件のコメント:
コメントを投稿