第1回電脳 Ruby ワークショップ: 発表記録メモ

by 西澤誠也 (modified by 堀之内)
3/15

1. 堀之内(京大・宙空電波)さん
  本年度の活動オーバービュー
    ruby-dcl
    +α
    GSL
    SWIG
    NetCDF
    AdbancedDCL
    Gtk+
    ベクトル計算機上での数値計算

  多次元配列クラス NArray とは
    概念
      配列(10*20) ->
	float *a;		/* pointer */
	int   rank;   2		/* 次元数 */
	int   shape;  10, 20	/* 次元長  */
	int   type;   FLOAT     /* 要素タイプ */
      のような構造体があれば表現できる

  数学演算
    a.type == Narray のとき Math::sin(a) が通る必然性はない。したがって
    Math::sin を
    {
        if a.is_f then
	  begin
	    sin(a).to_f
	  rescure
	    a.type.sin(a)
	  end
	 end
     }
     となっていればそのclassにsinというクラスメソッドが定義されていれば通る。




2. 常定芳基(東工大)さん
  Ruby/GSL (GNU Scientific Library)
    GSL
      基本的な科学ライブラリーが含まれている
      C言語で書かれている
      フリーである
      Numerical Recipes in C のようなもの(NRC は NonFree)
      C はめんどくさい(メモリーや作業領域の確保やら、なんやら)

  Ruby/GSL
    GSL の構造体をrubyのオブジェクトにラップする
      メモリーや作業領域の確保は内部に隠す
      メモリーの解放は Ruby にまかせる
      C よりは短く書ける
      ほとんど使えるものはできている(fft がまだ)
      今後
        GSLの機能の網羅
	  ODE
	  Nonlinear Least-Square Fitting
	 interpolation
        ラッパーの自動生成(SWING)
        インタープリター




3. 小塚真啓(京大・法)さん
  SWIGチュートリアル -- 猿向け講座/GSLへの応用
    SWIG: C/C++ でかかれたライブラリーを様々なスクリプトで使うためのコー
   ドを自動生成する
      チュートリアルを用意 (http://kozuka.jp/doc/swig/)
      Narray 対応がだいたい整った。
      GSL もだいたいいけそう


4. ディスカッション
  SWIG による Ruby/GSL の拡張, GUI
    GSL ラッパーを作る際 SWIG が使えるか?
      何がすでにあって何がない?
      構造体が少なければ使えるかも(構造体が多すぎる)
      素直にいきそうなものはない?
      FFTは GSL より http://momonga.t.u-tokyo.ac.jp/~ooura/fft-j.html
      を使おう。



5. 川那辺直樹(京大・宙空電波)さん
  Ruby/DCL -- DCLの直接のラッパー
    DCLの全サブルーチン(**pset以外)が DCLモジュールの下にラップさている
    DCL と1対1対応
  AdvancedDCL -- Rubyでの利用のためのさらなるラッパー
    irb 等で使いやすいように再構成
    Axis 周りは再考の余地あり ⇒ 再構成することになった
    パラメータの扱い等を大きく変えた(Parameter class)
      パラメーターの持続
        Module.parameter.set(val) または Module.parameter=val
      一時的なパラメーターの変更(実行後に元に戻る)
        Module.hoge(ho,ge,"parameter"=>val)
    eval -> send に変更
    sync flag いるのか(常にsyncする?)




6. 西澤誠也(京大・理)
  Ruby/Gtk+ からの DCL 利用
    http://www-mete.kugi.kyoto-u.ac.jp/seiya/dcl/index.html
    GUI プログラミング デモ
    NetCDFブラウザー デモ


7. 堀之内武(京大・宙空電波)
  NetCDF -- 構成と使い方
    Ruby/NetCDF 変数、軸、属性まで含めたオブジェクト
      基本的には生 NetCDF と1対1対応
      便利なものは明日の川那辺直樹さんの発表で



8. 神代剛(富士通 FIP)さん
  インストールしてみて/使用感他
    インストールメモ
    http://dennou-k.gfd-dennou.org/arch/ruby/INSTALL_MEMO_jp.htm




9. ディスカッション
  どんな絵を描いたかの情報 -> NetCDF に埋め込む?








3/16

1. 高橋憲義(京大・理)
  ベクトル計算機への移植とお手軽流体シミュレーショプログラミング
    ruby の VPP、KDKへの移植 -> あまりうまくいっていない
      kdk2(HP): OK
      kdk1(NEC SX): miniruby ができない
      Fujitsu VPP: shared にするとベクトル化ができない等
      静的リンクにすればよい?

    簡単シュミレーション(オブジェクト指向プログラミング)
      ispack(一部) を ruby で使えるようにラッパーを作った
      77的コードをオブジェクト指向で再コーディング

    プログラミング(堀之内さん)
     従来:
      +――――――――--------------+
      | モデル:                |
      | 初期化 <- データ          |        ⇒ 出力を変えたければ
      | ループ -> 出力(ファイル,画像)|           モデルの変更が必要
      +――――――――--------------+
                         ||
                         V
     新しいやり方 (MVCパターン、オブザーバーパターンの利用):
      +――----+          +―――――-+
      |モデル: | <-(登録)-  |ビューワー |          ⇒  モデルと出力(ビューワー)
      |(初期化,| --(通知)-> |(file,画像)|              を分離 
      |ループ) | <-(get)-   +―――――-+              結合モデルとの対比
      +――----+                  ↓                  
                               出力


2. 川那辺直樹(京大・宙空電波)
  データ解析・可視化ライブラリーGPhys
    元のデータ形式に依存しない操作
      ファイルごとにclassを定義
      各クラスに共通のメソッドを定義

    データが持つ情報(軸、属性 etc) -> Gphys オブジェクト
      演算等が楽にできる




3. 堀之内武(京大・宙空電波)
  今後の展開について/あれば飛び入り/
    今後
      近未来的
        グラフィックス
	  AdvancedDCL (Axis関係)
	  Gtk+ (GPhys etc の利用)
	数学ライブラリー → 解析ツール (GPhysとの関係、 FFT)
	「物理量」ライブラリー (解析ツールとの関係)
	シュミレーション・データ解析統合環境プロトタイプ
	一発インストール -> 神代さん

     絵に描いた餅
	データーベースとの連動
	ネットワーク越しのデータ利用 (dRuby over SOAP)