2016年4月5日火曜日

第7回 OsiriXの開発環境構築(OsiriX-OS 32-bitをビルドする)

前回は、OsiriXの機能をユーザが独自に拡張できるプラグインについて、概要をご紹介しました。実際にプラグインの開発に進む前に、OsiriX本体の構成も知っておく必要があります。

今回は、公開されているソースコードから自分だけのOsiriXをビルドする手順について、ご紹介いたします。


OsiriXをビルドするための準備

PC


OsiriXは、Apple社のMac製品で動作するソフトウェアです。



そのため、開発にもMac製品が必要です。例えば、iMac、Mac mini、Mac book Air/Proなど、ご自身のニーズに合わせて製品を揃えてみてください。
Mac miniでしたら、6万円程度で購入できます。中古も結構あります。


開発環境


OsiriXの開発環境は、"Xcode"です。Xcodeは、App storeで無料で公開されています。
最新版をダウンロードしておきましょう。


プログラミング言語


プログラミング言語は"Objective-C"です。
Objective-Cは、C言語を元に開発された親しみやすい言語になっています。C言語プログラムの経験がある方には容易に使い始めることができます。

Objective-Cを勉強するためのおすすめの書籍は、以下のものです。(特にAaron Hillegass氏の書籍がオススメです。日本語訳版もあります。)
  • Cocoa Programming for Mac OS X by Aaron Hillegass
  • Learning Cocoa with Objective-C by James Duncan Davidson & Apple,Inc.
  • Programming in Objective-C by Stephen Kochan

Mac OSX 10.8 SDK


