OpenDolphin-2.7m を M1 Mac にインストールする

M1 Mac 評判いいですね。

できることなら各種アプリは M1 ネイティブで動かしたい。
Java の場合、アプリを作成するときに JDK(Java Development Toolkit)というものが必要なんですが、M1 対応した JDK がリリースされています。

今回はこれを用いて M1 Mac に OpenDolphin-2.7m をインストール・デプロイしましょう。
基本的なやり方は
OpenDolphin-2.7(m) を Mac OSX にインストールする
といっしょです。

若干違うのは
・M1(Arm) 対応の JDK を使う
・データベース(PostgreSQL)を導入する際 macports を使う
点です。

粗く組んだだけですが ORCA との接続もできてます。
大枠、以下のような手順で導入され、細かい点はソースコードを変更してお使いの環境に合わせて微調整されるといいと思います。
また、Mac自体は(かなり強引に分類すれば) Unix マシンなので、Ubuntu など Linux 系OSへのインストール時にも役に立つかと思います。

1. 環境構築

面倒ですね (^^;)
出てくる役者が多いので、よくわからない人は

OpenDolphin/OpenOcean をカスタマイズするために知っておいた方がよいこと

OpenDolphin/OpenOcean をカスタマイズするために知っておいた方がよいこと 2

あたりを読んでまずは全体像をつかんでみましょう。

1-1 M1 対応 JDK の導入

まずは今回のキモとなる M1 対応 JDK (Java Development Toolkit)の導入。
AZUL というところが公開しているので、ダウンロードページに飛びましょう。

今回は、Java 15 の .dmg を選びました。
たぶん、これがもっとも導入が楽です。
ダウンロード後、dmg ファイルをダブルクリック。インストーラーが立ち上がるので、後は適当に答えていけば OK です。

この画面でのダブルクリックも忘れずに。

詳しくはこの記事を参考にしてください。

1-2 maven の導入

ここを参考にして導入。
ここまでで各種設定が正しく行われていれば、ターミナルより

mvn -v

と打ち込んだときに、以下のような情報が返ってきます。

“aarch64” は、Arm アーキテクチャのことです。
JDK は正しく CPU のアーキテクチャを認識しているようです。

1-3 WildFly の導入

ここを参考にして導入。今回は WildFly 22 を使いました。
前回は WildFly20 を用いましたが、そこで記載した要領でソースコードを Java EE 8 向けに改変してあれば、今回は特に大幅な修正は必要ないと思います。

1-4 NetBeans の導入

NetBeans ダウンロードページ に飛んで、落としてくる。

現在(2021年1月)だと最新版は NetBeans 12 。日本語版もあるのかな?そっちの方はよくわかりません。
なお、今回は、インストーラー版がうまく動かなかったので、バイナリ版を使ってます。

1-5 PostgreSQL の導入

JDK を M1 対応にしたのだから PostgreSQL も M1 対応にしたい。
なんですが、Postgres.app は現時点(2020年1月)では M1 非対応。
では、homebrew 経由で、と考えたくなるところですが、homebrew の M1 対応自体が遅れています。
今回は macports を使いましょう。
M1(arm) に対応している PostgreSQL は Ver13 以降のようなので、ターミナルより

sudo port install postgresql13
sudo port install postgresql13-server

と打ち込んでインストール。
後は、データベースの作成(必須)、自動起動などの設定(任意)を行えばよいです。

jdbc ドライバは、ここより落としてきて WildFly に登録しておきましょう。

これから後の作業のことを考えて pgAdmin4 も導入しておきましょうか。ユーザーの追加やデータベースの作成が GUI を通しておこなえるようになります。

ユーザー dolphin と データベース dolphin もつくっておきましょう(もちろん後でもいい)。
まず、dolphin というユーザーをつくって、データベース dolphin をその所有者にする、という手順です。Mac だと pgAdmin4 が走っているとメニューバーに象さんのアイコンがありますが、

ここから pgAdmin4 というブラウザベースのGUI管理ツールが起動できます。

細かいところでバグがけっこうあるという話ですが、ユーザーやデータベースつくるくらいでは支障なし。 GUI はこういうとき便利。

ここくらいまでで準備は整ったでしょうか。

2. OpenDolphin 各プロジェクトのビルドとデプロイ

2-1 NetBeans を用いたビルド

NetBeans を起動してプロジェクトを読み込ませる。
client, common, server の各プロジェクトを開いて、必要なライブラリをどんどん持ってきましょう。

上図でいうところの Download Declared Dependencies を選べばよいです。
ただし、ext_lib 内におさめられている iTextAsian.jar と AppleJavaExtensions.jar はリモートリポジトリにはないので、ターミナルから上記フォルダ内に侵入して以下のように打ち込んで手動でインストールしておきましょう。

mvn install:install-file -Dfile=iTextAsian.jar -DgroupId=opendolphin -DartifactId=itext-font -Dversion=1.0 -Dpackaging=jar
mvn install:install-file -Dfile=AppleJavaExtensions.jar -DgroupId=com.apple -DartifactId=AppleJavaExtensions -Dversion=1.6 -Dpackaging=jar

あとは、各プロジェクトの設定ファイル(pom.xml)で、ソースを 15 ターゲットを 15 に変更します。

