
拓海先生、最近若手から「APFEL++って速くて使いやすいライブラリだ」と聞いたのですが、うちのような現場で使う意味ありますかね。正直、Fortranとか聞いただけで顔が引きつります。

素晴らしい着眼点ですね!APFEL++は元のAPFELをC++で書き直したもので、特に速度と拡張性が強化されていますよ。実務で重要なのは性能と保守性ですから、大いに意味がありますよ。

要は古いコードを直しただけという理解でいいのですか。うちが投資する価値があるか、投資対効果(ROI)が気になります。

大丈夫、要点を3つにまとめますよ。1) C++化でモジュール化とメモリ管理が改善し保守コストが下がる。2) 計算のタビュレーション(tabulation)と二次元補間で大量予測が高速化される。3) 拡張しやすい設計で将来機能追加や並列化が進めやすい、です。

なるほど。ただ実務では導入が面倒で現場が拒むことが多いです。環境依存や学習コストはどうでしょうか。

いい点を突いていますね。導入は確かに一度の工数が必要です。そこで実務的に進めるコツは小さく始めること、既存のFortranバイナリを呼ぶラッパーを暫定利用すること、そして担当者にC++11環境を1台用意することです。これで初期負担を抑えられますよ。

「タビュレーション」や「二次元補間」ってのがよくわかりません。これって要するに計算結果を先に作っておいて後で速く参照する仕組みということ?

その通りです!素晴らしい着眼点ですね。具体的には、変数xとスケールQの組でテーブルを作り、必要なときに周囲の値から補間して速く値を得る方法です。ビジネスで言えば、商品カタログを事前に作っておき、画面表示を即座にするのと同じ効果です。

現場の技術者に説明するときに使える短い要点はありますか。要点を3つくらいでください。

もちろんです。1) 保守しやすいC++設計で将来コストを下げること、2) 事前タビュレーションで大量予測を高速化しフィット(最適化)時間を削減すること、3) モジュール構造で既存資産と段階的に統合できること、です。大丈夫、一緒にやれば必ずできますよ。

分かりました。要するに、古いFortran版のAPFELをC++で再実装して、速くて保守しやすくしたツールで、段階的に導入すればROIも見込めるということですね。私の言葉にするとこうなります。