OsiriX-OS(OsiriX-OpenSource)は、2016/4月現在、MacOSX10.8.sdkを利用しています。
このSDK(Software Development Kitは、Mac OS Xに対応したソフトウェアを開発するために必要なプログラムや文書などをひとまとめにしたパッケージです。

MacOSX10.8.sdkは、こちらからダウンロードできます。

https://github.com/phracker/MacOSX-SDKs


(右側にDownload Zipがあります)


Download Zipで、すべてダウンロードしたのち、解凍して、その中のMacOSX10.8.sdkをXcode内の特定の場所にコピーします。


FinderからアプリケーションフォルダのXcode.appまで移動し、Xcode.appを右クリックあるいはcontrol+左クリックで選択し、「パッケージの内容を表示」を選択します。



Contentsというフォルダを参照することができるようになりますので、このContentsに含まれている"SDKs"というディレクトリまで移動し、この中に、MacOSX10.8.sdkをコピーします。

(Contents>Developer>Platforms>MacOSX platform>Developer>SDKs)
Xcodeのバージョンによって階層が変わることがあります。


Xcodeのバージョンが7.3.1以上の環境を利用する場合は、MacOSX platformと同じ階層にあるplistを開いて、minimum sdk versionの項目を10.8に変更してください。
ユーザー権限の関係で直接編集ができない場合は、一旦、デスクトップなどにコピーしてから編集した後、このファイルをドラッグドロップなどで上書きします。


OsiriXのソースコードを取得する


OsiriXのソースコードは、Pixmeo社によってGitHubで公開されています。
https://github.com/pixmeo/osirix

先のsdkのダウンロードと同様、Download Zipでソースコードをすべてダウンロードします。解凍して、書類フォルダなどに移動しておきましょう。


ビルドしてみよう!


上記の準備ができたら、早速ビルドしてみましょう。
ここまでで、PCのビギナーの方には難しいことだらけだと思いますが、深く考えず、難しいことは後にして、まずは試してみるのが次のステップにいくために効率がよいです。


Xcodeの起動


まずは、OsiriXのプロジェクトをXcodeで起動します。
このために、ソースコード内にある「OsiriX_Lion.xcodeproj」をダブルクリックして、Xcodeを起動してください。


XcodeでOsiriX_Lion.xcodeprojを起動

プロジェクトが立ち上がり、すぐにソースコードを編集できる状態になります。


OsiriXのソースコード構成を知ろう!


ここで、一杯コーヒーを飲みましょう。時間がない方は次の項目までスクロールしてください。

今からOsiriXを起動してみるのですが、どんなものでOsiriXが動いているのか、少しだけ知っておきましょう。

これを知っておくだけで、「OsiriXの操作ができるユーザ」から、その次のレベルの「OsiriXを理解して使うユーザ」になれます。


(OsiriXの構成ファイル)

・JPEG-LS(CharLS)
非圧縮のJPEG画像を取り扱うためのヘッダーファイル群です。

・KDU SDK
KakazuというJPEGライブラリです。32bitでコンパイルされています。(64bitは有償で、同梱されていません)

・Nitrogen
データベースを含む様々なユーティリティがコーディングされているコードセットです。

・DICOMPrint
DRYイメージャーなどにDICOMデータを出力するなどのDICOM画像出力のためのヘッダーファイルです。Aycan社の提供です。

・dcmtk 3.5.4
さまざまなDICOMのツールキットを含むdcmtkです。
OsiriXの独自拡張コードが含まれているため、単純に新しいものには載せ替えできません。

・Models
OsiriXデータベースとWebポータルデータベースのモデルファイル(コアデータ)です。

・DCM Framework
DICOM情報定義などを含むDICOMに関連したOsiriX独自のフレームワークです。dcmtkと併用されています。

・Papyrus
Papyrusは、ジュネーブ大学病院のChristian Girard氏らが開発しているDICOM3.0ツールキットです。
OsiriXのデフォルトはDCMTKですが、Papyrusも利用できるようになっています。

・Utilities
iLifeとの連携やDockとの連携などの機能になっています。

・Classes
OsiriXのソースコードが含まれています。OsiriXを学ぶときは、この中のコードを参照します。例えば、2D、3D、CPR(Curved planar reconstruction)、GUI(Graphical user interface)、DICOMネットワーク、ROI(Region of interest)、Webなどの機能に関するクラスが記述されているヘッダー/メソッドファイルがあります。

・Resources
主にグラフィカルな資源が含まれています。例えば、OsiriXの起動画面のxib(ジブ)ファイルなどもこのファイルにあります。その他、起動ボタンとして設定されているPNGやTIFF画像もここに保管されています。OsiriXのアイコンもここにあります。
これだけではなく、WebサービスのHTMLやweasisという簡易DICOMビューワもここに含まれています。

・Frameworks
より上位のクラス群がリンクされています。例えば、Mac OSXでアプリケーションを実行するためのcocoaやAppKitなどのフレームワークをはじめ、外部ライブラリのITK・VTKのヘッダーやライブラリなどがあります。

・Products
ここには、実行ファイル(コンパイルして.app拡張子になるもの)が含まれています。実際に作ったアプリケーションをリリース/デバッグすると、このファイルが作られます。

さて、コーヒーは飲み終わりましたか?


Build Settingの確認(肝です)


それでは、ソースコードの構成もだいたいわかってきたところで(まったくわからなくても問題ありません)、OsiriXをビルドしましょう。

そのために非常に重要なのが、Build Settingと呼ばれる設定項目の確認です。
重要なことは、このソースコードは、2016/4現在は32-bitでしかビルドできないということです。ここを、勝手に64-bitなどに変更してしまうと、ビルドはできません。32/64ユニバーサルもNGです。

もう一つ重要なことは、先ほど設定していただいた通り、OsiriXは現時点ではMac OS X 10.8のSDKに依存しているということです。ここを勝手に自分のPC環境などに合わせて最新のもの(例えば10.11など)にしてしまったりすると、ビルドできませんのでご注意ください。

これらの2つの注意点に留意して、プロジェクトを選択してから、そのBuild Settingタブを表示させ、すべてのビルドターゲットのBuild Settingがこれらの2つの設定となっているか確認してください。

以下のビルドターゲットのBuild Settingのうち、Architecturesは以下の設定にしてください。
  • OsiriX:32-bit Intel(i386)~
  • DCM Framework:32-bit Intel(i386)~
  • Unzip binaries:32-bit Intel(i386)~
  • Build All Prerequisites:32-bit Intel(i386)~
  • Decompress:32-bit Intel(i386)~
  • DICOMPrint:32-bit Intel(i386)~
  • OsiriX API:32/64-bit Intel~
※"~"は、ほにゃらら、または、ほげほげという意。

そして、Base SDKやDeployment TargetなどはすべてOS X 10.8のバージョンにセットします。Base SDKはコンパイルに利用するSDKです。Deployment Targetというのは、どこまで昔のMac OSに対応させるかを設定する項目です。例えば、10.8にした場合は、10.7では起動せず、それ以上のMac OSで起動できるアプリケーションを作ることができます。


(プロジェクトを選択してBuild Settingを表示。Build Settingはビルドターゲットを変えながらすべて確認しましょう。一つでも「OS X 10.11」などに設定してしまっている場合は、10.8に切り替えてください。)

Unzip Binariesをビルド


ここまでできたら、もうあなただけのOsiriXをビルドするまでもう少しです。

まず、ビルドターゲットをUnzip Binariesにセットし、Unzip Binaries>My macとしてビルド(再生マークのような右向き三角マークを押す)してみましょう。
そうすると、Build Succeeded!と表示されるはずです。


(Unzip Binariesをビルド)

OsiriX.appをビルド

同じような機能を持つアプリケーションをベンダーから買うと数百万します。そのようなアプリケーションをあなたは自分の力で起動しようとしています。

ビルドターゲットをOsiriXに変えて、OsiriX>My mac 32-bitの設定でビルドをRunしてください。




起動までは少し時間がかかります。無事にビルドできると、OsiriXが起動されます。

残念ながら、ここで、赤いエラーマークが出たら、もう一度、上記の設定が正しくできているかどうかご確認ください。



無事にビルドできると、OsiriXが起動されます。この例では、筆者が少しOsiriXのインターフェースにカスタマイズを加えているので、いつものOsiriXとは容姿が異なっていますが、みなさんのOsiriXは、OsiriXそのものが起動できたはずです。

無事にビルドできた方、お疲れ様でした。


最後に


もし、どうしてもわからない!という方は、ご連絡をいただければ何かしらアドバイスは可能かもしれません。また、今回のソースコードはGitHubで公開予定です。

Visionary Imaging Services, Inc.は、イメージング技術サポートを通じて、創薬研究や医療機器開発など、臨床研究(臨床試験)サポートサービスを展開しております。OsiriXシリーズも販売中です!よろしくお願い致します!

ビジョナリーイメージングサービスは、日本(特に神奈川の)ユーザーのニーズにいち早く応えるために、GRAPHYを開発しています。オープンソースです。


神奈川OsiriXユーザ"600"以上を目指してがんばります!


2 件のコメント:

  1. 初めてコメントさせていただきます。
    もしよければアドバイスください。
    本文中ご指示の通り、XcodeにSDKのコピーなどをしましたが、
    Xcode起動後のBuild Settingの設定の項目でmacos10.8と出るものの
    その後にSDK not foundと表示されてしまいます。
    もし原因等わかればご教示ください。

    それとOsiriX-KANAGAWAダウンロードし少し使わせていただきました。
    何事も問題なく使えていますが、このアプリは使用制限等はありますでしょうか?
    また私の知り合い等に渡したりすることは大丈夫なのでしょうか?

    返信削除
    返信
    1. コメントありがとうございます。

      ・SDK

      私は、Xcodeのversion 7.2.1を利用しています。
      このブログにある通り、SDKsというフォルダに、MacOSX10.8.sdkをコピーして、特に問題なく動作しています。

      ・ライセンス

      ライセンスは、OsiriXと同様になります。
      ソースコードを改変し、商用利用される場合は、本家(Pixmeo)にお知らせください。
      お知らせいただいて、こちらから何か営利目的のアクションをすることを意図したものではありません。

      コメントをいただき、大変恐縮ではございますが、VIS,Inc.までお問い合わせいただけましたら、もう少し具体的に情報交換させていただけます。

      ご検討のほど、どうぞよろしくお願い申し上げます。

      Visionary Imaging Services, Inc.
      http://www.vis-ionary.com/inquiry

      削除