OpenDolphin-1.3をMacOSX Tiger上で構築する記録です。1台のMac上にサーバも構築してみようと考えています。このブログでは、元町皮ふ科様のサイトを参考に、それを忠実に(?)再現しようとした試みです。 バイブルサイトのURIは、こちらです。

2008年8月16日土曜日

再びjboss-4.2.3.GAに挑戦

一応システムとしては一通り完成しましたが、現在臨床から離れているので、実際にカルテを書いてみると言っても、何だか実感がわきません。で、以前失敗していたjboss-4.2.3.GA上でサーバを走らせる事に挑戦してみました。

まずは、きちんと動いているOpenDolphin-1.3をソースディレクトリごとコピーして、あらたにOpenDolphin-1.3-jboss4.2を作成、NetBeansプロジェクトに読み込みました。

以前に、OpenDolphin-1.3/libディレクトリに入っていたjarライブラリを、jboss-4.2.3.GA/client以下の相当するライブラリと入れ替えてみるところまでは以前行っていましたが、それだけではうまく行きませんでした。
今回は、たんねんにjboss以下のディレクトリをlibディレクトリに注目してみていったところ、jboss-4.2.3.GA/server/libなんかにも同名のライブラリが入っています。同じものかと思いましたが、シンボリックリンクなどではないようです。ファイルの大きさを較べてみたところ、どうやら別物のようです。jbossのことをほとんど理解していませんので、どちらのライブラリを読み込めば良いのか分かりませんでしたが、jboss-4.2.3.GA/lib以下に一通り揃っていましたので、まずはこちらを使用する事にしました。

とりあえず、相当するjarファイルをすべて入れ替えてみたところ、NetBeans上でエラーが表示されています。
どうやら、javax.ejb.EJBAccessExceptionが見当たらないと言っています。

これをキーワードにググって見たところ、どうやらjboss-ejb3x.jarをライブラリに読み込まなければ行けないようです。そして、このjarファイルをライブラリに登録したところ、NetBeansの警告は消え、無事にビルド終了。
できたopenDolphin-1.3.earをjboss-4.2.3.GA/server/default/deploy以下にコピーしてjbossを起動し、クライエントを立ち上げて接続してみたところ、無事に接続できました。

疑問点、未解決問題

  1. 実はjems版jboss-4.0.5.GAにもjboss-ejb3x.jarというファイルがあるのですが、こちらはライブラリに登録しなくてもビルドが通って無事にOpenDolphinサーバが動いていました。4.2.3.GAでは、何故必要になったのかが釈然としません。
  2. 4.2.3.GA版のopenDolphin-1.3.earでデータベースの初期化ができるかどうか確認していません。

という事で、jboss-4.2.5.GA版のearファイルをこちらに置いています。
ファイル置き場にGoogle Page Creatorを用いていましたが、どうやら今年いっぱいでサービスが終了するとの事で、Google Sitesに移りました。こちらにも置いています。

追記:
jboss-4.2.3.GAに付属のライブラリでコンパイルしたopenDolphin-1.3.earに接続するためには、同ライブラリを用いてビルドしたクライアントが必要です。デジタルグローブ社で配布されているjarファイルでは"SerialVersionUID"が違うというエラーが出てきます。

2008年8月7日木曜日

その後分かったことの追加

久しぶりにエントリーを追加しますが、その後分かったことを追加しておきたいと思います。
  1. このブログにはじめて日本からアクセスがありました。と同時にGoogle検索でも比較的上位に出てくるようになってしまいました。
    このブログを最初からご覧の方はお分かりと思いますが、このサイトは私がバイブルとしている元町皮ふ科様のサイトを忠実にフォローしているだけです。そこで、ブログの説明にその旨を明記しました。
  2. 実は、OpenDolphinクライエント自体は、本家デジタルグローブ様のサイトで配布されています。
    このクライエントの設定を変更すれば、自前サーバにも接続は可能です。ということで、最低限自前で導入が必要なのはサーバ環境ということになります。
    私の環境でビルドした、OpenDolphin-1.3.earをここにアップしておきます。
    *Google Sitesにも同じファイルを置いています。
    PostgreSQLのバージョンが元町皮ふ科様のサイトと異なっています。また、データベース初期化のターゲットアドレスをどこに設定してビルドしたか忘れてしまいましたので、ご使用には注意してください。
  3. 実は、我が家で導入したORCAのPCで、無線LANがうまく動きませんでしたので不便なところに固定になってしまいました。そういったわけで、ORCAのjavaクライエントをMacBookに導入し接続してみましたが、ほとんど問題なく利用できています。
ということで、現在の我が家の環境を整理しておきますと、
Debian Etch: ORCA本体
MacBook: ORCA java client, JBoss Server with Opendolphin server, OpenDolphin Client
といった感じです。

2008年7月31日木曜日

ORCAとOpenDolphinの連携 (成功編)

ソースを眺めてみましたが、私の能力では原因が分かりませんでした。
Debian側からSYNを投げているのは確実ですので、MacBook側でどう対応しているのかを視点を変えてみてみました。
MacOSXでは、パケットキャプチャにtcpdumpが使えます。私の環境ではネットワークインターフェースはen1でしたので、
tmiura$ sudo tcpdump -i en1 > tcpdump.txt
として、キャプチャ結果をテキストファイルに落としてみました。どうやらMacBook側にSYNパケットは届いているようです。

ここで、はたと困ってしまいましたが、こういう場合はネットワークの設定を見直すのが基本のようです。pingは通るので、とりあえずTCP接続はできているようです。しかし、セキュリティソフトを入れていますし、へんなところでアクセス制限をしていないか洗い直してみました。

結果、恥ずかしながらMacOS側でfirewallの設定をしていた事を忘れてしまっていました。firewallをオフにしたところ、無事ORCAから受付情報の受診に成功しました。

これでいよいよOpenDolphinでカルテを開く事ができます。ついでに、スタンプの登録もできそうです。

次回からいよいよ、実際にOpenDolphinを使ってみたいと思います。

ORCAとOpenDolphinの連携 (原因究明編)

前回は、OpenDolphin-1.2.5のユーザーズマニュアルを参考にORCAとOpenDolphinの連携のためのセッティングを行ってきましたが、失敗してしまいました。
ORCA上でも受付情報の送信が「遮断」と出ていますので、送信自体が失敗しているようです。

で、いろいろ調べてみますと、どうやら株式会社デジタルグローブ社のウェブサイトに「Dolphin-ORCA連携」というページがあるではありませんか。
こちらに、より詳細な設定が記載されていました。
主な違いは、jma-receiptサーバのセッティングでしたが、これはOpenDolphinからの情報を受け取る方ですので、とりあえず受け付け情報がOpenDolphinにわたらない原因ではなさそうです。

