以下の記事は 2021/1/22 に公開されたものですが、もう内容的に古くなっているところがある。
air-h-128k-il さんが、Java17 に対応したソースコードを GitHub で公開しているので、最新版を求めている人はそちらを参照。
最初に書いた頃は、ソースコードの指定はしていなかったが、上記を始め 2.7m 系列のものを使った方がいいでしょう。
dolphin-dev 版は、ビルドしたところで「登録モード」のようなもので立ち上がるため、初学者には不向きです。
また、LICENSE 文書が改竄されており、倫理的に忌避感を覚えるし、将来的に公開を考える場合には、かなり致命的な傷になります。2.2 系の関係者(皆川和史・小林慎治・増田茂など)は、2.7 系も自分達がメインで開発したプロジェクトだと主張するので、注意が必要です。というか最初から使わない方がいいでしょう。
出自がしっかりしており情報も豊富な 2.7m 系列を使用することをお勧めします。
参考
『OpenOcean/Dolphin GPL LICENSE に基づくソースコード利用の指針』にもうちょっと詳しくバージョン別の注意事項を書いておきました。
『OpenOcean 怪文書 -GPL 誤用による違法行為教唆-』でライセンス関係で過去に何があったかチェックしておくことをお勧めします。この分野の必読記事といってもいいでしょう。
『OpenDolphin と職務著作と GPL』オープンソースライセンスの法的な基礎になる著作権に関する記事です。堅苦しくなく読めると思います。
arm Mac 評判いいですね。
できることなら各種アプリは apple silicon ネイティブで動かしたい。
Java の場合、アプリを作成するときに JDK(Java Development Toolkit)というものが必要なんですが、arm 対応した JDK がリリースされています。
今回はこれを用いて arm Mac(今回は 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 をカスタマイズするために知っておいた方がよいこと』
あたりを読んでまずは全体像をつかんでみましょう。
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 を使いました。
WilFly も M1 でビルドしたいという方は、GitHub などからソースコードを入手し、ビルドしてください。maven が比較的新しいものならば、(時間は取られますが)可能です。
前回は 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 & パスワードでログインできます。

(注)なお、ソースコードを適切に改変すれば、facilityid は必ずしも
1.3.6.1.4.1.9414.*
でなくてもいいです。
次は、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 で出力すると

MacOS では(PDF生成のロジックやフォントの関係上)現状だと以下のように文字化けします。

ただし、これには回避策もあって、OpenDolphin HTML/PDF Viewer という別のソフトを使うと
データベース上のデータ(直接読み込み)→ html → PDF
という経路で 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 風解説-』をご参照ください)
ソースコードを「一般」公開しているならばこれ自体は問題はないと思いますが、このような事情があるので特定のソースコード提供者のみの貢献だけを取り上げるような紹介の仕方をするのは、いささかバランスを欠いているように思えます。私はポリシーとしてそういうことはしたくないので、この点に関しては留意していきたいと思っております。
現時点では、軽微なバグもあり、不特定多数に対する配布は考えていませんが、配布する際にはこのような点も留意しなくてはいけないでしょう。
(適宜修正予定)
OpenDolphin-2.7m 開発者
