堀之内と申します。

ごとけんさんがたまに触れる「電脳組」のひとりです。
よろしくお願いします。

>> ありがとうございます。
>> えーと、全貌はまだまだ見えてこないんですが、
>> 要素はどうやって保持していますか?
>> Rubyのオブジェクトですか?
>> 画像データのように大きな配列を扱うとき、
>> それなりのパフォーマンスが得られますか?

メールを書いている間にごとけんさんに先を越されました。
(予想はしてたけど...)

プロジェクトのそもそもの動機は、地球/惑星流体関係のデータの解析と可視
化にruby を使いたいということです。このため扱う配列のサイズは巨大にな
り得ます。従って、ご存じのように中身は C の配列と同様な形で、メモリ上
にべたならびに保持される必要があります。

まだざっとですが、田中さんの NArray を拝見しました。仕様は我々(少なく
とも私)が考えていたものにかなり近いですので、大変参考になります。

今ここで仕様を詳細に議論するより、プロジェクトの背景についてお話ししま
す。まず、地球流体科学(気象学とか海洋学とか)におけるデータの解析と可
視化をインテラクティブにすばやく行うための環境を気づきたいというのがそ
の目的です。このためには例えば IDL(Interactive Data Language -- 田中さ
んはご存じですね) などがありますが、いくつかの点が不満です。値段が高い
こと、言語としてはかなり古くさくGC等重要な機能がなかったり拡張性に乏し
かったりする、等々です。その点 ruby はベースとしては素晴らしく、これに
数値型多次元配列とグラフィックスとNetCDFやHDFなど重要なファイル形式の
IOを組み込めば IDLを遥かに上回る便利で拡張性のある環境が築けるはずです。
グラフィックスについては電脳組自前のライブラリーを ruby から使えるよう
にし、ファイルについては当面 netCDF を実装するつもりです。

上でデータと呼んでいるものは(詳しい方には釈迦に説法ですが)、例えば全
地球を水平に 5度 x 5度 メッシュに区切って、鉛直には地表付近から 2km 刻
みで取った格子点における風速や気温の毎日の時系列といったものです。こう
いった(例えば)4次元データは、平均や特定領域の切り出しと言った操作な
しには図示すら覚つきません。またもちろん可視化の前に意味のある情報を得
るために様々な操作を必要とします。そしてこのような「物理量」に対する操
作の多くは、その独立変数たるジオメトリーの情報を必要とします。あるいは
手の込んだ操作をしなくても、可視化する際には縦軸横軸を適当に書く必要が
ありますね。そこで、我々としては独立変数に関する情報や名前や単位やその
他データをして自らを語らしむに必要な諸情報を一切込みにしたモノ(object)
を扱えるようにしたいと考えております。このようなモノの本体は ruby 上の
数値型多次元配列かもしれないし、どこかのファイルに収まったものかもしれ
ません(ファイルへのポインターが内部データとして保持されている感じ)。
でも物理的媒体の違いを越えて出来るだけ統一的に、そして直感的にに理解し
やすい形で楽に素早く操作したいというわけです。私自身は IDL や 
Fortran90 で、その真似事をしたことがありますが、言語的制約と自身の力不
足に悩まされました。

配列というのは、連続体を離散化して扱う業界にはかかせないものなので、
ruby-math の話題にふさわしいものと思いますが、少なくとも ShortFloat と 
DoubleFloat の話がすむまで控えた方がいいかもしれません。
私としては必要に応じて Shortfloat と DoubleFloat を明示的に扱うことが
出来ればと嬉しいと思いますが、実は議論をフォローするのを早々にギブアッ
プしてまして、全然ついていってないので、とりあえずこれは独り言です。

堀之内 武                 horinout / kurasc.kyoto-u.ac.jp
京都大学超高層電波研究センター    611-0011 宇治市五ヶ庄
phone:0774-38-3812                     fax:0774-31-8463