OVERVIEW

マイクロマネージャープロジェクト概要

August 2, 2006

はじめに

UCSF(カリフォルニア大学サンフランシスコ校)Vale研究室のオープンソース顕微鏡プロジェクト「マイクロマネージャー」は 現在サンドラー財団から支援を受けています。主な目標は、万能で、柔軟性があり低価格な顕微鏡制御ソフトウェアを提供することです。持続的な価値と実質的な利益を研究者コミュニティに提供するために、我々は商用ソフトと比べて質も使い易さも同等である、自給自足的なソフトウェアを構築する方法を選びました。同時にマイクロマネージャープロジェクトは、最大限、他のオープンソースツールや部品を利用します。

マイクロマネージャーソフトウェアはいまのところ二つの目的に向かっています。
  • Windows, Mac, Linuxで完璧に画像取得と顕微鏡制御ができ、 簡単なインストールと設定方法で、生命科学の研究室で行われる大抵の仕事がこなせるユーザーインターフェースと組み込み機能をもったソフトウェアパッケージ
  • 最先端の新しい画像取得方法を実装することができ、拡張機能、改変や迅速なイメージングアプリケーションの開発ができる ソフトウェアフレイムワーク


マイクロマネージャーアプリケーションの主な特徴は

  • クロスプラットホーム(Windows, Mac, Linux)
  • NIHにより開発され、広く使われていて自由に手にいれることのできる画像処理パッケージ ImageJと完全に統合している
  • 直感的なユーザーインターフェースとシンプルなインストール方法
  • スクリプト言語やダイナミックプログラム言語をサポートすることで最大限の拡張性を確保
  • 全てのコントロールパスを最大限のスピードと効率にすることで高速の画像取得を可能にする
  • ハードウェアアブストラクションインターフェースを持ち、自動顕微鏡制御に必要などんな周辺機器(どんな型、メーカー、純正ドライバー)に対してもハードウェアから独立したユーザーインターフェースやスクリプトを書く事ができる。
  • 「インテリジェントデータ収集(例えば、解析に基づいた画像取得)」を可能にするサードパーティの解析環境(matlabの様な)向けにプログラマティックインターフェースを持つ

ソフトウェアアーキテクチャ

マイクロマネージャーソフトウェアは3つの基本層から成っています: それはグラフィックユーザーインターフェース(GUI),コアサービス(MMCore)そしてデバイスアダプターです。 それぞれの層は他の層からかなり独立しており、すべてのコンポーネントを一つのアプリケーションに束ねるため、アーキテクチャは二つのパブリックインターフェース(一つはGUI側で、もう一つは周辺機器側)に依存しています。機能拡張のため、このソフトウェアはアプリケーション層に加えてスクリプト環境(編集とコマンドインタープリター)も合わせ持ちます。

ソフトウェアの基礎はC++で書かれたMMCoreモジュールで、プラグイン「アダプター」モジュールを使って様々な機器(カメラ、シャッター、ステージなど)を制御、同期させています。 MMCoreインターフェースは様々なプログラム環境(C++, Java, Matlab, Python, Perlなど)からアクセスできる、顕微鏡制御のための一般的、抽象的な命令セットを提供します。

 Micro-Manage Block Diagram
図1、ソフトウェアアーキテクチャのブロックダイアグラム

中心であるMMCoreに加えて、マイクロマネージャーソフトウェアは以下の部品から成り立ちます。
•    ImageJ プラグインとしてJavaで実装された、総合顕微鏡環境と対話的に動作するためのGUIフロントエンド
•    特定のハードウェアのための、独立したデバイスダプターモジュール群
•    自動制御を記述したり、コマンドラインによる制御を実行するためのスクリプト環境

コアサービス

中心となるコンポーネントはコアサービスモジュール(MMCore)と呼ばれており、全ての自動顕微鏡装置に共通したサービスを提供するハードウェア抽象層です。これは、個々の機器に対応した複雑なデバイスドライバーと、ユーザーインターフェースを隔離する役割も持ちます。MMCoreは二つのプログラミングインターフェースを持ちます。 それは"Top" API(GUIとMMCore)と"Bottom" API(デバイスドライバーとMMCore)です。 "Top API"はGUI製作者に対して、比較的楽にユーザーインターフェースを実装させ、実質的に機器から独立したアプリケーションを作成することを可能にします。 "Bottom API" はC/C++プラグインインターフェースで、プログラマーが最低限のコーディング量と最低限のシステム全体に対する知識だけで、特定機器のサポートを可能にするものです。

MMCoreは以下にあげる様な、機器から独立したサービスを提供します:
•    定義付け、名前付け、新規追加ができる、柔軟なハードウェア設定
•    実行中の機器検索、接続と取り外し
•    撮影時の機器全体の状態を含む自動メタデータ生成と画像注釈
•    機器の同期(例えば、カメラ撮影とステージ、フィルターホイール)
•    高い時間解像度(高速時系列画像取得のため)
•    自動名前生成とディレクトリマネージメントを使った画像の保存
•    一般に使われる画像取得モードの使用(多チャンネル、Zスタック、時系列画像)

 Core module block-diagram
