2 はじめに

2.1 はじめに

 筆者が製作したオブジェクト指向スクリプト言語Rubyのための高速フーリエ変換ライブラリ, 「NumRu/fft」を紹介する.

 本論文は三本の柱からなっている.ひとつは,フーリエ変換とその離散化,高速フーリエ変換のアルゴリズムについての議論である.まずはじめに,そもそもフーリエ変換とはいかなるものかを振りかえるために,フーリエ級数から議論する.フーリエ級数からその拡張としてフーリエ積分変換を導出し,さらにそれを数値計算になじむように離散化をするための導出を行う.そして,高速フーリエ変換のアルゴリズムについて議論する.ふたつめは,オブジェクト指向スクリプト言語Rubyについての解説である.みっつめは,Rubyにおける多次元配列ライブラリNArrayのために既存の高速フーリエ変換ライブラリを利用する事を可能にする,拙作ラッパライブラリ「NumRu/fft」について紹介する.

 高速フーリエ変換の計算方法は, Cooley and Tukey(1965)[1]が最も有名である.当時,IBM Yorktown Heights Research Center のガーウィン(R.L. Garwin)は,自身の研究のためにフーリエ変換の高速な計算方法を探索しており,フーリエ変換についての論文を書きつつあったチューキーに対して何か良い手法が無いかと尋ねた.このときにチューキーが説明したものが,クーリー・チューキーの計算法と後々呼ばれる事となる方法の元となる考えかたであった.ガーウィンはIBM研究所にチューキーが説明した方法をプログラム化することを依頼した.この時に要請を受け入れたのが,クーリーであった.クーリー自身はこのプログラミングの仕事を一時のものと考えていたが,次第にこのプログラムに対する賞賛の声や,プログラムのコピーの要求が増えてゆき,1965年,クーリーとチューキーはこの計算法についての論文を発表するに至る.

 dennou-rubyプロジェクトについて,次節で詳しく解説する.次節および第4章において,Rubyがdennou-rubyプロジェクトの目的に最適なプログラミング言語であることをRubyの特徴を列記しつつ示す.その特徴であるところのオブジェクト指向の考え方,および拡張ライブラリの特徴について言及する.

 最後に,Rubyにおける多次元配列クラスライブラリNArrayのために既存の高速フーリエ変換ライブラリを利用する事を可能にするラッパライブラリ「NumRu/fft」について解説する.Rubyは,後述するように様々な利点がある一方,インタプリタ言語であるために実行速度についてはコンパイラ言語と比べると劣っている.また,Rubyと言う言語自体が歴史が浅く,数値計算のためのライブラリがまだまだ不足している.これらの欠点を補うのが,「NumRu/fft」ライブラリである.

 なお,本論文はWWWからも閲覧可能である.NumRu/fftライブラリのダウンロード先共々,参照されたい.

2.2 dennou-rubyプロジェクト

 dennou-rubyプロジェクト[11]は,地球惑星流体科学におけるデータ解析,可視化,および数値シミュレーションを行うための一連の汎用ソフトウェアの開発を目標としている.プロジェクトが提供するものはオールインワンで実行できるプログラムでは無く,オブジェクト指向スクリプト言語Rubyにおいてプログラミングする際に用いるための,ライブラリの集合体である.

 科学的な研究の手法は非常に多岐にわたっているので,それらひとつひとつのニーズをマウスで操作するようなグラフィカル・ユーザ・インタフェースの環境において満足させることは困難である.研究者は,大なり小なりのプログラミングを行う必要に迫られる.プログラムを記述することによって,研究者が意図する作業を意図した通りに行う事ができる.さらに必要ならば,同じ作業を容易に任意回数くり返すことも可能にする.もちろんこれらの作業は多くの研究者,および学生が長い間行ってきた作業である.しかしながら,その効率は使用するプログラミング言語に強く依存する.プログラミング言語によって使用する事のできるライブラリの種類が違ってくるためである.

 オブジェクト指向スクリプト言語Rubyは,科学的研究を行う上での多くの観点から最良の環境を提供するような特徴を持っている.詳しくは第4章に述べる.さらに,Rubyは研究作業を容易にするだけでなく,従来の言語よりも研究者同士の間で,データ,プログラム,ソフトウェアなどの研究成果を共有することを容易にする.これにより,Rubyを実行する環境を整えさえすれば,迅速に研究作業に取りかかる事が可能となる.

 そもそもdennou-rubyプロジェクトは,dennou-davisプロジェクトのサブプロジェクトである.地球流体電脳倶楽部によると,dennou-davisプロジェクトとは,「クリック一発で絵が描ける数値データ」を合い言葉に,地球および惑星にまつわる流体現象を念頭においた多次元数値データの構造化と可視化を研究し,研究教育資源の開発を目指す有志の研究グループである.しかし,実際に「クリック一発」でデータを処理するには地球流体科学で扱われるデータはあまりに大規模であり,また多様でもある.それらの膨大かつ多様なデータを処理するための速度が,研究を行うに際してボトルネックとなっているのが現状である.これを改善する為には,業界標準となるデータ構造とそれに対応したデータ処理の手法が必要となってくる.dennou-davisプロジェクトは,機種,OSに依存しない,ネットワーク透過性に優れている,自己記述的なデータ構造などの観点から標準データ構造としてNetCDF[12]を採用し,また,そのデータを処理するための方法として数値処理に特化したFORTRAN90,そして自己記述データと親和性の高いオブジェクト指向プログラミングが可能なRubyの二つのアプローチを採択している.dennou-rubyプロジェクトの製品として,RubyでNetCDFのデータを扱うインタフェースライブラリ「RubyNetCDF[16],地球流体電脳倶楽部の製品である,FORTRANによる可視化ライブラリ「DCL[15]をRubyでも扱えるようにするラッパライブラリ「RubyDCL[17],「AdvancedDCL[18]などがある.