一応、情報の内容としては、ウェブページの方が新しそうでしたので、ウェブページに準拠してセッティングを変更してみましたが、やはり受付情報の受け渡しがうまく行きません。

よくわからなかったので、Debian側にWiresharkをインストールしパケットをキャプチャしてみました。結果、どうやらDebian側から192.168.0.5にSYNパケットは投げられていますが、それに対する応答が無いようです。

ここで、どうやってソケット接続をしているのかソースにあたってみようと言う無謀な試みに出ました。ここで、おかしな事に気がつきました。
Dolphin側では30秒ごとに新規受付があるかどうか確認しているとの事ですが、ORCAのClaimでは、どうやら受付登録時にその情報を送信しているだけのようです。つまり、DolphinがClaimを介してORCAにその都度問い合わせをしているのであれば、Claimに情報を要求するようなシステムが必要になるはずです。でも、どうやらそういった仕組みはなさそうです。
では、30秒ごとの確認ってなに???

で、ソースを見てみた感じの推測ですが、OpenDolphinでソケットサーバを用意しておいて、ORCAから送信される受付完了のClaim送信を受信しているようです。それをいったんOpenDolphinで自前のデータベースに登録して、30秒ごとにOpenDolphinが自前のデータベースに検索をかけているという事のようです。

この仕組みからすると、ORCAが受付完了の情報をClaim送信する際に、OpenDolphin側のClaimサーバが起動していなければ、その情報はOpenDolphin側に受け渡されない事になります。で、OpenDolphinのClaimサーバは、OpenDolphinのクライアントに含まれていますので、つまりOpenDolphinを起動する前の受付情報はOpenDolphinに渡されない事になりそうです。

この辺は、もしOpenDolphin側のClaimサーバをOpenDolphinクライアントと分離できれば、たとえばORCA起動PCで同時に立ち上げておけば受付情報が抜ける問題については解決できそうです。
もしくは、どうせOpenDolphinはORCAが無いと導入が難しいので、Claimという粗結合を廃して直接ORCAのデータベースをたたいて情報を得るようにしてしまえば良いと思うのですが、、、。

話はそれましたが、Javaでは具体的にソケット通信の詳細をコーディングしているわけではなさそうなので、なぜOpenDolphinがSYNに応答しないのか分かりませんでした。

ORCAとOpenDolphinの連携 (失敗編)

ORCAのインストールが、以外にあっさり終わってしまったのには驚きでした。Debianをインストールした事のある人なら、難なく導入できそうです。まあ、運用の方が大変なわけですが、、、。
そこで、今回はいよいよORCAとOpenDolphinの連携のセッティングをしていきます。

まずは、株式会社デジタルグローブ様のサイトにあるOpenDolphin-1.2.5ユーザーズガイドにそって設定をしていきます。具体的には、「第3章 ORCAとの接続」です。

まずは、環境を、
MacBook (MacOS 10.4.11 Tiger)
OpenDolphin server : JBoss-4.0.5
OpenDolphin client
IP address : 192.168.0.5/24

VAIO PCG-V505 (Debian Etch)
ORCA (jma-receipt)
IP address : 192.168.0.8/24

1) まずはORCAを導入したDebian側のPostgreSQLの設定を変更します。

1-1) /etc/postgresql/postgresql.confの編集で、tcpip_socket = ONを追加するように記載されています。が、Debianでは、confファイルのパスが異なっていますし、設定の記載方法もPostgreSQL8.*では異なっているようです。
/etc/postgresql/8,1/main/postgresql.conf
をvimやgeditなどで編集します。編集部分は以下です
#Listen_addresses = 'localhost'

Listen_addresses = 'localhost, 192.168.0.8'

1-2) 次に同じディレクトリにあるpg_hba.confファイルに以下の記述を追加します。
host all all 192.168.0.0/24 trust
以上の設定で、192.168.0.0/24ネットワークからORCAのPostgreSQLに直接接続できるようになります。
どうやらOpenDolphinのクライエントから直接ORCAのPostgreSQLに接続して情報を得るようです。受付情報などは、Claimを利用していると明記されていますので、これはスタンプの作成などに使われるのでしょうか?

以上の設定が終わったら、postgresユーザもしくはスーパーユーザでpostgreSQLを再起動しておきます。

2) 次にORCAのクライエントから、「CLAIM接続情報」の各項目を設定します。

3) 最後にOpenDolphinの設定画面でレセコンの設定を行います。

詳しくは、株式会社デジタルグローブのサイトからこちらのマニュアルをダウンロードしてみてください。

OpenDolphin-1.2.5ユーザーズマニュアル

以上の設定を終えて、ORCA上で患者情報を登録、受付をしてみましたが、OpenDolphinに受付情報が送られてきません、、、。
ん〜。どうしたものでしょうか?

2008年7月28日月曜日

ORCA編 -ORCAのインストール-

前回のエントリーでDebianのインストールができましたので、いよいよORCAのインストールに移りたいと思います。

ORCAの本家サイト

といっても、本家サイトからソースをダウンロードしてきて、./configure & makeなんてする必要は無く、/etc/apt/sources.listにORCAのサイトを追記してaptitude一発ですね。特にエラーもなく終了。続いて同じPCにクライエントもインストール(こちらもaputitude一発)しました。
具体的な手順は、こちらのPDFファイルに忠実に従いました。

一通りインストール完了後、
oruser@debian:~$ glclient -dialog &
で、ORCAクライエントが立ち上がりました。設定したユーザーおよびパスワードを入力すると、無事にORCAが立ち上がりました。

ORCA編 -Debian etchのインストール-

今回から別のPCにORCAを導入していきます。
導入するPCは、古いVAIO PCG-V505です。
PentiumII 2GHz, Memory 512M
出荷時からC, Dドライブ(いずれもNTFS)に分けられており、CドライブにはWindowsXPがプリインストールされていました。
Dドライブが15Gほど開いていましたので、このDドライブを小さくして、開いた領域にDebianをインストールしようという計画です。

まずは、現在使用中のDドライブの大きさを変更しなければなりません。
遠い昔の記憶ですが、fdiskを使ってパティションの変更をしていたのですが、どうやらNTFSに対応していないらしく、ググって見たところ最近はGPartedというソフトウェアを使うのがはやりのようです。
GParted本家サイト
ここからLiveCDのisoファイルを落としてきてCDに焼き、このliveCDから起動してDドライブを短縮し新たにDebianをインストールする領域を確保する事ができます。GUIで直感的に作業できますが、パーティションをいじりますので、直感で作業するのはやめたほうが良いと思います。最終的に、ext3ファイルシステムで10G, スワップに2Gほど確保しました。

次にDebianのインストールCDを準備します。
Debian本家サイト
本家サイトよりnetinst CDをダウンロードし、ORCAのインストール説明に詳細があるようにインストールをしていきます。
異なる点は、パーティションの割当の部分くらいです。

