HoroXaust2018問題 〜ロゼッタの呪い〜

HoroXaust2018 問題というのがあるらしい。
http://www.osirix.jp/ 
で、提案されていた。現在は、ドメインを変更したようで、http://osirix.asia/ 。
 
要するにバージョンアップもせず古い一部の OsiriX を使っていると突如プログラムが起動しない or クラッシュする、ということらしい。
 
でも、問題の特定はできているようで
「問題が起きるのは32ビット版で、OSS V5.8ソースコードあたりまでを使用しているもの」であり「起動後に http://www.osirix-viewer.com を見に行きバージョンチェックを行い、リリースから 5 年経過しているものは、起動させない or クラッシュさせる
ということらしい。
ご丁寧にも HorosHorliX もその可能性があると言及されていたようだが、当方の見解としては、Horos はほぼ間違いなくこうはならない、HorliX は 100% こうなることはありえない、というもの。
確かに OsiriX lite/Horos/HorliX のソースコードは似たような部分も多いが、少なくとも HorliX はソースの 32 ビットに入っていく部分(32 ビットコード)は一切使ってない。使っていたら(32 ビットコードが含まれていたら)、AppStore から配信させるためのアップルの審査(Apple Review という)は通らない。
Horos はつい最近までユニバーサルバイナリを使って、32 ビットコードを使っていたが、現在はかなり改善されている。
起動直後のサーバとの通信だが、そもそも HorliX はそんな動作はしていない。バージョンチェックなどして、いちいち最新版へのアップデートを促すのが面倒だったからだ。バージョンアップするかしないかはユーザーが自由に決めればいいことではないか。
Horos は起動直後、サーバと通信しているようだが、それは OsiriX 関係のサーバではなく、horosproject.org のサーバだ。
ソフトのバージョンアップを促すコードは実装されているが、クラッシュさせるようなコードは確認できなかった。
さらに MacAppStore 版の HorliX では、サンドボックス化がなされているため、指定以外のサーバと通信させることができない。サンドボックス化しないと AppleReview に通らないのだ。
指定するとしても、なんでわざわざ http://www.osirix-viewer.com (OsiriX のサーバ)にする必要があるんだろう。
OS X のサンドボックスは強力で、URL の指定をちょっと間違えただけでも、ソフトと通信できなくなる。HorliX のプラグインのインストールで不具合が出たのもこのせいだ(次期バージョンで修正予定)。
 
でも、これはソフト本体がクラッシュする程度だからよいけど、ロゼッタ(アントニー=OsiriX の作者)が本当に呪いをかけるなら、データベース OsiriX Data を削除するくらいのことはできたはずだ。そしておそらくは、もっとひどいことも。
でも、彼はそうしなかった。
なんだかんだ言われる人ではあるけれど、医師としての良識はある人だと思う。
 

でも、これ、取り扱い業者、クレームの嵐だったでしょうね。収束したみたいですが。→ 他の業者さんに聞いた話では、全然収束してないみたいですね。動物病院などにはけっこうな数が納入されているらしく、対応が間に合ってないとか。どう収拾つけるんでしょうかね。

 

にほんブログ村 病気ブログ 医者・医師へ

 

曖昧な日本のユーザー

以前に杉本医師の立ち位置がよくわからない、みたいなことを書いたのだが、やはり「ユーザー」という扱いのようだ。


でも、以前に「アンバサダー」みたいな紹介のされ方をしているのを見かけたことがあるので、まったく無関係ではないと思う。

少なくとも OsiriX MD 本体の開発には関わっていないということだと思う。


他方で、外国人「ユーザー」は、HorliX vs Horos vs OsiriX に関してかなりはっきりとした議論をしているのであった。

欧米の方々って本当にこういうの好きですよね (^^;)

正直いって Horos をフォークした直後などは、OsiriX MD ははるか彼方で、比較するのもおこがましいと思っていた。
製品比較が成り立つくらいには成長したんだなあという感慨ひとしお。
でも、やはり OsiriX MD は機能豊富ですね。メッシュ切るソフトと連携とはやるなあ。

