OpenLDAP と MacOS

dcm4chee-arc-light を触ってみて気がついたことをいくつか。

MacOS 特に arm マシンにデプロイするのは、以下の難所があるため、かなり難しい。

Apache Dirctory Studio が arm アーキテクチャに非対応

arm マシンでも動くことは動くのだが、これは JDK を x86_64 のものに変えた場合のみ。
以前から x86_64 と arm で JDK の挙動が違うというような報告はあったのだが、再度確かめられた格好だ。

ldap-utils を arm 向けにビルドできない

Linux 系では ldap-utils という便利なユーティリティソフトがあるし、そのソースコードも GitHub 上で公開されているので、arm 環境でビルドし直せばいいのかなと思ったのだが、bindletools で引っかかりますね。
ビルドしていると「OpenDirectory を使え」みたいなエラーを出してそこで止まる。

回避策

OpenDirectory で再度設定し直す、とかでしょうか。

いやあ、そんなんだったら、大人しく Ubuntu あたりにデプロイした方がいいような。

 

M1 Mac に M1(Arm) 対応の JDK をインストールする

この記事でも書いたのだが、Azul というところから M1(Arm アーキテクチャ CPU。apple silicon ) 対応の JDK(Java Development Kit) がリリースされている。

どの程度高速化されるのかは不明だが、可能なら Java も M1 ネイティブで動かしたい。

開発元の zulu は、マイクロソフトと共同で windows arm OS 向けの JDK を作成していたところ。

信用してもいいでしょう。

ということで、インストール&基本設定の仕方から。

JDK のインスコ

まず、Azul のダウンロードページに飛ぶ。


今回は、Java 15 の .dmg を選びました。(2022年春時点での長期サポート版は 17 ですが、17 へのアップグレードは後述)
たぶん、dmg がもっとも導入が楽です。
ダウンロード後、dmg ファイルを「開く」。インストーラーが立ち上がるので、後は指示に従って答えていけば OK です。
この画面でのダブルクリックも忘れずに。

一応、これだけでも、所定の位置(/Library/Java/JavaVirtualMachines/ 以下)に JDK は入ります。

JAVA_HOME を設定し、PATH を通す

現在 BigSur デフォルトの shell は zsh なので、~/.zprofile などに以下の2行を加える。

JAVA_HOME='/Library/Java/JavaVirtualMachines/zulu-15.jdk/Contents/Home'
PATH=$JAVA_HOME/bin:$PATH

これで、Java でのコンパイルなどが可能となります。

何はなくても Hello, World!

動作確認のために定番「こんにちは、世界」します。

public class HelloWorld{
   public static void main(String[] args){
     System.out.println("Hello World!");
   }
}

上のコードをエディタで HelloWorld.java として保存。
あとは端末からコンパイル&実行。

%javac HelloWorld.java
%java HelloWorld
Hello World!

どこまで M1 の恩恵を受けているかまではわかりませんが、無事、M1 Mac でも Java コードが動いてるのが確認できました。

15 → 17 へのアップグレード

現在(2022春)の長期サポート版は Java 17 です。
ですので JDK も15 → 17 へのアップグレードを試みましょう。
15 の時と同様に Azule のダウンロードページに行って、M1 対応の JDK をダウンロードしましょう。


今回も .dmg で大丈夫です。
指示に従ってインストールを進めると所定の場所に JDK の実体が配置されます(15 が消えるわけではない)。

以降はこちらのバージョンを使いたいので、JAVA_HOME を以下のように書き換えましょう。

JAVA_HOME='/Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home'
PATH=$JAVA_HOME/bin:$PATH

以上でアップグレードは完了です。

 

猪股弘明
HorliX 開発者
OpenDolphin-2.7m 開発者

 

(追記)ここでは JavaFX に関しては一切触れていませんが、これがかなり微妙な感じで・・・んー、ごにょごにょ。興味のある方は『JavaFX on M1 Mac』をどうぞ。

 

 

ORCA, OpenDolphin, HorliX

所要とはいえ ORCA日本医師会がソースコードを公開、配布しているレセコンソフト)とOpenDolphin(電子カルテ。これもオープンソース) と準備してきたので、HorliXHoros/OsiriX ベースの画像ビューア。オープンソース) も起動。
特に深い意味はないんですが。

いや、しかし、壮観ですな。

一台の Mac の上で動いているってのにちょっと感動してます。


 

ところで、OpenDolphin・HorliX は、精神科医の猪股弘明先生の開発したバージョンを使ってます。

OpenDolphin

OpenDolphin は、オープンソースですから、当然、派生バージョンは色々とありますが、OpenDolphin-2.7m (今回、試したバージョン)は本家(dolphin-dev)に割合忠実です。これにはそれ相応の理由がありました。
OpenDolphin について』、『OpenDolphin と電子カルテの3要件とメドレー』あたりがわかりやすいでしょうか。開発者本人がその経緯を語っています。

私も今回 OpenDolphin に触れてあれこれ感想を持ちましたので、機会があったら何か書いてみたいと思います。

HorliX

画像ビューア HorliX に関する使い勝手などに関しては『COVID-19 による肺炎CT画像!<HorliXにて表示>』(精神科医高木希奈先生のアメブロ)に動画入りで紹介されていますので、そちらもご参照ください。