以下にちょっとトラブった点について記載しておきます。
  1. 最初はブータブルCDを700MBのCD-Rに焼いていましたが、なぜかVAIOで認識しません。古いのでCD-Rが壊れてるのかとも思いましたが、遠い記憶をたどって、おそらくVAIOのCD-Rが650MBのCD-Rまでしか対応していなかった可能性を思い出しました。近くで650MBのCD-Rを売っていませんでしたので、手元にあったDVD-Rに焼いてインストールしました。
  2. ブートローダのGRUBのインストールに失敗しました。しょうがないのでliloを入れたのですが、再起動するとLinuxしか立ち上がってきません。昔はいろいろとメニューが出てきたような記憶があるのですが、、、。ちょっと調べてみると、LILOの後で[Ctrl]を押すとメニューが出てくるようです。実際に元々インストールしていたWindowsが無事に立ち上がる事が確認できました。
以上で、ORCAをインストールするためのDebianPCが完成したようです。

とりあえずまとめ(1)

とりあえず現在の時点での状況をまとめておきます。
  1. なんとかOpenDolphinサーバ・クライアントの構築には成功したっぽい。
  2. 一応動いている
  3. ただし、ORCAと連携しないと詳細な機能が使えないので、動作の確認がとれない。
ORCAと連携していないとスタンプの作成もできないようです。新規患者の受付だけであればなんとかできるかもしれませんが、とりあえずOpenDolphinの機能を評価するにはORCAが必要なようです。

ということで、ORCAを別のPCに導入してみたいと思います。次回からは、ORCA導入編のスタートです。

2008年7月26日土曜日

プロパティファイルの作成

前のエントリーの最後のスクリーンショットをご覧になると分かるように、メインウィンドウ名がnullになっていたりします。そこで、client/resourcesディレクトリ以下のテキストファイルをすべてプロパティファイルにしてみます。
ということで、
tmiura$ native2ascii -encoding Shift_JIS Dolphin.txt Dolphin.properties
tmiura$ native2ascii -encoding Shift_JIS EditorFrame.txt EditorFrame.properties
tmiura$ native2ascii -encoding Shift_JIS NewKarteDialog.txt NewKarteDialog.properties
tmiura$ native2ascii -encoding Shift_JIS SimplTextPane.txt SimplTextPane.properties
tmiura$ native2ascii -encoding Shift_JIS WindowsMenuFactory.txt WindowsMenuFactory.properties

こんな感じで変換していきます。だいぶ感じよくなてきました。

2008年7月25日金曜日

メニュー

メニューが表示されない件についてちょっと調べてみました。

open/dolphin.client以下でそれらしいclassを探したところ、AbstractMenuFactory.javaを発見しました。中身は至ってシンプル、OSを調べてMacであればMacMenuFactoryのインスタンスを作成し、それ以外であればWindowsMenuFactoryのインスタンスを作成する典型的なFactory patternになっているようですね。

で、今回はMacの問題なので、MacMenuFactoryを見てみます。ん〜。普通のメニューのコードっぽいけど、、、。でも、なんかメニューを選択した後のアクションはアノテーションで指定しているっぽいな。メニュー項目は、英語決めうちの様に見えるのに、なんで見えないのかな?
で、ちょっと気になったコードが以下です。
ApplicationContext ctx = ClientContext.getApplicationContext();
ResourceMap resMap = ctx.getResourceMap(MacMenuFactory.class);

なんだかリソースっぽいものを読み込むコードの様ですが、具体的なファイルの指定がありません。どうやらApplicationContextを使ったリソースへのアクセスには、resources.MacMenuFactory.propertiesから得る事になっているようです。ってことでclient/resourcesを覗いてみるとMacMenuFactory.txtなるファイルがあるではないですか。
これをpropertyファイルにかえなければならないようです。

で、そのままファイル名をかえてみたのですが、文字が出てくるには出てきたのですが、文字化けです。ここで、はたと気がつきました。Javaはもともとunicodeがデフォルトだったはずでは?そこで、native2asciiでunicodeにエンコーディングし直したところ、無事に日本語が表示されました。

では、なぜ今までプロパティファイルをnative2asciiをもちいてunicodeに変換しなくっても日本語が正しく表示されていたのか不思議ですが、問題ない部分は問題が出るまでスルーしていきましょう。

client/resourcesフォルダ以下には*.txtファイルが他にもあります。もしかしたらこれらもpropertiesファイルに変更しなければ、どこかで問題が出てくるかもしれません。

2008年7月24日木曜日

とりあえずサーバ・クライエントの構築成功

JbossにセッティングしたOpenDolphinサーバはこれでなんとか行けそうです。

NetBeansからクライアントを起動してみます。
ログイン画面までは行くはずですし、その通りログイン画面が出てきました。

おそるおそる、ユーザー:admin、パスワード:adminを入力してみたところ、OpenDolphinのカルテ画面が立ち上がりましたwktk。

で、問題発見。

新規患者が登録できない。
ググってみたところ、どうやら受付は連携するORCAでするってことらしい。

ん〜。Debian入れるPCが手元に無いんだよな〜。
どうしたものかな〜。
新規患者を登録できなければカルテが開け無いので、プラグインの動作確認もできません。

さらに、もう一つ問題発見。
メインのメニューが表示されていない!!!

とりあえずORCAからは受付情報をclaimで受け取っているらしい。最終的にはORCAとの連携をテストするところだけれども、とりあえずOpenDolphin単体のテストをするために、perlかなんかでclaim送信するスクリプトをかいてみるかな〜。できるかどうか分からないけど、、、。

メニューについては、ちょっとソースを追ってみる事にします。

jboss-4.0.5.GAの構築

前回のエントリーで簡単にjboss-4.2.3.GAの使用をあきらめたように書きましたが、実はすべてのすべてのライブラリをjboss-4.2.3.GAで提供されているそれらしいライブラリに変更して再構築してみました。ところが、やはりデータベースの構築に失敗してしまいます。
PostgreSQLとの通信の問題かもしれないので、その辺りを切り分けるべく、psql83を起動してデータベースが構築されているかどうかを見たところ、少なくともテーブルはできているようです。やはりRMIの名前解決の問題の様です。

ここまで確認したところで、4.2.3の使用をあきらめ4.0.5を使用してみる事にしました。医師は引き際も肝心です。自分の手に負えなくなる前に、確実なところまで撤退する事も、戦略的には重要な事です。

で、jboss-4.0.5.GAをダウンロード、今回はpatchファイルもダウンロードして、/usr/local/jboss/jboss-4.0.5.GA以下に同様に展開インストールしました。patchファイルはantを用いてインストールしましたが、これも付属のドキュメントの指示に従ったのみで特別な事はしていません。