でも HorliX も64ビットアプリ、基本機能はけっこういいですよ、処理によっては OsiriX MD より速い(と言ってくれるユーザーさんもいる)とか。
とちょっと宣伝。

まあ、今後は方向性が違ってくると思うので(搭載機能が変わってくると思います)、ダイレクトな「比較」は成り立ちにくくなってくると思いますが。

 

OsiriX ソースコード上における杉本医師の contribution

HorliX Ver 0.0.2 のためのデバッグ作業を続けている。本日、医療画像をステレオ表示させるところと 3D マウスを使うための設定を決めているあたりにさしかかった。HorliX は直接には Horos をフォークしたわけであるが、ここら辺は OsiriX のソースそのままだろう。

ところで OsiriX といえば日本では杉本真樹医師が有名であるが、杉本氏が得意とするのがこの辺ではなかっただろうか。

そういうこともあってか興味深くソースを眺めていたのだが、残念ながらソースコード上では氏の痕跡をたどることはできなかった。

ここら辺のコードは、SilvanWidmer さんという方が主に書いた/修正したようだ。

私は勘違いしていたようだが、杉本氏はソースコードレベルでは OsiriX とは全く関係がない。したがって contribution もまったくないようだ。

おそらく臨床応用とか普及という点で OsiriX と関係しているのだと思う。(詳しい人がいたら教えて欲しい)

本当は、ここら辺(DICOM 画像の 3D 表示)は興味深いところなので、時間をとってがっちり読みたいところだが、あと一点どうしても取り除きたいバグがあるのでそちらが優先。ここは我慢。

ところで今回の改変で 3D マウスを使う機能はオフにした。どうしてもこの機能が欲しいという方がいたら相談して欲しい。このレベルになるともはや一般的なパッケージングでは対応できず、個別のカスタマイズで対応した方が適当と思われる。

同様の理由でステレオビジョン機能も提供していない。

杉本医師っぽいことがやりたいという先生がいたら要相談ということで。

 

 

にほんブログ村 病気ブログ 医者・医師へ

 

 

放射線科読影レポート

放射線科読影医以外ほぼ必要ないと思うのだが、Horos にはレポート作成機能がついている。具体的にいうと適当なスタディを選択した状態でツールバーの

のアイコンを押下すると、指定したワープロソフトが立ち上がり読影レポートを作成することができる。

デフォルトのワープロは pages だが、MS Word や LibreOffice に変更することもできる(少なくともソース上ではそうなっている)。

今日、ここら辺をいじっていたのだが、変更をどこでするかわからない。しばらく探してやっと見つかった。どこにあったかといえば「環境設定」>「データベース」で表示されるパネルの一番下。

こんなところに…..。

なんでワープロの設定項目がデータベース関連のパネルに配置されているんだよ。これは知ってないと見つけられないと思う。

 

ところで、 HorliX では諸々の理由でしばらく LibreOffice はサポートしません

見捨てたわけではなく、メンテに時間がかかりそうなので時間が取れるまでそうせざるを得ないというのが実情です。

 

オープンソースと収益化

OsiriX がクローズドな開発に移行し、組織的な収益化を始めたとき、それなりに批判の声が上がったし、今もその声は根強くあると思う。
私は、HorliX プロジェクトを始めたとき、これはそのうち考えなきゃいけない問題になるだろうなと思っていたが、まだ先のことだろうと思い、これまで放置してきた。だが、Horos プロジェクトの中の人から、「ソースコードを共有しないか?」みたいなことを言われ、考えざるをえない状況になってきた。まとまるかどうかわからないが、現時点での考えを述べたい。

 

