今回、DEXCS2012 for OpenFOAM(R) 特別版を作成してみて、次期リリース版、DEXCS2013の目標のようなものが見えてきた、、、ズバリ
目標は国際化対応
こう考えるに至った理由というか、背景を以下に記しておきます。
理由その1:8th OpenFOAM Workshop
という、ある程度OpenFOAMに親しんだユーザーなら誰でもご存知、年に1回開催される国際会議に初めて参加した。つい1週間前のことでした。
たまたま、開催場所が韓国のチェジュ島と日本に近いこと、日本のオープンCAE学会が主催でツアー(といっても現地での日本人飲み会)を企画してくれたこともあって、ほとんど観光旅行のつもりで参加しただけなんですが・・・
バンケットでは大トリの1等賞品に当選するという幸運で、想定外の受賞スピーチ。翌日に参加した「アジア環太平洋地域フォーラム」で、これはある程度想定していたとはいえ、自己紹介までやることになって、単語の羅列だけでこれらを何とか切り抜けることになった。
恥ずかしいスピーチではあったが、かといって、この歳で今更、英会話勉強して、もうちょっと気の利いたことが言えるようになりたい・・・という気持ちには全くならなかったんですが、頂いたものがあったらお返しするのが日本人。
理由その2:CFD Online
という、OpenFOAMでわからないことがあったら、ここに訊け!という代表格のグローバル掲示板の中で、DEXCSやTreeFoamについて取り上げられた記事も上がり、今年の春くらいから、一部の人の間では話題になっていた。とはいえ、
I’m guessing TreeFoam is a custom solver, and DEXCS is the software suite. More info here:https://ocse2.com/?p=816. I don’t understand Japanese, so I can’t say any more about it.
などと、少々正しく認識されていない面もあって、これを正すコメントを投稿できればよいのだが、理由その1:に述べたように、自分の英語力では、到底おぼつかないので放置状態であった。
とまぁ、色々あったんですが、お返しには、自分が作ったものを、そのまま見てもらうのが一番、つまり国際化対応したものを作ればいいだろ・・・ってことです。単語の翻訳くらいは自動変換もそんなに難しくないし、他の人に助けてもらうこともできるので。幸いなことに・・・
理由その3:DEXCS for OpenFOAM(R) の目指すGUI
がほぼ固まり、ツールとして必要な開発部分が無くなった(詳しくは後述)。後は、DEXCSの中で使わせて頂いているそれぞれのツールのブラッシュアップに期待するしかない。年に1回、最新版に更新。あるいは、それらに替わるツールが出現したら、組み換えるという仕事くらいしか自分の役割はなさそうだ、と思えるようになったというのが、この特別版をリリースした後の実感です。
なので、次の自分の仕事は、国際化対応ということになった次第。とはいえ、無謀な挑戦する気はなくて、こう宣言するからには、ある程度の見通しが立ったからこそです。
国際化対応への手懸り発見
いつものようにグーグルで調べていたら、色々参考情報が出てきた。たとえば ⇒ 参考1 参考2 参考3
要するに、
国際化対象にしたい文字列を_(…)で囲んでおいて、指定した文字列に対する翻訳文を別ファイルで用意しておけば、gettextという仕組みを使える
というものであるらしい。なんとなく理解はできたのだが、作業量がどのくらいになるのか、さっぱり見当がつかない。
手懸りその1:
DEXCSランチャーやTreeFoamでは、操作用のGUIパネルをwxGladeというツールを使って設計し、ボタンやテキストボックスなどのGUIボタンに特定の機能(名前や関数名)を割り付けておいて、最終的に、右図中①の、Generate codeのボタンを押せば、pythonの実行プログラムを生成してくれるという仕組みを使っている。割りつけた関数名の中味については、wxGlade自体何もしてくれないが、そこだけを自分でプログラミングすれば、全体としてちゃんと動いてくれるようにしてくれるというものです。
ここで、これまで何気に意識していなかった、②の、Enable gettext support で、チェックマークを付けてコード生成したところ、、、なんと、ボタンなどで表示されるテキスト部分が、すべて、_(…)で囲われて生成してくれることが判ったという次第。
つまり、DEXCSランチャーもTreeFoamもベースは国際化対応のプラットフォームで作成出来ていた。あとは、自分で書き足した部分のテキスト部分を_(…)で囲ってやればよいということでした。
これなら、なんとかなりそう・・・・
手懸りその2:
昨年のオープンCAEシンポジウムで、「Salome-Mecaの日本語化」の発表があり、そのなかで、 Web上での訳語登録システムの紹介がありました。この資料の中では「開発中」とありましたが、実はつい最近、これによく似たシステムで、実際に訳文を入力するという作業を経験したばかりです。
少し前に、DEXCSを外付けのUSBドライブにインストールする際に、ブートローダーが壊れてしまう問題に遭遇、その時に、Boot-Repairなるツールがあって、結果的にこれで解決することは出来なかったのですが、解決できない場合に開発者にメールを送れば相談に乗ってくれる…とあって、開発者とは、少しやりとりしたという経験があります。
その際に、向こうもボランティアでやっているので、どうやって貢献してくれるんだ?となって、寄付でも良いが、国際化の為の翻訳でも良い、といって紹介されたページがあり、実際にここでいくつか訳文を書かせてもらうことになった。
ということで、この DEXCS / TreeFoam 版を作れば良さそうだ・・・ということです。
最後に、本題とはそれるかもしれませんが、、、
DEXCS for OpenFOAM(R)の目指すGUI
DEXCS2012 for OpenFOAM(R)のリリースノートにも書きましたが、
DEXCS for OpenFOAM(R)は、OpenFOAMと、これをより簡単・高度に活用できるようにする為の様々なツールをすべてインストール済のオール・イン・ワンパッケージで、誰でも簡単・即使えるようにしたマシンイメージ(isoファイル)です。
ということで、主体はOpenFOAMであり、それを支える様々なオープンツールです。それらツール間連携を、コマンドラインでなくGUIで出来るようにさせることが主眼であり、連携に際して、どうしても足りない部分は自作する、という方針で作成してきました。
当初は初心者に使ってもらうことを最優先
として、DEXCSランチャーやWinkチュートリアルの充実につとめてきました。しかし、これで初心者の壁を乗り越えられたとして、その次に来るのは、自分がやりたい計算をどうやったら出来るんだ?という問題です。
ランチャーを改造すれば出来るようになるうんだろうけど、それは初心者に出来ることではありません。その前にOpenFOAMのファイル構造やプログラムに対する総括的な知識が必要になります。その為には、マニュアルやソースコードを見たり、多分、チュートリアルを実際に動かしてみて・・・というのが一番の近道でしょう。
OpenFOAMの勉強をすぐに出来る環境を提供
できていた、という意味でDEXCSを褒めてもらう場合も少なからずありました。しかし、これを自得するには、Linuxのコマンドライン操作の壁があります。OpenFOAMを使って、自分なりのプログラミングをやりたいと思う人もいれば、標準ソルバー、もしくは誰かが作ってくれたソルバーを使えれば良いと考える人も多くいます。前者の人にとって、この壁は嫌でも乗り越えなくてはならない壁であるのに対して、後者の人にはそうではありません。この壁を乗り越えられないが為に辞めてしまったという人が多くいます。特に企業内ユーザーには、コマンドライン入力が必要と聞いただけで敬遠されてしまいます。
ところで、OpenFOAMのユーザーって?
現時点で目に見えるユーザーの数では前者が多く、ワークショップでの発表を見てもそういう人達によるものが多いという実態ですが、潜在ユーザーの数を考えたらどうでしょう? 後者の数が圧倒的に多いことは間違いないでしょう。
管理人は在職時代から、そういう人達に向けてのオープンCAE活用を推進してきました。ここで、ひとくちに「そういう人達」といって、実はこの中味も色々で、様々な観点で層別できるのですが、管理人は大きく、次のように分類しています。
- CAEを単なる設計ツールとして利用したい設計者
- CAEを設計の為の思考・検証ツールとして利用したい設計者
- 解析専任者(請負解析専従)
- 解析専任者(設計者CAE支援)
1.と2.の違いは、必ずしも明確ではありません。次のように言い換えても良いかもしれません。業務プロセスの中でCAEをやることが必須の場合、これを自分でやろうとする人(=2.)か、よほど簡単なツールでない限り、解析専任者や外注先にやってもらおうとする人(=1.)かの違い。
ここまでの前置きが長くなってしまいましたが、DEXCSが想定するユーザーは2.であり、また1.のユーザーが使ってくれるような設計ツールを作れるようになりたい人(=4.)であるという点を改めて強調したいということです。(話はそれますが、当サイトのキャッチコピーになっているSmart Engineer というのも、これらの人を指しています)
商用ソフトとはターゲットが違う
正直いって、3.の請負解析に専従する人のニーズに応えられるものを目指すものではありません。これは商用ソフトを使ったほうが良い。
では、逆に商用ソフトは、DEXCSの想定するユーザーのニーズに応えられているのでしょうか? そうでもない。請負の解析専任者CAEと、設計者CAEの決定的な違いは、ユーザーがCAEツールと接している時間の長さと間隔です。
商用CAEソフトのほとんどは、様々なユーザーの用途に応えられるべく、メニューが複雑に多階層化されており、初期の導入教育を受けない限り、普通の人がすぐに使えるという代物ではありません。
解析専任者、設計者、立場の違い
解析専任者は毎日CAEツールに接しているので、使い込んでいくうちに、そのあたりのツールの使い方にも慣れ、ますます作業効率が上がっていきます。なので、商用ソフトの固定費がかかったとしても、時間短縮効果で十分回収できるわけです。
一方、設計者はどうでしょう?設計や開発という業務プロセスの中で、CAEを使う期間というのはほんの一部分です。図面を描いたり、実験したり、レポート書いたりする期間の方が圧倒的に多くあります。もちろんCAEをやる際には、まとまった期間集中してやって、やるほどにツールに習熟することはありますが、2ヶ月3ヶ月と触らないでいると、すっかり使い方を忘れてしまいます。管理人の歳になると、月でなく週の単位で同じ事になってしまいます。
せめて商用CAEソフトが、一般のパソコンに搭載されている普通のソフト並に、直感的に操作できるようになっていればそうはならないのですが、そういうソフトにはとんとお目にかかったことがありません。
CAEユーザーのニーズは千差万別
であって、商用ソフトはこれらニーズに汎用性で応えるべく複雑に階層化したメニュー体系にならざるを得なかった。DEXCSではここを、そうはしないで、ニーズに応じてカスタマイズできるようにしてしまおう!と考えました。そしてカスタマイズサンプルとして、DEXCSランチャーを公開しました。そして現在は、CAEコンサルタント業の中で、お客様の要望に沿ったカスタマイズ版も製作してきており、それが商用ソフトを導入することに比べれば、相当な格安で出来ることも実証してきたつもりです。
問題は、こういうカスタマイズや、2.の設計者が自分の問題を計算出来るようになるまでに、どれくらいの勉強が必要になるか? という点です。この問いに対しても、個人差があるので標準的な数字というものはありません。ただ、OpenFOAMの標準的な使い方-コマンドライン入力-だけでやっていたのでは、これを専業にするという意欲でもない限り、非常に効率の悪いことになってしまいます。
これにも作業時間の長さと間隔の問題がつきまといます。毎日のように常套的に使っていない限り、コマンドや、またその入力の順番を、忘れてしまうからです。
管理人もコマンドライン入力が大嫌い
必ずしもOpenFOAM専業というのでないし、そもそもキーボード操作が不得手で、コマンドライン入力を極力少なくしたいという意識で仕事をしている人間です。自身の勉強を通じて、こういうツールがあったら助かる・・・という想いで作ったのが、DEXCS2011からリリースを始めたDEXCS十徳ナイフです。DEXCS2012では、これをTreeFoamとドッキングさせました。
TreeFoamとは
TreeFoamはDEXCSプロジェクトのツールではなく、あくまで個人有志が作成したもの(唯一の公開資料はこちら)をDEXCSで使わせてもらっているものです。今回、DEXCS2012特別版製作に際しては、TreeFoamも最新版を使わせていただきました。TreeFoamもこの半年で大きく進化し、
- 標準チュートリアルをベースとした、ソルバーやメッシュの簡単入れ替え
- MultiRegion対応のケースファイル設定機能
といった機能アップがあり、一応今回も、十徳ナイフとドッキングした形でリリースしましたが、十徳ナイフのメニューのいくつかは、すでにTreeFoamで出来るようになってきており、この調子でいけば、間もなくTreeFoamだけで十分なツールになってくれそうです。これが冒頭の理由その3です。
なお、冒頭の理由その2の、CFD Online の記事で、外人さんが、
TreeFoam is a custom solver,
と書いていたのですが、そうではなく、OpenFoamのケースファイルマネージャといった呼び方が適切でないかと思います。
それはさておき、
改めてDEXCSが目指すGUIコンセプト
ですが、このTreeFoamが体現してくれています。
TreeFoamはOpenFOAMの初心者には少しばかりハードルが高いかもしれませんが、そこをクリアーさえすれば、かなり痒いところに手が届く便利なツールです。
CAEユーザーにとって、本来の理想的なGUIは、ソルバーの中味がわからなくとも、計算したい実際現象と対比した形で、必要なパラメタだけを簡単に入力できるようになっていて欲しいものですが、それをやろうとすると、千差万別のユーザーニーズに応えるべく、非常に複雑なメニューになってしまうのは前述の通りです。
OpenFOAMに限らず、
オープンCAEは、自助努力・自己責任
で使うことが原則です。ライセンス費用を払うかわりに自助努力で勉強する。自己責任を全うする為には、プログラムの中味について、ある程度の理解も前提としたいところです(但し、1.のユーザーはその限りでない)。
逆に、OpenFOAMのファイル構造やパラメタファイルの仕組みなどをある程度理解できるようになれば、やりたい事に応じて必要なパラメタファイルを直接編集してやればいいんだということが理解できるようになります。問題はそれを実施するのに必要な作業量です。自助努力時間を時間コスト換算したら、ライセンス費用より高くなることは珍しくありません。それだけ時間をかけたからには、作業量は商用ソフト並に少なく済む。やりたい事が変わった時に、必要なケースファイルに簡単にたどりつけて、簡単に修正できるようになっていることです。
DEXCSは、そういうGUIを目指しています。