そして、4.0.5からJBossサーバを起動してデータベース初期化スクリプトを起動したところ、名前解決関連のエラーが出ます。
むむむ、先に説明したJNDIViewで見たところ、OpenDolphinが見当たりません。念のため、ラブラリを4.0.5付属のものに切り替えて再構築し直しましたが、結果は同じでした。

ここで、これまでの手順を再度見直しました。私がこれまで行ってきた事と、私がバイブルとしている元町皮ふ科様のサイトと異なる事と言えば、jems-installerを用いなかった事くらいです。

ここで、元町皮膚科様のサイトで、jems-installerを用いてインストールしている場面のスリーンショットをはじめて確認してみたところ、なんと、jems-installerはjboss application serverおよびそのPatch以外にもいろいろとインストールしているではないですか!!!
トラブった時は、うまく行っている先例をトレースすべし、の格言を守って、jems-installerを使ってみる事にしました。
  • JEMS Installer-1.2.0.GA
をダウンロードします。どうやらJavaで書かれているようなので、もしかしたらMacOSXでも動くかと以下のコマンドを実行してみました。
tmiura$ sudo java -jar jems-installer-1.2.0.GA
結果、バイブル通りにインストール完了です。ちょっと拍子抜けです。

その後patchをあて、JNDIViewで確認したところ、きちんとJNDIネームスペースにOpenDolphinが登録されているようです。
再度データベース初期化スクリプトを走らせたところ、無事に終了しました。

なんかいい感じになってきましたね。

OpenDolphinデータベースの初期化-失敗1の原因追及-

さて、前回のエントリーでは見事に失敗してしまいました。
どうやらHost Serviceを取得できていないようなので通信の問題のようです。では、どのような通信を行っているのかをInitDatabase.javaを覗いてみました。
// RMI Connection
String host = prop.get("host.address");
if (host == null || host.equals("")) {
host = "localhost";
}
Properties props = new Properties();
props.setProperty("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");
props.setProperty("java.naming.provider.url","jnp://" + host + ":1099");
props.setProperty("java.naming.factory.url.pkgs","org.jboss.namingrg.jnp.interfaces");
InitialContext ctx = new InitialContext(props);

this.service = (RemoteSystemService) ctx.lookup("openDolphin/RemoteSystemService");

logger.info("Host Service を取得しました。");

この辺が怪しそうです。
JavaのRMIを利用して結局1099ポートにアクセスしているようです。という事で、JBOSSサーバを立ち上げて、1099ポートで待ち受けているかどうかを"netstat -na"で見たところ、なにやら待ち受けているプログラムがありそうです。ここはOK!

次に、RMIで通信するためにJNDIに登録されているかどうかを見ます。
  • ブラウザでhttp://localhost:8080にアクセスしてみてください。
  • JBoss Management -> JML Consoleをクリック
  • jboss -> service=JNDIviewをクリック
  • java.lang.String.list()の項目にあるInvokeボタンをクリック
Global GNDI NamespaceにOpenDolphinの名前があれば、一応サーバとしては検索可能になっていると言えます。

と、と、ところが、これが見当たりません。という事は、RMIサーバにきちんと名前解決できるように設定されていないという事です。

次に調べるべき事は、RMIの名前解決がどのような仕組みで行われているかです。ちょっとググってみたところ、どうやら外部のxml設定ファイルで設定している説明がたくさん出てきます。ところが、これらのxmlファイルがソースファイルに見当たりません。それらしいtxtファイルも見当たりません。

ここで、方針をかえて.earファイルにパッケージされるコンポーネントをbuild.xmlファイルで見てみると、dto, ejb, infomodelディレクトリ以下のファイルという事が分かります。いかにもそれらしいejbディレクトリ以下のファイルを見てみますと、インターフェースとその実装からなっています。で、それぞれのソースを見てみますが、特別にRMIの名前解決サーバに登録しているような記載は見当たりませんでした。
ただ、ちょっと気になったのは、
@Stateless
@Remote({RemoteSystemService.class})
@RemoteBinding(jndiBinding="openDolphin/RemoteSystemService")

以下のアノテーションです。
いろいろググって見ましたところ、どうやらJBossではアノテーションでRMIサーバへの名前登録ができ、OpenDolphinではそれを利用しているらしいという事です。

で、このアノテーションがどういったライブラリで提供されているのか見てみたところ、なんとjboss-4.2.3.GA/clientにjboss-annotations-ejb3.jarという何ともそれらしいjarファイルがありました。
ここで、ちょっと考えてみました。元々のソースコードはjboss-4.0.5.GA用のものですので、それに含まれるライブラリもおそらく当時のものだろう。より新しいjbossサーバを用いるのであれば、それ用のあたらしいライブラリを用いるべきでないか、と!
という事で、NetBeans上でソースコードに梱包されていたjboss-annotations-ejb3.jarを取り除き、jboss-4.2.3.GAで配布されていた同jarファイルを設定し直しました。そして、OpenDolphin-1.3プロジェクトを再構築し、できたがったopenDolphin-1.3.earを再度JBossサーバ配下にコピーしました。

JBossサーバを再起動して、RMIネームスペースを確認したところ、ちゃんと登録されているようです。

しかし、なんと同じエラーでデータベースの初期化ができません。serialUIDがどうのこうのというエラーで、ググっても決定的な解決策はなさそうです。

ここで、いったんjboss-4.2.3.GAを用いる事をあきらめました。

次回は、jboss-4.0.5.GAを用いてデータベース初期化に再挑戦です。

OpenDolphinデータベースの初期化(失敗1)

今回のエントリは、OpenDolphinデータベースの初期化です。

データベース初期化スクリプトは実は、open.dolphin.master.InitDatabaseにハードコーディングされています。で、その際にアクセスするOpenDolphinサーバのIPアドレスもsrc/open/dolphin/master/profiel.txtにハードコーディングされています。
最終的には、必要なファイルをサーバに移動させてローカルで初期化しますので、このprofiel.txtの"host.address="以降をlocalhostに変更します。*余分なスペースなどは入れないでください。

そして、再度OpenDolphin-1.3プロジェクト全体を構築し直します。

こうしてできたOpenDolphin-1.3.jarをlib, setting, securityフォルダとともに、適当なフォルダに移動します。ホームディレクトリ直下辺りにて起動なディレクトリを作成してその中に突っ込んでみてください。
そして、ターミナル上でそのディレクトリに移動し、以下のコマンドを実行します。
tmiur$ sudo java -cp OpenDolphin-1.3.jar open.dolphin.master.InitDatabase admin admin
本来であれば、あれこれメッセージが出た後、「データベースを初期化しました」というメッセージが見えるはずですが、どうやらHost Serviceの取得に失敗しているようです。

何だか嫌な予感がメラメラと湧いてきましたね。