まず、これはオープンソースの中でもかなり特殊ケースだ(だから、オープンソースで収益を上げるのは、是か否かというような抽象的な議論とはまったく違うと思う)。OsiriX は完全に実現したし、Horos もその意思を表明しているのだが、実用に役立つことを目標にしている。具体的には、FDA(日本では薬機法でしょうか) が定める医療機器としての認承を取り、大手を振って臨床現場で使われることを目標の一つとしている。
FDA の認承をとるのにいったいいくらかかるのか私などは考えたこともないが、Horos などは目標の 1/4 も達していないという話だ(donation というのは聞こえがいいが、やはり限界があるのだ)。確か 2〜300万ほどで、日本だったら、PMDA に相談しにいっただけで終わってしまうのではないだろうか。
また、何らかの仕方でランニングコスト程度の収益化の手はずを整えておかないと、開発自体が止まってしまう。
だから、収益化は、外野の意見がなんであろうとも現実的な観点から必須だと思う。

 

なお、この方針を強く批判している人の多くは、医療職でもなんでもないケースが多いことに最近気がついた。具体的には、大学の基礎系の先生とか医療系ジャーナリストといった人たちだ。臨床現場での使用は想定しなくていい、自分の環境で DICOM 画像が見れさえすればいい、といった立場の人たちだ。こういう人たちの意見は、尊重すべき点も多いとは思うが、やはり最終的な判断には入ってこないと思う。

例えば、彼らがよく批判する OsiriX の高額化だが、技術者目線で見ると高額化した分、OsiriX (MD) の機能は増している。具体的には、読み込める DICOM ファイルの種類が増えたり(特に US 関係がほぼ例外なく読み込めるようになったのは臨床の先生からは歓迎されたのではないかと思う)、ネットワーク機能が強化されたり、といったことだ。

よく、@rossetantony のことを「汚れた」などと批難する人がいるが、「臨床供用のため開発コストがかかっていることを知っているにも関わらず、いつまでも無料で OsiriX を使い続けたいというあなたのその根性の方が汚れていないか?」と言いたくなることが私なんかはある。( OsiriX MD の開発スタイルがライセンスを守れているかどうかはまた別の問題)。

 

また、OsiriX の方針転換は、医療機関経営者からは歓迎されたのではないかと推測する。無印 OsiriX を自己責任で使うよりは(というか単独で使うのは何かと問題がありそう。システムの一部として使うのはたぶんOK)、少々対価を払ってもいいからFDA お墨付きの MD を使う方が安心なのだ。

 

そこで HorliX なんだが、んーーーーー。

よくわからん。

(追記)よくわからないみたいなことを言ってましたが、とりあえず、Apple の Mac AppStore より、商用版をリリースしました(2018/8/8)。

これで、継続的に開発できる資金が確保できるといいんですが。

! 現在は直接配信に切り替えています。

 

HorliX/Horos/OsiriX written in Objective-C

ROI あたりから、Horos や OsiriX のコードを真面目に読み始めたのだけれど、意外に読みやすい。

読み始める前は、「ハイソな Mac のことだから、Horos/OsiriX のソースコードも、モダンで、レアなデザインパターン使いまくった難解なコーディングしてるんじゃないの?」と思っていたが、そうでもない。どちらかといえば、素朴な組み方していると思う。これはよく考えれば当たり前で、元々の作者のロゼッタさんは放射線科の医師。C/C++ 系のガチ職業プログラマのような「誰がこのロジック追えるんだ?」というような書き方はしなかった(できなかった)からだと思われる。

あと、読んでいて気がついたのは、Horos プロジェクトがつけたコメントがけっこう間違っているように思う。信用してどハマりしたことがあったので、気がついた。もちろん、全部、間違えているわけではないし、有益なコメントも多く有り難いのだが、「ここ間違えちゃいかんだろう」というところで、いい加減なコメントつけて逃げちゃっている感じ。感覚的な言い方をすると。

作業していて嫌なのは、やはり、Objective-C のクセ。

全然、慣れない。

 

 

OsiriX Lite の現在

HorliX/HorosROI の UI を改変するため、数年ぶりに本家 OsiriX を github から落としてきてソースからビルドした。

多少、引っかかったので、適宜ソースを修正。結果、問題なく Xcode 9.4 でもビルドできた。もちろん HighSierra で動く。

なお、参考にしようとしていた箇所はやはり MD とは動作が違っていたため、役に立たなかった。

OsiriX MD はオープンソースではなくなったというのは本当だったようだ。