ところで、先生、最近、ブログで

HorliX と薬機法

という法律ガラミにしては?面白い記事を書いているので、こちらもよかったらどうぞ。

ORCA

ところで ORCA に期待(懸念?)されていることは、本当に今の設計のままで意味のあるクラウド化ができるのかってことですが、これも猪股先生、一つの提案をしてくれました。

将来的には医療情報の類はクラウドに上げて一元管理・ビッグデータとしての活用を図る・・云々みたいな話は、まあそうだろうなとは思うのですが、このとき医療機関側が欲しい情報を取ってこれる環境になっていないとデメリットの方が大きく、実際には誰も参加しないだろうなと思います。
(法的にも医療情報の管理責任は、現状だと医療機関側です。業者ではありません)
欲しい情報を効率よく取ってこれるかどうかは、データ構造の整合性に大きく依存するのではないでしょうか。
これを実現する割と有効な選択肢は現在だといわゆるウェブフレームワークの採用かなと思ったわけです。

オルカの職人芸的なデータベースの使い方も嫌いではありませんが(笑)、この後の展開を考えるとなるべくデータ間の「辻褄が合うように」整合性をはかっておく、モデル化しやすいように準備しておく、というのはあっていいのかなと思った次第です。

メーリス上で議論され、最終的には ORCA管理機構の人に「フレームワークの採用も検討してまいります」とまで言わせしめました。→結局、ORCA 管理機構、独自にウェブフレームワークを開発して、WebORCA をリリース。

また、最近では、ORCA のデータベース(PostrgreSQL)から直接データを抜いて、各種指標を加工する方法を提案しています。猪股先生ご自身が『ORCA の日計表と関連テーブル・内部会計フローなどについて』にまとめてくれています。

 

ANN2b

 

ORCA クライアント monjiaj をソースよりビルド

ORCA シリーズ。

Mac 上で動く ORCA のクライアントを導入しようとしたら、公式サイトには JDK 14 用はあがったいなかった。
せっかく Java 開発環境を用意したので、Java 版の monjiaj をソースコードよりビルドした。たぶん、それほど難しくない。とりあえずテスト的に使うだけなので SSL 対応は無視した。ビルド産物をいろいろつくってくれるようだが、そのうちの一つを立ち上げる。

実際に ORCA サーバに繋いでみる。

以前に登録した秋「場」ちゃんを呼び出せてますね。よかったよかった。

これで、患者さんを登録するのにいちいち(Parallels の)Ubuntu のクライアントを使う必要はなくなった。

(追記)現在(2022)だとビルド途上で failure が出るのだが、out ディレクトリの方の jar を使えば問題なく ORCA サーバーと接続できる。

なお、プログラム自体に署名するときは以下のようなやり方でやるらしい。


署名の設定

pom.xml、maven-jarsigner-pluginプラグインのコメントを解除し編集する。


<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jarsigner-plugin</artifactId>
<version>1.4</version>
<executions>
<execution>
<id>sign</id>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
<configuration>
<archiveDirectory>${project.build.directory}</archiveDirectory>
<includes>
<include>*.jar</include>
</includes>
<keystore>${project.basedir}/keystore</keystore>
<alias>alias</alias>
<storepass>storepass</storepass>
<keypass>keypass</keypass>
<tsaLocation>http://timestamp.globalsign.com/scripts/timstamp.dll</tsaLocation>
</configuration>
</plugin>

署名用のキーストアの設定を以下の項目で行う。

* keystore
* keystoreファイルのパスを入力する
* ${project.basedir}はpom.xmlのあるディレクトリに置換される
* keypass
* keystoreに格納されている秘密鍵のパスフレーズを入力する
* storepass
* keystoreのパスフレーズを入力する
* alias
* 証明書のaliasを指定する
* tsaLocation
* 証明書のTSAのURLを指定する


ANN2b
(技術協力 猪股弘明

 

Parallels 上の Ubuntu を US キーボード Mac で使う場合の注意点

普通にアルファベットを打ち込んでいる内は気がつかなかったのだが、記号を打ち込み始めてからキーボードの配列があってないことに気がついた。おそらく _ (アンダーバー・アンダースコア)が出せないのではないだろうか。

これは Ubuntu で日本語を使う場合、キーボードが強制的に JIS キーボードになるためだそうだ。これを回避する方法の一つが fcitx というものを入れることらしい。

入れ方は、検索するといろいろ出てくるが、

sudo apt install fcitx fcitx-mozc -y

で必要なパッケージを入れる。

あとは設定。

アクティビティより「fcitx 設定」を選ぶ(下図の左のペンギン)。

すると設定画面に入れる。

ここで「全体の構成」タブを選ぶ。すると以下の画面が出てくるので赤枠部分を指定する。

各ボタンを押下すると以下のようなダイアログが出てくる。

このダイアログが出てきたら、この状態で好きなキーの配列を押す。私の場合は「Ctrl + Shift + J」で慣れているので、そのように押した。

以降は、このキーで入力メソッドがオンオフできるようになる。

お疲れ様でした (^^;)

 

ANN2b