OpenDolphinサーバの構築

さて、いよいよOpenDolphinをJBOSSサーバに組み込んでいきます。いつも参考にさせていただいている元町皮ふ科様のサイトではserver(3)にあたります。

まずは、OpenDolphinサーバの組み込みに必要な設定ファイルをダウンロードします。OpenDolphin-1.3のソースコードには既に含まれていないそうですので、元町皮ふ科様のサイトよりダウンロードしてください。(以下のリンクは元町皮ふ科のサイトへの直リンクです。できればいったん元町皮ふ科様のサイトに飛んでダウンロードしてください。)
です。
これらを、OpenDolphin-1.3-src-dist/srcディレクトリに保存してください。

次に、ソースファイルからJBOSSサーバに組み込むearファイルを作成するために、OpenDolphin-1.3プロジェクトのbuild.xmlに-post-jarを追加します。追加する内容は、これも元町皮ふ科様のサイトよりダウンロードしてください。
追加する位置は、の直前です。

次にJBOSSに配置するearファイルを構築します。といっても、NetBeansのプロジェクトwindowから、OpenDolphin-1.3を[Ctrl]クリックし、構築を選択してください。OpenDolphin-1.3-src-dist/distフォルダにopenDolphin-1.3.earができていると思います。

次に、いよいよ設定ファイルとearファイルをJBOSSに配置していきます。
まず、起動スクリプトを編集します。/usr/local/jboss/jboss-4.2.3.GA/bin/run.shを適当なエディタで開きます。
実は/usr/local/jboss以下のディレクトリにはMacOSXのFinderからアクセスできません。私はターミナルからviで編集していましたが、もしテキストエディタなどを利用したい方は、Finderからアクセス可能なディレクトリにJBOSSを展開しておく方が良いかと思います。いまさら何を言うという突っ込みはなしでお願いします。
# Setup JBoss sepecific properties
JAVA_OPTS="-Dprogram.name=$PROGNAME -Djava.net.preferIPv4Stack=true $JAVA_OPTS"

どちらかというと下の方にJAVA_OPTSの設定がありますので、赤字の部分を付け加えてください。

次に構築した.earファイルと設定ファイルをJBOSSサーバに配置していきます。
tmiura$ cd [ソースコードを展開したディレクトリ]/OpenDolphin-1.3-src-dist/dist
tmiura$ sudo cp openDolphin-1.3.ear /usr/local/jboss/jboss-4.2.3.GA/server/default/deploy/
tmiura$ cd ../src
tmiura$ sudo cp postgres-ds.xml /usr/local/jboss/server/default/deploy
tmiura$ sudo cp login-config.xml /usr/local/jboss/server/default/conf
tmiura$ sudo cp postgresql-8.3-603.jdbc3.jar /usr/local/jboss/server/default/lib
以上で配置完了です。

では、実際にJBOSSサーバを起動してみましょう。
tmiura$ sudo /usr/local/jboss/jboss-4.0.5.GA/bin/run.sh
大量のメッセージとともにJBOSSサーバが無事起動すれば、ひとまずクリアです。
JBOSSサーバの起動確認には、ブラウザからhttp://localhost:8080にアクセスしてみてください。

JBOSSサーバの構築

いよいよ今回JBOSSサーバを構築していきます。いつも参考にさせていただいている元町皮ふ科様のサイトではserver(2)にあたります。

JBOSS本家サイト

本家サイトを見ても、ごちゃごちゃしていて全容がよくわかりません。MacOSX, JBOSSでググるとどうやら一般的にJBOSSと言っているのはアプリケーションサーバの事のようです。しかも、インストールはファイルをダウンロードしてきて適当な場所に解凍するだけだと書いてあります。

ここで改めて元町皮ふ科様のサイトを見てみると、なにやらX windowの設定をされてjems-installerを用いてインストールされています。おそらくjems-installerの日本語表示を行うためにこのような設定をされているのだと思われますが、今回はMacOSXにインストールするので、X-terminalの設定はスルー。さらに、jems-installerがMacOSX上で動くかどうか分からなかったので、使用しない事にしました。(これが後々のトラブルの元とは、、、)

で、元町皮ふ科様のサイトでは、
jboss-4.0.5.GA
jboss-EJB-3.0_RC9_Patch_1.zip
がインストールされていましたので、本家サイトでこれらのファイルを探します。
するとどうやら最新版のJBOSS Application Serverは4.2.3.GAであり、この最新版にはEJB3用のパッチは必要ないと記載されているではないですか。これまでも最新版を追ってきましたので、とりあえずこの最新版をインストールしてみる事にしました。(あとから見るとこの辺りで既にどつぼにはまっていました)

JBOSS本家サイトのDownloadページから、Jboss Application Serverをクリック。バージョン4.2.3.GAのDownloadをクリックして、jboss-4.2.3.GA.zipをダウンロードしてきます。
このファイルを解凍して、/usr/local/jboss/jboss-4.2.3.GAディレクトリにコピーします。
試しに、jboss-4.2.3.GA/bin/run.shを実行してみます。
tmiura$ cd /usr/local/jboss/jboss-4.2.3.GA/bin
tmiura$ sudo ./run.sh
何やらメッセージが出てきて最終的には
11:48:28,500 INFO  [Server] JBoss (MX MicroKernel) [4.2.3.GA (build: SVNTag=JBoss_4_2_3_GA date=200807181417)] Started in 24s:629ms
こんな感じのメッセージが出れば無事起動成功と思われます。
確認の為に、ブラウザを立ち上げhttp://localhost:8080にアクセスし、こんな画面が出れば無事起動成功です。

2008年7月23日水曜日

JBOSSサーバ構築の準備

JBOSSサーバを構築する準備をします。いつも参考にさせていただいている元町皮ふ科様のサイトでは、seerver(1)以降になります。同サイトでは、別のPCにDebian Etchをインストールされていますが、今回はローカルのMacOSX Tiger上にサーバも構築してしてみます。

JavaはもともとMacOSXに含まれていますし、
PostgreSQL
Apache-Ant
はすでにインストールしました。

あとは、MacOSX上のターミナルで日本語を表示させるようにすることです。もともとMacOSXのターミナルでは文字コードがUTF-8に設定されているので日本語を表示できるはずですが、OpenDolphinがターミナルに吐いてくる情報はShift_JISのようですので、文字コードのセッティングをShift_JISに変更しておきます。

まずは、ターミナルを立ち上げてください。そして、[コマンド]+Iもしくは[ファイル]->[情報を見る]を選択してください。
すると、以下のような情報ウィンドウが現れると思います。ポップアップメニューから[ディスプレイ]を選んで下の方に出てきた[文字セットエンコーディング]から[日本語 Shift_JIS]を選択してください。デフォルトのセッティングとして保存しておくと、次回からターミナルを立ち上げた際にも、このセッティングが適応されます。