ただ、意外なことに OsiriX には未だにオープンソース版が存在する。6月の初頭にちょっとしたプルリクエストがきており、rossetantony 自らがマージしていた。

要するに、これは、「OsiriX にはオープンソース版が存在する。現在も開発を続けています。OsiriX MD は、収益化のためにオープンソース版とは別物になりました。もはやオープンソースでもなんでもありません」ということなのだと思う。

これはこれで良いのではないかと思う。

 

と先ほどは書きましたが、若干、考え方を変えました。

というのは、ついさっきなんですが、@rossetantony が、私のプルリクエストを断ったから。プルリクの内容は、ある程度日本語化された xib ファイル(cocoa で実際の UI を決めているファイル)一式と彼のプロジェクトを HighSierra + Xcode 9.4 でビルドするための若干の微調整。なお、プルリク時にコンフリクトおこしてますが、それは、その前のマージが意味不明なもので私が無視したから。

こちらとしては、「OsiriX のオープンソース版の開発を続けるなら、支持しますよ」というちょっとした好意の表明だったんですが…。

こういうことをすると「rossetantony という人物は、オープンソース版を最新の環境ではビルドさせたくないし、日本語環境も提供したくない。オープンソースという言葉を使いたいがためにビルド不能なソースコードを github に上げている」という風に悪くとっちゃう人も出てくると思うので、あまり良い対応ではないような気がします。

と思ってたら、スレを再び open にして結局マージ。謎だ。

 

彼の真意はよくわかりませんが、そのときの私のソースは、

air-h-128k-il/osirix

に上げてあります。たぶん、こちらは何の修正もなしにビルドできるかと。また、ビルドしたプロダクツは

こちらのダウンロードページ

からどうぞ。Ver 5.8 〜 6.0 相当ですが。

あと、他の SNS 経由で「なぜ、OsiriX は、クローズドな開発を宣言したのに、わかりにくい形でソースを公開しているのか?」という質問があったので、書いておくと、おそらく OsiriX が使っているライブラリの使用条項によるものだと思われます。
OsiriX は、dcmtk, ITK, VTK,…. といった有名どころのライブラリを使用していますが、その多くが正真正銘のオープンソースです。私も、全部のライブラリのライセンスを把握しているわけではありませんが、例えば、VTK (オブジェクトを表示させるためのそれはそれは重要なライブラリ。ただ、設計のクセが強く HorliX ではちょっと手を入れて使ってます)のライセンスは、いゆる 3-clause BSD license です。このライセンスは、VTK を同包したソフトをクローズドにしてもかまわないというけっこうユルいライセンスですが、それでも、同包した場合には、このライセンスを引き継いでいるということを表示しなくてはいけない、というシバリがあります。

一般的にいって、GPL 系は、ソース公開に関する条件が厳しいため、それに従って公開しているものと思われます。

また、一部で rossetantony や pixmeo(OsiriX の現在の開発元)の評判が悪いのは、この手のシバリを彼らが無視しているためです。

なおソースコードにあたると、コードを提供したプログラマは数多いです。一部に、そういった人々の著作権表記も (L)GPL 的にはなされなければならないという解釈をしている人がいたりします。ライセンス的な妥当性はひとまずおくにしても、現実問題、無理でしょう。人数が多すぎます。ソースコード上でのサインがなされていて、ソースコード自体が第三者にも見える形で公開されていればOKと考えるというのが適当かと思います。

 

🌟 なお、現在では、OsiriX Lite もオープンソース版とは関係なくなったようだ。聞くところによると OsiriX MD の機能制限版だとか。32bit のアプリ配布しても Catalina 以降は起動することすらできないから、それはそうか。
でも、もうオープンソースでもなんでもないですね。

⭐️ 最後の著作権表記云々のところは『「開いたイルカ」再び』の「慣例的な著作権表記」に実例をあげながらわかりやすい解説があります。参考にしてください。

🌟 なお、文中で出てきた Horos というのはまだオープンソースだった頃の OsiriX を Fork したプロジェクトです。
詳しくは『Horos wiki 風解説』あたりをご覧ください。

