User Tools

Site Tools


inspire

Inspireとは

概要

 従来のアプリケーションのグラフィカルユーザインタフェース(GUI)は、OS依存のAPIやGTK+、Motif、Tkなどのライブラリを用いて作られている。このため、GUIの開発においては開発者は使用するAPIを熟知している必要があり、高度なプログラミング能力が期待される。また、APIに強く依存するため、どうしても特定プラットフォームに依存してしまい移植性が低くなる。

 G-language GAEにおいて、Odysseyメソッドの開発者、即ちユーザは同時にGUIも開発する場合がある。version 1ではそれに限定されているように、単純にテキストやグラフとしての出力だけであればGUI開発をする必要はないが、よりインタラクティブでデザイン性に優れたインタフェースを持つメソッド、または画像を作成して出力する場合などはGUIを開発しなければならない。この時ユーザにGUIのAPIを熟知していることを求めるのは現実的でないし、容易に扱えて開発できるのでなければG-language GAEの理念にも反する。また、通常のGUIのAPIでは表現力がある程度限定されてしまっている点も否めない。

 そこでversion 2ではInspireという新しいインタフェースの形を提唱し実装している。Inspireではコアの計算エンジンとフロントエンドが切り離され、フロントエンドにHTMLを採用する事で開発の容易さ、表現力、そして高い移植性を実現する。HTMLはマークアップ言語として幅広くWWWで使われており、タグを書くのが容易であるばかりでなくDreamWeaverやホームページビルダーなどWYSIWYGなアプリケーションも充実している。また、画像・音楽・動画などマルチメディアデータ、Java Script・Javaアプレットなどプログラム、そしてFlash・SVGなどメタコンテンツを埋め込むことが可能であり、表現力も拡張性も優れている。オンラインの無限の資源を効率良く生かすハイパーリンクが使えることも特筆に値する。そしてWWWの特性として、HTMLは完全にプラットフォーム非依存である。

 HTMLベースのフロントエンドと切り離されたバックエンドという構造は、一見CGIと同じようだがInspireではいくつかこれに加えて特徴がある。InspireではWebアプリケーションとしてだけでなくローカルなアプリケーションとしても使用可能であり、ページ毎に通信が行われるだけでなく一部主要メッセージは常にダイナミックに情報を送受信する。フレームワークとしての機能は従来のAPIを用いたGUIでも代替可能で、HTMLベースとなるべき部分はOdysseyのインタフェースのみである。

 下図はversion 2における genome map version 2 の実行イメージである。SVGで描かれたイメージはベクトル画像でアニメーションもついていて、ドラッグして動かしたり拡大・縮小が画質を損なうことなくできる。まずプラスミドの図から特定領域をクリックすることでマップが現れ、それを拡大してppa遺伝子を見つける。これをクリックすると詳細な情報が新規ウインドウに表示され、そこからさらにCOGsなど外部データベースを参照することができる。プラスミドの図部分はhttp://www.g-language.org/data/gaou/doc/skyline/plasmid_map.svg から実際にSVGを見る事ができる。また、Flashを使ったインタフェースの良い例としては .e (ドット e) http://www.g-language.org/~gaou/dote/default.html がある。

エキスパート向け説明

 上述の通りフロントエンドとバックエンドでInspireはアーキテクチャーが異なる。フロントエンドとバックエンド間の通信は主としてHTTP経由のCGIアクセスになる。ダイナミックな通信はGサーバと直接繋がることで実現される。それぞれのコマンドは一端ネットワークを流れるので、フロントエンド側は必ずしもPerlで実現される必要は無い。つまり、Inspireを機能させるためには少なくともスタティック通信のためのCGIスクリプト+Webサーバ、そしてダイナミック通信のためのGサーバの二つが存在している必要がある。また、クライアントもブラウザ機能とネットワーク通信機能(Java appletなどで代替可能)を備えている必要がある。

 バックエンドはMessenger APIとInspire API二つのクラスから成る。Inspire APIはSystemクラス群の制御をネットワーク経由で扱う場合に簡易化したもので、主にSystem実行に携わる。Messenger APIはフレームワークとしてmsg_send(), msg_error(), msg_gimv() 三つのアウトプットを明示的に変更及び定義可能なものとして提供する。これは丁度 tie 関数によって FETCHやSTORE関数の動きが明示的に定められるのと似ている。これによってよりハイレベルなインタフェース設計を行うことも可能で、内部メッセージを一時的にトラップして処理する時などに活用できる。デフォルトでCGI経由のメッセージングに特化した定義がなされているが、これを変更することによりことなるネットワーク通信を介すことも可能になる。

 GCFに記述さえすれば全てのOdyssey関数は(そしてCHI Engineを使用している場合なら全ての関数は)Webアプリケーションに変換可能である。ダイナミック通信部分はMessengerのmsg_send()及びmsg_error()のために使われるため、あまり解析時間がかからないアプリケーションであれば全てスタティック通信であっても十分である。

現在プロトタイプ(スタティック通信のみ)が以下のURLで閲覧できる。

inspire.txt · Last modified: 2014/01/18 07:44 (external edit)