プラグインの構築

さて、一通りOpenDolphinクライアントのコンパイルが通り動く事が確認できたら、次にプラグインの構築を行います。どこかのサイトでOpenDolphinの作者のかたが説明していたのですが、OpenDolphinでは、本体で基本的な機能のみを提供し、その他の具体的な機能はプラグインという形で提供する事により拡張性を維持しているとの事です。
毎度参考にさせていただいている(というより、そのままなんですが、、、)元町皮ふ科様のサイトでいうとNetBeans(3)に相当します。

元町皮ふ科様のサイトでは、まずJBOSSサーバに必要な設定ファイルをダウンロードするように記載されていますが、とりあえずプラグインのコンパイルには必要なさそうですので、ダウンロードだけして所定の位置に配置しておきます。

次にJarBundlerを用いて、ダブルクリックでアプリケーションが起動するように構築し直されていますが、これもプラグインのコンパイルには必要なさそうですので、とりあえずスルーします。
.earファイルを構築するためのbuild.xmlへの追加もとりあえず後回しにしておきます。

そして、ここからが実際のプラグインの構築方法になります。元町皮ふ科様のサイトでは、例としてCareMapDocumentプラグインの構築方法が示されていますが、同様の方法でsrc/pluginsディレクトリにあるすべてのプラグインをコンパイルしてください。
  1. NetBeansで新規プロジェクトボタンをクリックし,「既存のソースを使用する Java プロジェクト」を選択。プロジェクトフォルダとしてsrc/plugins/CareMapDocument を選択して、プロジェクト名としてCareMapDocumentと入力し、[次へ>]ボタンを押します。
  2. ソースパッケージフォルダに[フォルダを追加...]のボタンを押して、src/plugins/CareMapDocument/srcフォルダを選択し、新規プロジェクトを作成します。
  3. 次にNetBeansのプロジェクトwindowでCareMapDocumentプロジェクトを展開すると、Source PackagesとLibrariesの2つのフォルダが見えると思います。ここで、Librariesフォルダを[Ctrl]クリックし[Add JAR/Folder...]を選択、前のエントリーでコンパイルしてできたOpenDolphin-1.3.jarファイルを指定します。
    *NetBeansでは構築されたjarファイルは、distファイル下に配置されます。OpenDolphin-1.3プロジェクトを作成したディレクトリ、つまり最初にソースファイルを展開したディレクトリ直下にdistフォルダが作られていると思いますので、そこを見てみてください。NetBeans上からは、ファイルwindow上でたどる事ができます。
  4. 次にCareMapDocumentプロジェクトのbuild.xmlファイルに元町皮ふ科様のサイトからダウンロードしたplugin-post-jar.xmlを追加します。
    まず、build.xmlファイルがどこにあるかですが、ファイルwindowでCareMapDocumentフォルダを展開したら下の方に見つける事ができると思います。これをダブルクリックして開き、plugin-post-jar.xmlの内容をコピーペーストします。
    挿入する位置は、</project>の直前です。
    反転した部分がplugin-post-jar.xmlを挿入した部分です。
    これにより、コンパイルされたプラグインjarファイルがOpenDolphin-1.3のpulginsフォルダにコピーされるようになります。
  5. 次に、OpenDolphin-1.3-src-distフォルダ直下にあるlog,schema,security,setting の各フォルダを dist フォルダ内にコピーして持ってきます。
    NetBeans上では、フォルダwindowで上記4つのフォルダを選択肢、コマンド+Cでコピーします。次にdistフォルダを選択してコマンド+Vでペースとしてください。よくわからなければFinder上でコピーペーストしても問題ないと思います。
  6. また、元町皮ふ科様のサイトでは、distフォルダ内にpluginフォルダを作成するように記載されていますが、plugin-post-jar.xmlではpluginsフォルダに構築したjarファイルを展開するように記述されています。pluginsフォルダを作成してもかまいませんし、もしなければコンパイル時に勝手に作られるようです。
    どちらが正しいのか今のところ解りませんが、とりあえずpluginsで突き進みたいと思います。
    (追記)
    Dolphin_ja.propertiesファイルを見ていたところ、23行目に
    plugins.dir=plugins
    という記載が見られましたので、pluginsが正しいようです。
  7. 元町皮膚科様のサイトでは、以上でプラグインコンパイルの準備完了で、プロジェクトwindowに戻りCareMapDocumentプロジェクトを[Ctrl]クリックで選択、出てきたポップアップメニューから構築を選択するように記載されています。
    基本的にはこの手順で問題ないのですが、プラグインによってはさらにライブラリを追加登録しなければコンパイルが通らないようです。
ということで、プラグインをコンパイルするのにOpenDolphin-1.3.jar以外に必要だったライブラリを以下に列記しておきます。
  • CareMapDocument : Velocity-1.4.jar, Velocity-dev-1.4.jar
  • DrawTest : appframework-1.0.3.jar
  • ImageBrowser : appframework-1.0.3jar, log4j.jar
  • LaboTestImporter : log4j.jar, jdom.jar
  • PatientSearch : appframework-1.0.3.jar, log4j.jar
  • PvtClientServer : log4j.jar, jdom.jar
  • SendClaim : log4j.jar
  • SendMml : log4j.jar
  • WaitingList : log4j.jar
いずれも、OpenDolphin-1.3-src-dist/libディレクトリ内に見つける事ができます。
この辺が、これまでの手順の間違いによるものなのかは分かりませんが、とりあえず上記jarファイルをライブラリに追加する事によりコンパイルは通るようになりました。

とりあえずログイン画面まで

今回は元町皮ふ科様のサイトでNetBeans(2)にあたる部分をトレースしていきます。

まず最初に説明されている部分は、src/open/dolphin/resourcesディレクトリにあるDolphin.sjis.propertiesファイルの内容を、あらたに同ディレクトリに作成したDolphin_ja.propertiesにコピーする事です。で、なぜこんな事をしなければいけないのか、ちょっと調べてみました。
*NetBeansからDolphin_jaファイルを作成する場合は、はじめにプロパティファイルを指定して作成しますので、ファイル名としてはDolphin_jaとだけ入力してください。(元町皮ふ科様のサイトの通りです。)

NetBeans上で[File]->[Find in Projects]を選択してください。するとポップアップが出てきますので、Containing textで”Dolphin_ja"と入力し、Scopeでは"Open Projects"を選択し”Find"ボタンを押します。NetBeans上で開いているプロジェクトすべてを検索対象としてDolphin_jaを検索するという意味です。
おそらくOpenDolphin-1.3-src-dist/open/dolphin/client/ClientContextStub.javaが引っかかってくると思います。
次にこのClientContextStub.javaファイルをダブルクリックして実際のコードを見てみます。Dolphin_jaを検索してみますと51行目に以下のような記載が見られると思います。

