Top Banner
電電 Ruby 電電電電電電電電 電電電 電 電電電電電電電電電 () , 電 電電 西 , 電電 電電 , 電電 電 , 電電 電 電 , 電電 電電 , 電電 電電 , 電電 電電 , 電 電電 , 電電 電電 , 電電 電電 , 電電電電 電電 電電電 , 電電 電電 , 電電 電 , 電電 電電 , 電電 Ruby 電電電電電電
16

電脳 Ruby プロジェクト概要

Jan 05, 2016

Download

Documents

tejano

電脳 Ruby プロジェクト概要. 堀之内 武 (京大生存圏研究所) , 西澤 誠也 , 高橋 憲義 , 水田 亮 , 豊田 英司 , 塚原 大輔 , 竹本 和彰 , 小高 正嗣 , 林 祥介 , 石渡 正樹 , 塩谷 雅人 , 乙部直人、中野 満寿男 , 中島 健介 , 神代 剛 , 谷口 弘智 , 電脳 Ruby プロジェクト. 目的. Ruby を地球・惑星流体データの解析、可視化、シミュレーション、データベースに用いるための基礎的なライブラリー群を開発する。. なぜ Ruby ?. 型なし、スクリプト言語(インタープリター) - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 電脳 Ruby プロジェクト概要

電脳 Ruby プロジェクト概要

堀之内 武(京大生存圏研究所) , 西澤 誠也 , 高橋 憲義 , 水田 亮 , 豊田 英司 , 塚原 大輔 , 竹本 和彰 , 小高 正嗣 , 林 祥介 , 石渡 正樹 , 塩谷 雅人 , 乙部直人、中野 満寿男 , 中島 健

介 , 神代 剛 , 谷口 弘智 ,電脳 Ruby プロジェクト

Page 2: 電脳 Ruby プロジェクト概要

目的

• Ruby を地球・惑星流体データの解析、可視化、シミュレーション、データベースに用いるための基礎的なライブラリー群を開発する。

Page 3: 電脳 Ruby プロジェクト概要

なぜ Ruby ?• 型なし、スクリプト言語(インタープリター)  ⇒ 素早くプログラムが開発できる• 洗練され使いやすいオブジェクト指向言語 ⇒ 開

発・保守効率がよく、汎用なソフトを作り易い ⇒ コミュニティーでツールの共有

• 対話的に利用可能 ⇒ 試行錯誤に良い• 拡張性が高い ⇒  C や Fortran のライブラリーの

有効利用• 増え続けるライブラリー(ネットワーク関連 /

GUI / データベース等々) ⇒ 高度なサービスを実現しやすい。

• 文字処理が容易(データ解析中に文字処理が必要になることは多い)

• ゴミ集め、例外処理等の近代的支援機能あり

Page 4: 電脳 Ruby プロジェクト概要

既存のツール・言語があるじゃん?• IDL, Matlab

– 手続き型 ⇒ 汎用なプログラムを作りにくい– IDL: 拡張性・発展性に乏しい。 Matlab :いろ

んなツールボックスがあるけど揃えるのは高価。• GrADS

– 気象分野ではよく使われているが出来ることが限られすぎ

• C,C++,Java,Fortran– データを前に試行錯誤する現場において直接使

うのは非効率。むしろインフラ整備向き。

Page 5: 電脳 Ruby プロジェクト概要

Ruby の利用:実行速度の問題• 流体の場合、計算量を増やすのは主に

データサイズ(グリッド数) ⇒– C のべた並びポインターを構造体にくるんだ

多次元数値配列クラス NArray を利用– C 等で書かれた既存数値計算ライブラリーを

ラッピング

Page 6: 電脳 Ruby プロジェクト概要

地球流体電脳倶楽部電脳 Ruby プロジェクト

• 地球・惑星流体の研究・教育に Ruby を活用するためのプロジェクト

• 基本的にボランティアベース• 現在は、格子点データの解析・可視化関

連の開発と情報交換が中心

Page 7: 電脳 Ruby プロジェクト概要

電脳 Rubyホームページ(日本語

版)http://ruby.gfd-d

ennou.org

地球流体電脳倶楽部トップは http://www.gfd-dennou.org

Page 8: 電脳 Ruby プロジェクト概要

