ノート
アウトライン
オブジェクト指向言語Rubyによる
データ解析・可視化のためのクラスライブラリー開発
堀之内 武・川那辺 直樹・塩谷 雅人
(京大宙空電波研究センター),
後藤 謙太郎,
 神代 剛(富士通FIP),
電脳Rubyワーキンググループ
目的
Rubyを地球・惑星流体データの解析、可視化、さらにシミュレーションに用いるための基礎的なライブラリー群を開発する
問題意識
 現在多くの研究者が行なっている可視化やデータ解析の方法はあまり時間効率が良くない
データの大規模化・多様化
データのネットワーク分散
Rubyの特徴
型なし、スクリプト言語(インタープリター)
  ⇒ 素早くプログラムが開発できる
対話的に利用可能
後付けでないオブジェクト指向言語
移植性・拡張性が高い
増え続けるライブラリー(ネットワーク関連 / GUI / データベース等々)
文字処理が容易
GC、例外処理等の支援機能あり
他言語との比較
何故オブジェクト指向言語か?
一例: データ構造・媒体を隠蔽した統一的な扱い、
 抽象度の高い命令 ⇒ プログラミングが楽、汎用性
実行速度の問題
流体の場合、計算量を増やすのは主にデータサイズ(グリッド数)
⇒
Cのべた並びポインターを構造体にくるんだ多次元数値配列クラスNArrayを利用
C等で書かれた(既存)数値計算ライブラリーをラッピング
プロジェクト概容紹介
(基礎ライブラリー)
プロジェクト概容紹介
(現時点での応用プログラム)
Gtk, DCLによるNetCDFビューワー(by西澤、実験段階)
数値シミュレーション用MVCフレームワーク(by高橋(前講演)、実験段階)
まとめ
オブジェクト指向スクリプト言語Rubyを地球・惑星流体データの解析、可視化、シミュレーションに用いるための基礎的なライブラリー群を開発している
これまでの開発・利用例を通じてその有用性が示されてきたが、今後さらに精力的な開発を行なう必要がある
今後の展望
現在未完成・未サポートライブラリーの作成
利用者獲得 ⇒ 改良・機能増強
分散データベースへの対応(Pandra, DODS)
気象学等の細分野用アプリケーション作成  ⇒ コミュニティーでの資源共有
fin
多次元物理量ライブラリーGPhys
(実験段階)
自己記述的データオブジェクトのクラス:NetCDF型データモデル
(今のところ)NetCDFファイル中のデータ、実行時にメモリー上に存在するデータに対応
メモリーに乗り切らない大規模ファイルの処理を行なうための、自動分割イテレーターをサポート
実行例
スライド15
DCLによるグラフィックスのサンプル
DCLによるグラフィックスのサンプル(2)
Gtk, DCLによるNetCDFビューワー
以後、予備スライド
GPhysクラスの内部構成
NetCDFファイル形式
「配列指向」
複数の変数=多次元配列(スカラーを含む)を納める
変数、ファイルは名前と値の組による「属性」を持てる
NetCDF形式における変数相互の関連づけ
次元名と一致する名前を持つ変数に座標値を収める
大規模データの扱い
メモリー上に一度に読み込むには大きすぎるデータの処理用に、詳細を隠蔽した形で自動分割、繰り返し処理を行うイテレーターを作成。(参照によるサブセット切り出しを利用)
使用例:
         bigdata.each_subset_set{|sub|
              x = - sub * (sub - 1.0 )
              x[ x.lt 0 ] = 0
              x
        }