private final String RESOURCE = "open.dolphin.resources.Dolphin_ja";


これは
まさに、src/open/dolphin/resources/Dolphin_jaプロパティファイルのパスをRESOURCEという変数に代入している事になります。
次に、RESOURCEで検索しますと74行目に、

resBundle = ResourceBundle.getBundle(RESOURCE);

このように記載されており、RESOURCEがさすファイルからResourceBundleを獲得しています。そして、このResourceBundleをとおして、Dolphin_ja.propertiesファイルに記載された情報を得るようになっています。
つまり、OpenDolphinではsrc/open.dolphin/resource/Dolphin_ja.propertiesファイルから情報を読み込むようにハードコーディングされているわけです。
ですから、これらの値を変更するにはこのDolphin_ja.propertiesファイルを変更して最終的なjarファイルにパッキングし直せば良い事になります。

後は、NetBeansからOpenDolphin-1.3プロジェクトを構築し実行してみましょう。ログイン画面が出ましたら、ひとまずここまでは成功です。

OpenDolphinのソースコードのダウンロードとNetBeansへのセットアップ

いよいよ、OpenDolphinのソースコードをダウンロードしてNetBeansプロジェクトとして取り込んでいきましょう。

デジタルグローブ社 -> ダウンロードにあるOpenDolphin-1.3/src/dist.zipをダウンロードしてください。

次に、このファイルを適当な場所に展開します。といってもダブルクリックするだけです。後々ターミナルからアクセスする事を考えると、パスに日本語が入っていない方が無難だと思います。
解凍したソースコードは以下のような構造になっています。
OpenDolphin-1.3-src-dist
|-lib
|-log
|-plugins
|-shema
|-security
|-seting
|-src
あとは、このソースツリーをNetBeansに取り込んでいくのですが、じつは元町皮ふ科様のサイトと全く同じです。(そういってしまうとこのブログ全体が、同サイトの内容を追従しているだけなんですが、、、。)
唯一異なる点は、最新のPostgreSQLをインストールしましたので、それにあわせたJDBCドライバーを用意する必要がある事くらいです。

Googleで"PostgreSQL JDBC"で検索すると、
PostgreSQL JDBCの本家サイト
にたどり着きます。左のメニューから"Download"を選択すると、なんとCurrent Versionに
の2種類があります。
オリジナルではlibディレクトリ(フォルダ)には、JDBC3相当のドライバが含まれていましたので、今回は上のドライバをダウンロードしてきました。そして、libディレクトリに含まれていたpostgresql-8.2-504.jdbc3.jarをダウンロードしたpostgresql-8.3-603.jdbc3.jarと入れ替えてください。

後は元町皮ふ科様のサイトで、画像を示しながらステップバイステップで説明がありますので、一つ一つ確認しながら手順をすすめて行ってください。特に迷うようなところは無いと思います。

MacPortsを利用したAntのインストール

いずれ必要になるApache Antもついでにインストールしておきましょう。

Apache Ant本家サイト

こちらも元町皮ふ科様のサイトでは、Ant-1.6.5-6がインストールされていましたが、せっかくですから最新のもをインストールしてみたいと思います。時に、異なったバージョンが原因でトラブルになる事がありますが、そのときはインストールし直せば良いので、この方針で突き進んでいきます。
手順としては前回のPostgreSQLのインストールと同じです。
tmiura$ port search ant
oracle-instantclient databases/oracle-instantclient 10.2.0.4.0 Oracle database connection libraries
apache-ant devel/apache-ant 1.7.1 Java opensource build system
nant devel/nant 0.85 .NET build tool
semantic editors/semantic 1.4.4 Infrastructure for parser based text analysis in Emacs
mergeant gnome/mergeant 0.12.1 A GNOME SQL database admin tool.
Pantomime gnustep/Pantomime 1.2.0pre3 a framework for supporing POP, IMAP3, and SMTP
antigraingeometry graphics/antigraingeometry 2.5 A high quality rendering engine for C++
objectweb-anttasks java/objectweb-anttasks 1.3 ObjectWeb ant tasks
kde-i18n-esperanto kde/kde-i18n-esperanto 3.5.8 KDE esperanto language files.
koffice-i18n-esperanto kde/koffice-i18n-esperanto 1.5.2 KOffice esperanto language files.
antlr lang/antlr 2.7.7 antlr is ANother Tool for Language Recognition
Pantomime-Framework mail/pantomime-framework 1.2.0pre1 a framework for supporing POP, IMAP3, and SMTP
octave-physicalconstants math/octave-physicalconstants 0.1.5 Physical Constants from Atomic & Molecular Physics, taken from NIST database
antinat net/antinat 0.90 A powerful, configurable and flexible SOCKS server
dante net/dante 1.1.19 A circuit-level firewall/proxy
p5-want perl/p5-want 0.12 A generalisation of wantarray
libquantum science/libquantum 0.2.4 library for the simulation of a quantum computer
antiword textproc/antiword 0.37 Utility to read Microsoft Word (.doc) files
enchant textproc/enchant 1.4.2 Spellchecker wrapping library
mod_antispam www/mod_antispam 1.0 mod_antispam is an apache2 module that can control spam access


たくさんでてきましたが、目的のものはapache-antですね。バージョンは1.7.1で最新のものです。
tmiura$ sudo port install apache-ant
これで無事antのインストールまで終了しました。

便利な世の中になったものです。

MacPortsを利用したPostgreSQLのインストール

MacPortsを利用してOpenDolphinのデータベースバックエンドとなるPostgreSQLをインストールします。

PostgreSQLの本家サイト
日本PostgreSQLユーザー会のサイト

元町皮ふ科様のサイトでは、Debian EtchにあわせてPostgreSQL 8.1を導入されていますが、せっかくだから最新のものをインストールしてみます。

