mb_language("uni"); mb_internal_encoding("utf-8"); mb_http_input("auto"); mb_http_output("utf-8"); ?>
プログラムを開発しているとき、ある特定の機能だけを繰り返しテスト実行することがある。しかし、実行する機能によっては、面倒な事態を引き起こす。例えば、Xprioriで構築されたXMLデータベースのある要素の内容を整数と見なし、その値をゼロクリアする機能を開発中だったとしよう。この機能だけを繰り返し実行する場合、以下の2つの問題が出てくる。
・ゼロクリアが行われることを確認するには、実行前の値がゼロであってはならないが、管理コンソールで書き換えるにはいちいちクエリを書く必要がある
・実行後に管理コンソールで結果を確認するには、やはりクエリを書く必要がある
1度や2度であればよいが、テスト実行の回数が多くなるとかなり面倒だ。
こうした場合に役立つのが、「Team SoleSuite Xpriori plug-in」(以下Xpriori plug-in)である。Xpriori plug-inはEclipse 3.x対応のプラグインで、Eclipse内でNeoCoreおよびXprioriのデータ構造を直接表示したり編集することができる。無償で配布されているので、ダウンロードして実際に試してみることをお勧めする。
実際に、Xpriori plug-inが役立つ状況を見てみよう。例えば、以下のようなXML文書がXprioriにstoreされているとする。
<?xml version="1.0" encoding="utf-8"?> <SampleInfo> <Name>Cyclops</Name> <Counter>0</Counter> <Area>Atlantis</Area> </SampleInfo> |
このXML文書のCounter要素は、あるイベントによって1ずつ増加する。そして、Counter要素の内容を0に戻す機能が必要になったとする。以下は、その機能を実装してみたものだ。今回はこの機能に限定した小さなサンプルプログラムを作成したが、本来であれば大きなプログラムの一部となるコードだと思って見ていただきたい。なお、サンプルソースを簡潔にするために、例外処理などは意図的に含めていない。実用システムで使う場合は、そのようなコードが必要であることを心に留めておいていただきたい。
import com.neocore.httpclient.*; public class sample1 { private static String id = "Administrator"; private static String password = "samplePassword"; private static String server = "localhost"; public static void main(String[] args) throws Exception { SessionManagedNeoConnection neosession = new SessionManagedNeoConnection(server, 7700); neosession.login(id, password); neosession.modifyXML("/ND/SampleInfo/Counter\n", " |
このプログラムを実行するのはとても簡単なのだが、XMLデータベース内の初期値の準備と結果の確認は前述したように面倒な作業になる。早速プラグインをインストールして活用してみよう。
Xpriori plug-inのインストールは簡単だ。Eclipseが実行されていない状態で、Xpriori plug-inのアーカイブファイルをEclipseと同じフォルダに展開しよう。画面1のように、pluginsフォルダの中に「com.solesuite.team.xpriori_1.0.0」というフォルダができていれば、正しい位置に展開できている。
画面1 pluginsフォルダに展開
次に、Xprioriへの接続情報を設定する。Eclipseを起動し、[ウィンドウ]メニューの[設定]-[Team SoleSuite Xpriori plug-in]を選択する。ここで、
・ サーバ名
・ ポート
・ ユーザー名
・ Xprioriをインストールしたフォルダ
を設定する。
画面2 Xprioriへの接続情報
設定が完了したら、早速Xprioriへ接続し、そこに格納されたデータを見てみよう。まずプラグインを表示させる。それには、[ウィンドウ]メニューの[ビューの表示]-[その他]-[Team SoleSuite Xpriori plug-in]を選択し、[OK]ボタンをクリックする。
画面3 プラグインを表示させる
すると、2つのボタン が表示された領域がウィンドウ内に追加される。これが、Xpriori plug-inの表示領域である。
画面4 Xpriori plug-inが表示された
Xprioriに接続するには、 をクリックする。すると画面5のようなダイアログボックスが表示されるので、パスワードを入力して[OK]ボタンを押す。
「Xpriori plug-inのインストール」で設定したサーバ情報が使用される
画面5 Xprioriに接続するダイアログボックス
すると、Xprioriに格納されたデータベースの概要が、ツリー状に表示される。
画面6 Xprioriとの接続に成功
なお、要素と属性はアイコンで区別される。 が付いているものが要素であり、 が付いているものは属性となる。ここで表示されるのは、データベースに格納されているXMLの構造である。同名の要素や属性が複数存在する場合、それらは1つにまとめられて表示される。また、インスタンスごとに異なる要素についてはすべて列挙される。これにより巨大なデータであっても、コンパクトな表示を実現している。正確な構造までは見ることができないが、後述する詳細な閲覧ウィンドウを使うことで完全なデータを見ることも可能だ。
これで準備は完了した。早速実際に使ってみよう。プログラムを実行する前に、まずは現状のXMLデータベースの内容を確認してみよう。プラグインのツリーにあるSampleInfo要素をダブルクリックすると、画面7のようなダイアログボックスが表示される。
画面7 Document Listダイアログボックス
これは、同じ名前の要素や属性が複数あった場合に選択可能にするリスト表示と、それに対して行うアクション(View、Edit、Delete)を指定するためにある。SampleInfo要素の場合、対応する要素は1つしかない。1行だけ表示されたリストをクリックして選択状態にしたうえで、下の[View]ボタンをクリックしよう。すると、以下のようにXML文書の内容が表示される。
画面8 表示されたXML文書の内容
この画面で、Counter要素の内容が現在は0であることが読み取れる。これではテスト実行しても、本当に書き換えた結果0になったのか、それとも書き換えは行われず古い値がそのまま残って0という結果になったのか区別できない。そこで、この値を0ではない値に書き換えてしまおう。それを行うには、[Close]ボタンでこのウィンドウを閉じてから、画面7で編集を行う[Edit]ボタンをクリックする。これで、編集可能なXML Editウィンドウが表示される。
画面9 XML Editウィンドウ
上半分が現在の内容で、下半分に新しい値を書き込む。ここではほとんどそのままでよいので、上の内容を全選択して[Ctrl]+[C]キーでコピーする。次に下の領域をクリックしてフォーカスを移したら、[Ctrl]+[V]キーを押して貼り付けよう。そして、Counter要素の「0」という文字を「123」に書き換え、ウィンドウ右下の[Update]ボタンをクリックすればよい。すると、確認のメッセージボックスが表示されるので、[OK]ボタンをクリックする。
画面10 変更の確認を求めるメッセージボックス
現在の仕様では、該当する要素(エレメント)をすべて更新する。ちなみに、Xpriori plug-inのソースコードを公開することも検討されている。もしこれが実現すれば、更新方法の仕様などを自分で修正することもできるようになるだろう。
書き換えが完了したら、前述の[View]ボタンでCounter要素が確かに書き換わっていることを確認しておこう。
最初に紹介したプログラムの実行準備が整った。早速実行してみよう。プログラムの実行は、設定などが正しければ一瞬で終わる。終わったら、前述の手順でもう1度SampleInfo要素を表示させてみよう。
画面11 再びSampleInfo要素を表示
このとおり、確かにCounter要素の内容が「0」に書き換えられたことを確認することができた。作業がすべて終了したら、 ボタンをクリックして、Xprioriとの接続を閉じておくこと。
ここまでの作業が、Eclipseから一歩も出ることなく完了したことに注目してほしい。また、管理コンソールのウィンドウが必要とされなかっただけでなく、データベースの確認や手動変更のためのクエリを1つも書かずに終わったことも見逃さないでほしい。
もちろん、この程度の作業で要求されるクエリは大したものではない。しかし、それでも繰り返し入力することになるとうんざりするし、入力間違いなども入り込みやすい。しかし、Xpriori plug-inを使えばそのような問題からは解放されるのである。
▲このページのTOPへ