HorliX 開発チーム

 

データベース周り

HorliX/Horos/OsiriX は、データベースとして  SQLite を採用している。

データベース実体は、デフォルトでは、ホームディレクトリ/書類 の **** Data である。SQLite はあまり使ったことがないので、物色。

3DSTATE…たぶん、3D 画像を編集した時の状態を保存しておくためのフォルダ。

Database.momd…おそらく、データのモデルが記述してある。たぶん、これがキモ。

Database.noindex…ダイコムファイルそのもの。特にバイナリにはせず、ファイルをぽんと置いた形になっているわけですね。

Database.sql…テキストファイルと思いきや、そのまま開くと意味不明文字列。うーーん。

INCOMING.noindex…普段は空。たぶん、一時ファイル置き場。

 

この程度の理解では改良はおぼつかない。これは、もうちょっと真面目に勉強する必要がある。


ここらへんは、このあと、ちょっと勉強。

ORM が使われてました。そのため、ぱっと見、わかりにくくなっていたわけです。
わかった範囲内でメーリングリストに流しておきましたので、必要あれば過去ログ探してみてください。

 

ROI

ROI という言葉がある。Region Of Interest のことで、文字通り関心領域と訳される。

医療画像を見たとき、慣れた医師であれば、どの部分に注目して何を計測すればいいかわかっているが、DICOM Viewer はたとえ OsiriX MD といえども自動でこの作業をおこなってくれるということはない。したがって、操作者が「関心」領域をコンピュータに教えなければならない。

例えば、心胸郭比を求める場合は、以下のような操作になる。

まず、計測したい画像を立ち上げる。次にメニューバーよりアイコンの機能を変化させるボタンを押下。心胸郭比の場合は、関心領域は直線になるので、Length を選ぶ。

開始点でクリック、ドラッグして、終了点で再度クリック。

するとその直線の撮像時の実空間での距離が計測できる。

心胸郭比は、12.500/29.455 x 100 = 42.438 [%] ということになり、心肥大はないと判定できる。ちょっと直線の引き方が甘いのは大目に見てほしい。

 

と、なんでこんなチュートリアル的な内容を柄にもなく書いたかといえば、この分野で早速リクエストがきたから。海外の方の要望は、ド直球という感じですね。

確かに、関心領域が近接した場合、表示が見にくい。

なので改変。

 

 

英語版では、omrd さんの要望に沿って不要なレーベルを全て削ぎ落とす。日本語版は、漢字の視認性は捨てがたいと思い、残しておいた。

なお、これはぐりぐりのテストコードというやつで、狙った動作をさせるために変数管理などかなり無理をさせている。色の調整などを含め、リリース版に含めるためには、もうちょっと修正が必要。

 

(追記)なので、まず、色目の修正。

のデフォルトのグリーンから始まって、トパーズイエロー→キャロットオレンジ→マドンナブルー→…の順で描画する。

ただし、これは描画途中であって、いったん手を離して ROI を確定すると、最後に確定した ROI がデフォルトのグリーンで表示される。文字にするとわかりにくいですが、使ってみるとたぶんこの動作は一発でわかると思います。

また、色もいわゆる「洋色」メインにしました。

実装も「オブジェクト」・「クラス」を意識してコーディングし、かなりシンプルな形になったかと思います。

なるべく一般性を失わないようにと心がけたせいか面積系の ROI でも一発で狙ったように動きました。

キャロットオレンジ→トパーズイエロー→デフォルトグリーンの順に囲んでいったので、最後に書いた部分がデフォルトのグリーンで描画されているわけですね。

「海馬の体積が何パーセント減って…」などというとき役に立つかと。

(参考:『アルコール依存症患者では視床枕の体積減少がみられる』

 

上記の改変の結果、今のところ ↓ のような操作性になっています。

 

(追記2)上記の機能は、ROI-color-rotation-UI という呼称が割と一般化したようです。

ソースコードを提供した Horos さんのリリースノートにも、この表現が使われています。
色がくるくる変わっていく感じが表現できていて、なかなかいいかと。