まずは、MacPortsにあるPostgreSQL関連のパッケージを検索します。コンソールを立ち上げて以下のコマンドを実行します。
tmiura$ port search postgresql
postgresql7 databases/postgresql7 7.4.21 The most advanced open-source database available anywhere
postgresql80 databases/postgresql80 8.0.17 The most advanced open-source database available anywhere
postgresql80-doc databases/postgresql80-doc 8.0.17 Documentation for the postgresql database
postgresql80-server databases/postgresql80-server 8.0.17 run postgresql80 as server
postgresql81 databases/postgresql81 8.1.13 The most advanced open-source database available anywhere
postgresql81-doc databases/postgresql81-doc 8.1.13 Documentation for the postgresql database
postgresql81-server databases/postgresql81-server 8.1.13 run postgresql81 as server
postgresql82 databases/postgresql82 8.2.9 The most advanced open-source database available anywhere
postgresql82-doc databases/postgresql82-doc 8.2.9 Documentation for the postgresql database
postgresql82-server databases/postgresql82-server 8.2.9 run postgresql82 as server
postgresql83 databases/postgresql83 8.3.3 The most advanced open-source database available anywhere.
postgresql83-doc databases/postgresql83-doc 8.3.3 Documentation for the postgresql database
postgresql83-server databases/postgresql83-server 8.3.3 run postgresql83 as server
postgresql_autodoc databases/postgresql_autodoc 1.25 Automatic documentation generator for postgresql databases
postgresql-jdbc java/postgresql-jdbc 8.0-311 PostgreSQL JDBC driver
py-postgresql-exception python/py-postgresql-exception 0.2 exceptions for the py-postgresql modules
py-postgresql-greentrunk python/py-postgresql-greentrunk 0.1 greentrunk interface to postgresql
py-postgresql-layout python/py-postgresql-layout 0.3 layout for the py-postgresql modules
py-postgresql-pqueue python/py-postgresql-pqueue 0.1 pure python implementation of the pq protocol
py-postgresql-proboscis python/py-postgresql-proboscis 0.1 postgresql database connector in pure python

どうやらPostgreSQL83が最新のパッケージのようです。実際のインストールは、root権限が必要ですから
tmiura$ sudo port install postgresql83
tmiura$ sudo port install postgresql83-server

とします。
あとは、インストール時に表示される指示に従い
PostgreSQLを自動起動するように設定。
tmiura$ sudo launchctl load -w /Library/LaunchDaemons/org.macports.postgresql83-server.plist
データベース領域の確保および初期化を行います。
tmiura$ sudo mkdir -p /opt/local/var/db/postgresql83/defaultdb
tmiura$ sudo chown postgres:postgres /opt/local/var/db/postgresql83/defaultdb
tmiura$ sudo su postgres -c '/opt/local/lib/postgresql83/bin/initdb -D /opt/local/var/db/postgresql83/defaultdb'

以後はMacを立ち上げる際にはPostgreSQLが自動起動するようになります。
一応確認。
tmiura$ ps ax | grep postgresql
32 ?? Ss 0:00.01 /opt/local/bin/daemondo --label=postgresql83-server --start-cmd /opt/local/etc/LaunchDaemons/org.macports.postgresql83-server/postgresql83-server.
65 ?? S 0:01.16 /opt/local/lib/postgresql83/bin/postgres -D /opt/local/var/db/postgresql83/defaultdb
2451 p1 R+ 0:00.00 grep postgresql


ちゃんとPostgreSQL83が起動しているようです。

MacPortsのインストール

MacPortsはMacOSXのためのパッケージ管理ソフトウェアです。ずいぶん昔にFinkを使っていたことがあるのですが、最近はMacPortsの方がポピュラーになってきているようですので、こちらを導入してみました。

MacPort本家サイト

上記本家サイトの"Installing MacPorts"に一通り目を通し、私の場合はTiger(Universal)のdmg disk imageをダウンロードしてきました。
ダウンロードが終了すると勝手にディスクイメージをマウントしてくれますので、その中にあるpkgインストーラを起動し、あとはインストーラの指示に従ってインストールしてください。

MacPorts自体の使い方は、あちこちにページがありますのでそちらをご参照ください。
MacPortsWiki-JPなんてサイトもあります。

2008年7月22日火曜日

環境について

まずは、使用するPC環境について書いておきます。

PC : MacBook CoreDuo 2GHz with 1GB memory
OS : MacOSX 10.4.11 Tiger
Xcode-2.4.1インストール済み
IDE: NetBeans6.0 (WebおよびJavaEE版)

Xcode-2.4.1は、Apple Developer Conferenceに登録(無料)するとダウンロード可能です。今回は、AntやPostgreSQLをインストールするのにMacPortを用いましたが、そのために必要になります。

NetBeansは、
Product Version: NetBeans IDE 6.0 (Build 200711261600)
Java: 1.5.0_13; Java HotSpot(TM) Client VM 1.5.0_13-121
System: Mac OS X version 10.4.11 running on i386; SJIS; ja_JP (nb)
このような環境です。
現在は、NetBeans6.1が出ているようですね。おそらく6.1でも大きくは変わっていないと思います。
ダウンロードはこちらから
NetBeansには、含まれるコンポーネントによっていくつか種類があるのですが、今回私が使用したのは、「Web および Java EE」版です。もともと、インストールしていたためそのまま用いたのですが、JavaEEの機能をNetBeans内からは使用していませんので、JavaSE版でも問題ないかもしれません。

OpenDolphinについて

OpenDolphinというオープンソースの電子カルテソフトウェアがあります。
元々は、経済産業省の公募プロジェクトから始まり、その成果がオープンソースとして、現在株式会社デジタルグローブ社より公表されています。ライセンスは、GNU GPLでJavaで記述されています。
ただし、ソースコードは公開されているのですが、バイナリファイルは公開されておらず、サーバ・クライアントともに構築するには、やや専門的な知識が必要なようです。

世の中には、オープンソースの電子カルテシステムプロジェクトがいくつかあります。
こちらのDebianのサイトに詳しくまとめられていますので参考にしてください。
これらはすべて海外製のソフトウェアになります。現実的に、これらの電子カルテを臨床現場に導入するには、日本の医療制度に適合したレセコンソフトと連携がとれる必要がありますが、確認はしていませんがこれらの海外製電子カルテソフトが、この要件を満たしているとは考えにくいかと思います。

OpenDolphinは、おそらく日本発の唯一のオープンソース電子カルテシステムで、日医のレセコンORCAとも連携がとれるように設計されています。いずれも、プライベートに導入し維持管理をしていくには、かなりの労力が必要になってきますが、これら2つを活用すれば、かなり安価に診療所レベルでの電子カルテ・レセプトシステムを構築できる可能性があります。
実際には、いずれにもかなりの専門的な知識が必要になりますので、開業医個人が維持管理する場合にコストパフォーマンスが必ずしも良いとは限りませんのでご注意ください。

おそらく私は、医師の中ではコンピュータの知識に関しては平均よりも少しだけ上くらいだと思います。もともと、N88-BASICから始まり、最近は仕事がらみのデータをPerlで処理するなど、スクリプト中心のプログラミング経験がある程度です。当然、大規模なアプリケーションの構築経験はありません。以前からJavaには興味があったのですが、オブジェクト指向の壁を超える事ができずにいました。

さて、OpenDolphinの構築については、すでに元町皮ふ科様のサイトで詳細に記載されています。このブログでは、元町皮ふ科様のサイトの手順を追いながら、OpenDolphinを構築していく記録にしようと思っています。
できれば、ORCAとの連携についても確認して、多少のカスタマイズなどができればその辺りについても書いていきたいと思っています。

自己紹介

ちょっとしたTipsのメモです。