Figure 2, MMCore モジュールブロック図

全体的なデザインの特徴

このプロジェクトで一番重要なデザインガイドラインはモジュール性と拡張性でした。 これらのおおまかな原理に従って、我々は現在の商用ソフトを使うことにより遭遇する深刻な問題(完全に統一された構造と拡張性の欠如)を回避することを目指しました。 同時に、我々は、簡単にインストールできて幅広いユーザー層(特にプログラマーでない人)にも楽しめる顕微鏡画像ソフトを作ろうと思いました。 簡単な操作と拡張性はしばしば対立すると思われますが、我々はこの二つの目標を、妥協なく同時に達成できると考えています。 以下のセクションで、簡単にマイクロマネージャーのデザイン原理と構築に使ったツールの説明をします。

ユーザーインターフェース部とサービス部の分離

マイクロマネージャーソフトウェアとそのアプリケーションはクライアント-サーバ思想に沿って設計されています。 別の言い方をすると、フロントエンドGUIは抽象的な自動顕微鏡APIにより機材制御機能と厳密に隔離されています。 全てのコマンドはGUIがリクエストを送り、MMCoreがそれにサービスする形で単純な要求-応答モデルに沿って行われます。

クライアント-サーバ構造は簡単で頑強な分散ソフトウェアシステムの実装を可能にし、複数のクライアントとサーバがネットワークを通した通信をします。 クライアント-サーバ構造は機能部分とGUIを分けることにより、一層構造のソフトウェアよりも開発や拡張を簡単にします。 現在のバージョンのマイクロマネージャーはネットワークやマルチユーザーアクセスをサポートしませんが、 クライアント-サーバ構造はそのような拡張を、現在のソフトウェアから大きな変更なしに達成することができます。

移植性

完全なプラットフォームの中立性を現実に達成することは、非常に難しいと認識しており、生命科学の研究室で一般的に使われているWindows, Linux, Mac OS Xの3つオペレーティングシステムをサポートすることに集中しています。 マイクロマネージャーコード基礎は真にクロスプラットフォームなシステムです。 バックエンドはC++で書かれ、Mac/LinuxではGNU ツールでコンパイルされ、Windowsではマイクロソフトデベロッパースタジオ(MSDEV)でコンパイルされています。 システムレベルでの機能(スレッド、ログ、タイマーなど)では ACEフレイムワークに依存しています。 フロントエンドGUIはSWINGをベースにしたユーザーインターフェースコンポーネントを利用してJavaで書かれています。

クロスプラットフォーム・グラフィカルユーザーインターフェース

クロスプラットフォームな開発はユーザーインターフェースの構築となると、とても骨がおれるものです。 Java GUIフロントエンドとC++バックエンドの組み合わせはマイクロマネージャープロジェクトにとって信頼でき、敏感なソリューションであることが証明されています。 Eclipse IDE(統合開発環境)により素早くユーザーインターフェースの原型をつくり、開発をすることで、新しい機能を素早くとどけることができるようになりました。

また、広範なImageJライブラリやサードパーティのプラグインを利用することはこのプロジェクトの成功に決定的でした。 マイクロマネージャーはスタンドアロンアプリケーションとしても、ImageJプラグインとしても使うことができます。 ImageJと密接な統合をしたことにより、マイクロマネージャーにない機能が使いたければ、いつでもImageJのユーザーインターフェースに切り替える事ができます。

いくつかの動的言語のためのインターフェース

中心となるマイクロマネージャーAPIはC++やJava同様、PythonやRubyなどの動的言語からも使えるように設計されています。 それぞれのプログラム言語へのバインドはSWIGインターフェース生成器によりC++ヘッダーファイルから自動的に生成しました。 実質的に、SWINGによりサポートされているプログラミング言語はマイクロマネージャーのプログラミングに使えます。 標準的な環境でのそれぞれのプログラム言語の設定は比較的少ない労力で行えます。 標準GUIやImageJ環境以外からのマイクロマネージャーの操作は、比較的単純な命令セットにより、完全に自動化した顕微鏡とデジタルカメラをMatlabにより操作することで確認されました。

インストールと設定

Windowsでのインストールソフトウェアは一つのインストールパッケージにより成り、MacとLinuxではマイクロマネージャーソフトウェアを含むフォルダをコンピューターにコピーすることで行われます。 システム設定は周辺機器の構成に依存します。接続されている機器は設定テキストファイルで指定しなければなりません。 様々な一般的設定の例は、設定の編集の仕方と共に提供されています。 一度、周辺機器が指定され、初期設定されれば、命令セットはユーザーインターフェースの中のデバイスマネージメントを使って簡単にカスタマイズできます。 例えば、ユーザーは一つの命令により複数の機器を同時に動作させる設定をすることができます。

© Micro-Manager : Vale Lab, UCSF 2006-2009 | All Rights Reserved | Contact