ソースコード嫁

私がカスタマイズした OpenDolphin-2.7m (という電子カルテ。本家 LSC Dolphin の直接 Fork)は、以前に前期LSC一家と言ったらいいんだろうか、ともかく 2018 以前の LSC と繋がりの深かった人々からおかしな非難をされていた。人々、といっても、皆川和史・増田茂・松村哲理・小林慎治・杉原利彦くらいなものだが。

どういうものだったかは
保健医療科学院 小林慎治が国家公務員法違反疑いで厳重注意を受けた件について
小林慎治氏の OpenOcean に関する事実誤認
小山哲央(アーク情報システム)の件
あたりを参照してください。

彼らがいうには、Fork 順は

 LSC Dolphin(いわゆる本家) → 2.3m(いわゆる増田ファクト)→ 2.7m (ワイのバージョン)

なんだそうだ。

正しくは LSC Dolphin(Ver 2.7) → 2.7m なんだが、それはソースコードを読めばわかる。

例えば、ModuleModel.java というファイルの冒頭をみてみよう。

2.7 と 2.7m では一字一句いっしょ。

この箇所は 2.3m ではこうなっている。

赤枠の部分が追加されたコードで、検索(hibernate search)のためのアノテーション(@から始まるコード)が付加されていることがわかる。

私がわざわざカスタマイズしたのは、

・2.7 にあったバグ(通院精神療法のコメントが正しく表示されない)を修正したい
・簡易なファイルバックアップシステムを実装したい

というのが主な動機で、データの互換性は完全に保ちたかったから、データ構造周りには一切手をつけていないし、上記の機能に関係しない部分も同様に手を加えていない。

だから、2.3m → 2.7m という Fork 順はありえない。
いちいち、付加されたコードを削ぎ落として作業すんの?
ありえんでしょ。

なお、ModuleModel.class というのは、Dolphin サーバーがカルテ記載内容をデータベースに永続化する際に最も基本となる単位で、SOA 欄文字列・図などのグラフィック要素・P欄文字列をそれぞれ一つのモジュールとしている。
シンプルだが、当時のデータベースが CLOB をうまく扱えなかった関係上、図も文字情報も全てバイナリ化してBLOB として格納されている。
カルテに復号する時は、モジュールを拾い集めた後、内容毎に処理を変える必要があるというなかなか地獄のような仕様になっている。

さらにおかしいのは皆川和史氏が設計したことにはなっている点だ。
しかし、

・LSC の経営陣が変わった際に彼は担当役員を外されている
・この程度の基本的なデータ構造を把握していない
自分が設計したデータ構造を他のものと取り違えるということがあるだろうか?

・メドレーに至っては開発者認定していない

といった事実があり、個人的には別の人が設計したのではないかと思っている。

増田茂医師に関しては言わずがなだろう。
hibernate search を用いた検索機能はアイディアとして素晴らしいし、付加されたコードも申し分のないものだ。だが、こんな完璧な修正を行える人が、データ構造を把握しておらず、Fork 順に関して間違えるとは思えない。
メドレーも、皆川氏と同様に増田茂氏を開発者とは認めていない。
やはり、別の人が設計・コーディングしたと考えざるをえない。

ところで、オープンソースの世界は一般には不親切で(商用を前提にしていないので当然だ)、よくわかってない人間に対してメンテナが言う言葉は大抵の場合

 ソースコード嫁

である。

PHAZOR.JP サイトリニューアル

放置気味であったが、サイト自体をリニューアルした。

諸々の事情で OS を変更。
PHP は 8.1 にアップグレード。Web サーバーも変えた。

お世話になっている WordPress だが、サイトとブログは別々にした。
サイト本体のテーマは OenPress というものだが、なかなかクセがある

ブログは、いつもながらのテーマを流用。

ところで本サイトは某VPS上に構築されているのだが、低スペックの割にキビキビと動くようになった。
SSH 接続もさくさく繋がる。契約当初なぞ、いつ切断されるかわからずおそるおそるという感じで使っていたのだが、なんかあったのだろうか?
ガチ勢がクラウドに流れてユーザーの絶対数減少→帯域に余裕みたいなことがおきた?

 

 

VTK と Vulkan

以前に VTK のことを取り上げた。
これまで、VTK は MacOS 向けの画像ライブラリに OpenGL を用いていたが、ご存じの通り、将来的には OpenGL は廃止になる。VTK は各 OS 向けに window を提供しているが、MacOS で使う vtkCocoaRenderWindow は、クラスの継承関係としては以下のようになっている。

vtkObjectBase

vtkObject

vtkWindow

vtkRenderWindow

vtkOpenGLRenderWindow

vtkCocoaRenderWindow

このうち vtkOpenGLRenderWindow が OpenGL に依存しているのため、これを継承している vtkCocoaRenderWindow は OpenGL が廃止になったら、使えなくなってしまう。

当然、VTK は、こういった構成も含めて、再検討しなければならない。

順当にいくなら、アップル公式推奨の Matal を使うことになるのだろうが、Metal は windows や linux 上では動かず、マルチプラットフォームが売りの VTK の基本設計と甚だ相性がよろしくない。

どうするか気になっていたのだが、結局、Vulkan を採用するようだ。

GitLab のリポジトリには、(完全ではないが)ある程度のコードが既に上がっている。
開発者からのメッセージも読むことができる。

 

ただ、ここのところ更新は滞っており、どうなることやら。

 

VTK のサワリ

VTK といいうのは Visualization Tool Kit の頭文字の略で、容易に想像がつくようにデータの可視化ツールだ。

技術的には標準的な C++ で書かれており(一部、OS 依存の部分はもちろんあるが)、cmake というツールを使って各々の OS 向けにライブラリとしてビルドする。

医療系のソフトだと、まず OsiriX に3D構築のツールとして組み込まれて知名度が高まった。(だから、当然、Horos や HorliX にも使われている)

今でもアクティブに開発は続けられているが、新しい MacOS 向けの修正(M1 や Metal 対応)がやや遅れている。

VTK がどんなものかは見てもらった方がわかりやすいでしょう。

これは、サンプルコードを cmake のみで Mac アプリまで作成した例。

では、こちらはどうでしょう。

表示されている内容は最初のものといっしょですが、動作のさせ方が違いますね。いったん、空の window が表示され、メニューからこの画像を呼び出しています。
これは、VTK のライブラリを MacOS のアプリに組み込んで使っているのでこうなっています。

実際のソフトは特定の OS 上で動き、UI などのパーツはその OS が提供するものを用いるので、実務的には後者の使い方が多くなります。