電脳 Rubyホームページ(英語

版)http://ruby.gfd-d

ennou.org

Page 9: 電脳 Ruby プロジェクト概要

主な電脳 Ruby 製品の一覧 (2004 年 5 月現在 )多次元配列

NArray

NArrayMiss 欠損値付

その他

Units 単位

Misc プログラミング補助

Multibitnums 多ビット整数(1D) グラフィック

スRubyDCL

数値計算・統計ライブラリ

RubySSL2

RubyFFTW3

数値配列

DCL ラッパー

SSL2 ラッパーFFTW3ラッパー

枠の色:地の色:

(ほぼ)安定 結構開発が進行 初期段階Pure Ruby C による拡張ライブラリ 斜線:プロジェクト外

ファイル IORubyNetCDF GrADS_Gridded

NetCDF ラッパ

GPV気象庁データGrADS 形

式データハンドリング基礎GPhys 格子点上の多次元物理量を包括的に扱うライブラリ

基礎

中間

応用グラフィックスGGraph GPhys 可視

化( GPhys 付属)

GUI・グラフィックスgave

GPhys データの解析・可視化

遠隔データアクセスgphys_remote サーバー

・クライアント

Page 10: 電脳 Ruby プロジェクト概要

「中間層」:格子点データ取り扱い基礎ライブラリー GPhys

• 名前は Gridded Physical quantity より• 格子点状に離散化された多次元の物理量を抽象化したク

ラス• 配列データ、格子 etc 関する付加情報を持つ。単位有。• データの実態は様々あり得る(統一的に扱われる):

– メモリ上の配列プラス付加情報– ファイル中に存在(現在は NetCDF と GrADS の 2 形式)– 他の GPhys のサブセット/複数 GPhys の合成

• 数学・統計演算などサポート(但しまだ限られている)• メモリー上に乗り切らない巨大データも扱えるよう配慮

Page 11: 電脳 Ruby プロジェクト概要

応用ライブラリー• GPhys を利用する形で構築

– グラフィカルユーザーインターフェース gave  ( by 西澤)

– 分散オブジェクトによる格子点データの遠隔サービス gphys-remote (プロトタイプ版)分散オブジェクトライブラリー dRuby 利用

– GPhys可視化ライブラリー GGraph

• GPhys を利用する利点– 応用プログラムをデータの物理的な構造による制約か

ら解放:• GPhys がサポートするファイル形式が増えれば、応用ライブラリーが扱えるファイル形式が自動的に増える。

• ファイル中のデータと、それを読み込んで加工したデータが全く同列に扱える。

Page 12: 電脳 Ruby プロジェクト概要

gaveのスクリーンショッ

Page 13: 電脳 Ruby プロジェクト概要

パッケージ化

• Linux 用: Debian パッケージ、 RPM

• Windows 用: VC++ 版用(整備中)、 Cygwin パッケージ

• UNIX系汎用一括インストーラー(ダウンロード込み)

Page 14: 電脳 Ruby プロジェクト概要

今後期待される発展• インフラの一層の充実!

– 数学・統計処理や気象学等個別分野用ライブラリーなど (汎用なライブラリーが作りやすい ⇒ コミュニティーのソフトウェア資産形成)

– サポートするファイル形式の増加、などなど• gave 等の GUI, グラフィックライブラリーの充実• 分散オブジェクトの活用

– データベースとの連携による、遠隔データの解析・可視化の充実

– データ公開サーバー構築• Web サービス• 数値シミュレーションへの応用

– シミュレーションコードが短く、見通し良く書ける。但し遅い。

– 別言語のコード生成(中野らの発表)

Page 15: 電脳 Ruby プロジェクト概要

fin

Page 16: 電脳 Ruby プロジェクト概要

なぜオブジェクト指向?• データの抽象化が必要

–似たような、しかし異なるデータが沢山(ファイル形式、次元性、ジオメトリ、単位…)。

–抽象化しないと、微妙に異なるプログラムが沢山必要。(プログラムの再利用性が悪い。∴コミュニティーでツールの共有が難しい。)

  [抽象化:物理構造ベース⇒論理ベース ]

• コンポーネント間の 依存性を減らす必要–組み合わせて使うソフトが、それぞれ互いの変更に出来るだけ影響されないようにしないと維持が大変。