はじめに#

万葉ライブラリとは#

万葉ライブラリとは、J-PARCの物質・生命科学実験施設(MLF)において実施される中性子散乱実験にて得られたデータの解析に使用されるソフトウェアの開発基盤(フレームワーク)を提供するものである1)。

かつての中性子や放射光などの量子ビームを用いた大規模な散乱実験装置では、研究分野、目的、実験手法や装置の特性に応じた装置制御と解析ソフトウェアが研究開発され共同利用実験に供されてきた。これらのソフトウェアの開発は装置ごとに行われてきたために、研究施設内での実験パラメータやデータの共有が難しいだけでなく、ソフトウェアの長期にわたる維持管理が組織的に行えない問題点が以前から指摘されてきた。

そのような観点からMLFにおける中性子の実験装置関連の計算機環境は、J-PARCセンターのMLF計算環境検討グループによって統合的に研究開発が行われ、装置間の計算機環境の標準化の努力がなされてきた。検討範囲は、データ収集、データ解析、セキュリティ、シミュレーション、データ可視化などMLFでの共同利用実験で必要な環境すべてである。

そのような状況下で、本書で述べる万葉ライブラリはデータ解析環境の中核となるソフトウェアとして開発されてきた。

主な特徴#

先に述べたように万葉ライブラリは、MLFにおける中性子実験データの処理に対して共通に使用される機能と各装置の仕様にあわせたソフトウェアの開発基盤を提供することが求められる。そこで採用されたのが、多数の開発者(研究者)が並列作業で機能追加をし、統一的な開発方針を策定することが可能となるオブジェクト指向型のフレームワークである。

オブジェクト指向の利点の一例をあげてみる。例えばデータファイルを開く場合、フレームワークではReadData(string FileName)の関数を用意し標準的な読み方を実装しておく。一方で分光器によって機能不足の場合にはこの関数を上書きで変更することで、利用者は同じ関数名でその機能を利用できる。このように、オブジェクト指向では、施設標準の動作に加えて、分光器や研究者に応じた機能を組み込むことが容易である。この例のような利点があるために、オブジェクト指向に基づいた基盤ソフトウェアを整備することで、解析ソフトウェアの開発が少ない人的資源で迅速に行え、維持管理が長期にわたって容易になることが期待でき、施設全体のソフトウェア環境の信頼性向上が望めるのである。

実験データの読み込み、ヒストグラム化、データ解析の各種演算子などのパッケージは、オブジェクト指向プログラミング言語であるC++言語のフレームワークとして開発されている。そして、個々の実験装置で別途必要な解析機能は、C++のモジュールとして追加することで拡張ができる。更に、C++の対話的利用(キャラクターベース、グラフィカル)は、スクリプト言語であるPythonを用いて開発が進められている。このようにしてC++の高い機能と速度性能を、ユーザーが扱いやすい環境で利用可能としている。この解析環境フレームワークは、C++だけのバッチモードと、Pythonを使ったインタラクティブモードを有効に使い分けできる特徴を有している。

万葉ライブラリのフレームワークは、様々な次元のヒストグラムを入れる容器、データコンテナを中心として構成されている。多次元ヒストグラムのエラー伝搬機能付きの四則演算、イベントデータのヒストグラム化、データコンテナのファイルの読み書きなどがその主な機能である。様々な解析演算子は、このデータコンテナを入出力として扱うことで、万葉ライブラリのソフトウェア上でのデータフォーマットを規定できるだけでなく、演算子を連結することで解析ソフトを作成することができる設計である。

これらの特徴を生かして、様々なデータ処理・解析コードがすでに多数開発されている。現在のMLFに設置された多数の装置において、この万葉ライブラリやこれを用いた「空蝉」2),3)「絵巻」4),5)といったデータ処理パッケージが解析の要として動作しており、MLFにおける必須の技術として広く使用され、日々の成果創出の基盤となっている。

開発体制#

開発初期#

万葉ライブラリは2002年夏頃にMLFにおける中性子データ解析環境の整備を目的に開始された。開発は大友季哉氏(高エネルギー加速器研究機構(KEK))、古坂道弘氏(現北海道大学)をアドバイザーに、鈴木次郎(当時KEK計算科学センター博士研究員)でKEKつくばにおいて開始された。

現状#

2015年現在、開発メンバーとして、鈴木(KEK計算科学センター, J-PARC Center)、中谷健、稲村泰弘(日本原子力研究開発機構(JAEA), J-PARCセンター)、伊藤崇芳(一般財団法人 総合科学研究機構 中性子科学センター(CROSS))らをコアとして、KEK, JAEA, CROSSのJ-PARCセンター員により構成されるMLF計算環境グループが開発を進めている。

使用言語の選択#

万葉ライブラリ利用者が直接触れることになるユーザーインターフェースとしてのプログラミング言語には、スクリプト言語であることから柔軟に利用でき、オブジェクト指向言語であり、また、将来性のある言語としてPythonが選択された。

万葉ライブラリの基礎部分をC++のクラスライブラリとして、整備することにした。これは、Pythonだけでは処理速度が遅いこと、C言語によるライブラリの開発経験者が多いこと、並列化や分散処理に対応する予定であることなどによる。

C++クラスライブラリをPythonから利用するためのインターフェース(ラッパ)は手作業で作成することは可能だが、自動化をするためにSWIGを使用している。

名前の由来#

「万葉ライブラリ」の名前は、

  1. 日本発祥のフレームワークとして 和名 が適しており、

  2. 「万葉」とは「万葉集」「万葉仮名」などで知られているように「万(よろず)の言の葉(ことのは)」であり、 様々な研究分野の研究者が様々なソフトウェアを結びつけ協調する解析環境 を示すにふさわしく、

  3. 「万葉集」が千年以上伝えられてきたように 末長く使用されたい という願いをこめて、

名付けられた。