できてましたね。
BUILD SUCCESS となれば、NetBeans 上での作業は終了。

2-2 デプロイ

サーバプログラム .war ファイルを WildFly 管理画面から投入すれば、サーバープロセスが動き始めます。

/wildfly 実行コマンドへのパス/standalone.sh -c standalone-full.xml

で wildfly を起動し、ブラウザで http://localhost:9990 にアクセス、あらかじめ設定したユーザーとパスワードでログインすると以下のような管理画面が出現します。

Deployments をクリック後、指示にしたがっていけば OK です。
投入がうまくいけば、初回デプロイ時にデータベースの各種テーブルを作成してくれます。
(※ custom.properties や standalone-full.xml の修正はOpenDolphin-2.7.0b を Win10 にインストールしてみた』を参考にしてください)

2-3 初期ユーザーなどの設定

適当な .sql ファイルをつくって、データベースに施設・ユーザーなどの情報を流し込みましょう。

例えば、施設登録は

INSERT INTO d_facility (id, facilityid, facilityname, zipcode, address, telephone, url, registereddate, membertype) VALUES (1,'1.3.6.1.4.1.9414.10.1','PHAZOR','XXX-XXXX','横浜市','XXX-XXXX-XXXX','https://phazor.info','2020-12-30','FACILITY_USER');

などとします。

この時点でクライアントを起動後、上記で設定したユーザーの ID & パスワードでログインできます。

 

次は、ORCA から送信された患者さんのカルテ記載をするために ORCA と接続してみましょう。

3. ORCA との連携

3-1 ORCA の準備

OpenDolphin は ORCA と連動して動かすことを想定して設計されているので、ORCA を準備しましょう。

やり方などはこちらで。

3-2 ORCA との接続

今回は CLAIM で接続させてます。
ORCA 側の CLAIM 接続を有効にするのは基本ですが、template が必要になります。
ORCA Ver5.1 との接続では、猪股先生版の template をそのまま流用してましたが、問題なく接続できてました。
バージョンによっては、切り替えが必要の場合がある、というネット上の情報もありましたが、今回のケースではその必要はありませんでした。

3-3 試用

ORCA でデモ患者「秋場太郎」さんを登録して、OpenDolphin に送信。

なお、ORCA クライアントも Mac で運用したい場合は、monjiaj(Java で動く ORCA クライアント) を JDK 15 でビルドしましょう

OpenDolphin 側の待ち受けにも反映されてました。

患者さんのカラムをダブルクリックするとカルテ画面が出現。

シンプルですが、なかなか使い勝手はいいと思います。
画像の貼り付けなどもドラッグ&ドロップで行えます。

3-4 FileBackUpSystem

カルテ記載内容を確定させると OpenDolphin-2.7m では、ユーザーホームに記載内容をプレーンテキストで書き出してくれます。

クライアントホームの OpenDolphin フォルダ内に Backup フォルダがつくられ・・・

その下の患者さんフォルダがあります。

テキストファイルがカルテ分あります。

 

開くと・・・

書き出せてますね。

4. その他 Tips など

サーバを常時バックグランドで走らせるのでなければ、使う度毎にターミナルからコマンド打ち込んで WildFly を起動させるのは面倒なので、Automator を使ってアプリ化しておくと便利かもしれません。

 

シェルスクリプトもアプリ化できる。
デスクトップに置いておいてダブルクリックすれば、WildFly が起動できます。
Mac 便利。

 

5. 機能上の問題点と配布・一般公開に関する注意点

今回は、とりあえず動作確認の意味合いが強いので、各種機能に関しては必ずしも厳密な評価をしているわけではありません。

例えば、カルテ画面を PDF で出力する機能がありますが、例えば以下のような画面を PDF で出力すると

 

現状だと以下のように文字化けします。

(ただし、ファイルバックアップシステムは完全にプレーンテキストで書き出します)

 

また、ログイン時のパネルなどのレイアウトを生成する際、oracle が作成したサンプルコードをそのまま使っているようなのですが、そのコード上にはこのような記述がみられます。
(oracle 公開コード:https://docs.oracle.com/javase/tutorial/uiswing/examples/layout/SpringGridProject/src/layout/SpringUtilities.java
(OpenDolphin 側コードは open.dolphin.helper パッケージの SpringUtilities.java )

要するにこのコードを使う際には、使った旨の著作権表記をしてくれという要請です。(また、これ以外にも Junzo SATO 氏のコードが含まれています。より詳しくは『OpenDolphin -wiki 風解説-』をご参照ください)

ソースコードを「一般」公開しているならばこれ自体は問題はないと思いますが、このような事情があるので特定のソースコード提供者のみの貢献だけを取り上げるような紹介の仕方をするのは、いささかバランスを欠いているように思えます。私はポリシーとしてそういうことはしたくないので、この点に関しては留意していきたいと思っております。

現時点では、軽微なバグもあり、不特定多数に対する配布は考えていませんが、配布する際にはこのような点も留意しなくてはいけないと考えています。

 

 

(適宜修正予定)

ANN2b

協力:猪股弘明(精神科:精神保健指定医

OpenDolphin-2.7m 開発者