概要

KiNOKO は,VME や CAMAC などを使用する高エネルギー実験・原子核実験のための汎用のデータ収集ソフトウェアです.シングルプロセスの小さなシステムから数十台の計算機を並列に使用する規模のシステムまでを,統一されたインターフェースでカバーします.また,内部は高度にモジュール化されており,高い可用性と再利用性を実現しています.システムの構築から細かな動作の指定までほとんど全てをスクリプト言語によりコントロールでき,多くの実験や測定にそのまま使用できます.

Home

主な特長

強力なスクリプト言語
KiNOKO は,文法独立な構文解析エンジンを備えています.この構文解析エンジンは各実験特有の設定などを記述するために KiNOKO のあらゆる部分で使用されており,このためユーザが KiNOKO のソースコードを編集する必要はほとんどありません.

再利用可能なデバイスインターフェース   
CAMAC や VME などのデバイスにアクセスする部分のコードは,そのデバイスが持つ機能へのインターフェースのみを記述した独立したコードとして構成されています.そのデバイスがどのように使われるかとは完全に分離されているため,同じモジュールを使用するほかの実験や測定にそのまま使用できます.広く使用されているモジュールのいくつかは,すでにコードが実装され,KiNOKO の一部として提供されています.

分散オブジェクト環境による統合された分散処理環境
KiNOKO のシステムは,その下位層に,オブジェクトリクエストブローカ (ORB) を持っています.これは,ネットワーク上の別の計算機の別のプロセス内にあるオブジェクトを,自プロセス内のローカルオブジェクトであるかのように扱うことを可能にするシステムです.これにより, KiNOKO は分散環境上で並列動作するシステムであるにもかかわらず,複雑なネットワーク処理をほとんど意識する必要がなく,統合されたひとつのシステムのように振舞います.

コンポーネントによる実行時システム構築
KiNOKO の上位層は,コンポーネントと呼ばれる機能単位に分割されています.KiNOKO のコンポーネントは,実行時にスクリプトによるシステム構築を可能にするもので,具体的には,実行時におけるコンポーネントの配置や,メソッドの結合,内部オブジェクトの共有などが実装されています.各コンポーネントは機能単体を提供しており,それらを実行時に組み立てるという方法により,さまざまな目的・構成のシステムを簡単に構築することができます.さらに,独自のコンポーネントを作成することにより,実験特有の機能を追加したり,特殊な外部システムにインターフェースすることができるようになります.

自己記述性を持ったデータストリーム
データストリームを流れるデータは,同じストリームの先頭に来るデータデスクリプタによってその構造や意味が完全に記述されています.これにより,このデータを処理する他のコンポーネントが,特定のデータ構造を想定しない汎用の実装を行うことができるようになり,再利用可能な解析部品の開発が可能になります.また,これらの情報がデータファイルに記録されれば,データファイルの管理の手間が大幅に減り,管理ミスによるトラブルも減少します.

分離されたユーザインターフェース   
すべてのユーザーインターフェースは,KiNOKO 本体から完全に分離されています.本体とユーザインターフェースの間の通信はソケット経由の簡単なテキストコマンドによってなされており,互いにライブラリ等をリンクする必要はありません.これにより様々な環境・言語でのユーザインターフェースの実装が可能になると共に,システム本体を環境依存性の強いグラフィクインターフェースから分離します.

分散システムからシングルプロセスまで対応するスケーラビリティ
ORB による透過的なネットワーク分散処理と,コンポーネントモデルによる実行時コンポーネント配置によって,システムを複数の計算機上に展開することは極めて容易です.新しい計算機の追加を行なう場合でも,その際必要なのはスクリプトを数行編集することだけです. 逆に,ORB によって,通常は別のプロセスにより行なわれる処理も一つのプロセスにまとめることもでき,これを利用してシングルプロセスのデータ収集プログラムなども実装されています.

SQL データベースとの連携
KiNOKO は,JDBC に似た形のデータベースインターフェースを含んでおり,これはスクリプトからも利用できます.これにより,スクリプト中に実験パラメータ(HV テーブル,測定器ジオメトリなど)を直接記述する必要がなくなり,スクリプトが簡素になって,パラメータの一元管理も可能になります.

その他
KiNOKO は,その最下層において,すべてのシステムコールをカプセル化しています.また,KiNOKO の本体部分は,このシステムコールの利用を除けば,C++の標準ライブラリのみで実装されています.これらのことは,ユーザインターフェースが分離されていることとあわせて,システムの移植性を向上させます.

KiNOKO のほとんどすべての機能は,あとから拡張できるように実装してあます.拡張ポイントおいて,インターフェースを実装したクラスを追加・登録することにより,新機能の追加を容易に行えます.また,KiNOKO のソースツリーは,可能な限り部分利用ができるように,多くの部分が独立になっています.実際,すでに多数の部分利用例があり,その中には高エネルギー実験とは関連がないものもかなりあります.

KiNOKO が提供するもの

以下は,KiNOKO が提供するものの一部です.

KiNOKO が提供しないもの

以下は,KiNOKO が提供しないものの一部です.


Edited by: Enomoto Sanshiro