私のPC履歴書(その4)

Nov. 29, 2002


一月ほど更新をサボっていたら,このサイトを頻繁にチェックしてくれている人から 更新催促のメールが来た. 有り難いことである. ジャンクのノートPCを買ってしばらく遊んでいたので,書くネタが無いことはないのだが, それはまたの機会に譲るとして,PC履歴書の続きを書くことにする.

しばらくハードウエアの話が続いたので,今度はソフトウエア関連の変遷について書こう.

企業を退職し大学に戻った筆者に,共同研究を進めていた企業の方から 要望があった.PROPATHをMicrosoft社の表計算ソフトExcelから 使えるようにしてもらえないかという.

PROPATHのことを知らない人(ほとんどだと思うが)のためにちょっと宣伝しておこう. PROPATHとは,PROPATHプロジェクトが営々と開発を進めている熱物性計算ライブラリである. コード自体はFortranおよびCで書かれており, 工業上重要な純物質50種類の他,湿り空気,混合物(水―アンモニア,汎用状態式,理想気体混合物)も サポートされている. 利用者は自らが作成したコードとPROPATHが提供するライブラリをリンクすることによって, 熱物性値をあたかも三角関数の値を求めるような簡便さで求めることができる. バージョン1.0が発表されたのは1984年で,最新版は2001年に発表されたバージョン12.1である. 公的研究機関には無償配布されており,2002年6月現在で100以上の国内・海外の大学や研究機関で 利用されている. また,民間企業にも計算力学研究センターを通して 有償販売されている. 筆者は大学院時代からPROPATHプロジェクトに加わり,コード開発の他,マニュアル編纂やユーザへの 窓口業務を担当してきた.

PROPATHは大変便利なツールであるが, その恩恵を享受するにはFortranやCでコードを書くスキルばかりでなく プログラムのコンパイルやリンクに関する基本的な知識が必要である. しかしながら,世の中そういうスキルや知識を持った人ばかりではなく,また,そういう スキルを持った人でも民間企業では一からコードを書く時間的猶予はないだろう. このあたりがPROPATHが今一つ民間企業に普及しない一つの原因であろう.

筆者に相談を持ちかけた人はExcelのエキスパートで,VBAやマクロを駆使し,ボタンやダイアログが飛び出す 物凄いワークシートを作っていた. 実は,大学院時代にも同じ相談を受けたが,当時の筆者のスキルではその人の期待に応えることができず, PROPATHで蒸気表のようなデータを作ってお茶を濁していた. その人はそのデータをExcelに読み込んで適宜補間し物性値を求めていたようだ.

もし,ExcelからPROPATHが使えるようになれば,導入してくれる民間企業が増えるのではないか. そう思った筆者はExcelからPROPATH関数を呼び出す方法について調査を始めた.

Excelのマクロ言語VBAはインタープリターであるから,PROPATHが提供するライブラリ(スタティックライブラリ)と バイナリレベルでの直リンクはできない. しかし,VBAの文法は基本的にVisual Basicそのものであるから,ダイナミックリンクライブラリ(DLL)の 静的呼び出しは可能である(その気になればLoadLibraryを使った動的呼び出しも可能かも). したがって,PROPATHライブラリからDLLを作成し,ExcelのVBAでDLL内の関数を呼ぶための宣言を書けば 呼び出せるはずである.

当時筆者はPC上のFortranコンパイラとしてMicrosoftのFortran Power Station 4.0(以下FPS)を使っていた. このコンパイラが32ビットDLLの作成をサポートしていることは以前から知っていたが,実際に試したことはなかった. 試行錯誤の後,何とかFPSでDLLを作成することはできた. このあたりの手順はPROPATH DLLの作成および利用にまとめてある. キーポイントは,DLLからエクスポートする関数をWin32標準の呼び出し規約stdcallで宣言するということと, エクスポートされる関数名はコード内部で使われているものと異なるということだろう. エクスポートされる関数名が変身してしまうのは,Microsoft系のコンパイラの特徴らしい. どのような関数名になるかは一応規則があるようだが(FPSのマニュアルにも記載されている),かなり複雑なので できたDLLを直接覗いて確認するのがよかろう. 拙作のDLL Viewが役に立つかもしれない. 実際,DLL ViewはPROPATH DLLを作るときに作ったものだ.

さて,次はこのDLLをExcelから呼び出す方法だが,これは意外と簡単だった. Visual Basicの参考書に載っていたAPIの呼び出し方法を真似ればよい. とりあえず水のDLLを作り,Windowsのシステムディレクトリに置いて,Excelのワークシート に "=PST(100)" と入力しEnterを押すと

"1.013253"

と表示された. コーディング作業が一切不要な,ExcelからのPROPATH呼び出しに成功した. ここまで至るまでに相当の時間と労力を要したので,人知れず感激してしまった.

一度うまくいったらしめたもので,あとは全純物質と湿り空気のDLLを作成し, 1999年に発表したバージョン11.1からE-PROPATH(Excel PROPATH)として正式にPROPATHに追加した. その後,エクスポート関数名を通常のPROPATHと同一にしたり,Visual C/C++用のインポートライブラリを 追加したりして現在に至っている. 思ったほどではないが,企業でのユーザも増加しているようだ.

(以下続く)


お問い合わせはメールにて: akasaka@klc.ac.jp

戻る
SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送