今年は、国際周期表年(2019)ということで、これを記念して、最新の原子量に基づいて分子量を計算するツールを作成し、公開することにしました。(ウソ、後付けの理由です)
実は、久々に、色んな化合物の分子量や、その元素割合を計算する必要がありました。そこで、今から25年ほど前に、Visual Basicで作ったソフト(MOLWT)を使って計算してみました。何分、Windows3.1 ~ Windows95 の時代に作ったソフトですから、今動かそうとすると、分子量計算と元素割合計算程度ならできるものの、不具合も多く、手直ししたくとも、既に当時のVisual Basicが動く環境もなしという状況です。
とはいえ、Visual Basic は、今のエクセルなどのマクロ言語(VBA)とほとんど一緒なので、入出力関係や、イベントの取り扱いなど、インタフェース関係は大きく異なるものの、分子量を計算させる部分は、多分ほとんどそのまま使えるだろうと考え、エクセルで分子量計算させるマクロを作ってみることにしました。
何せ25年も前に作ったソフト、たかが分子量計算と侮るなかれ、入力された英数記号交じりの文字列を判読し、含まれる元素の数を計算して足し合わせるという操作を、ゼロから作るのは結構大変です。特に、入力式に括弧が含まれたり、原子や分子の係数に小数や分数の入力を許容すると、分子量計算の主要部分だけでも相当に複雑になります。
おまけに、これは半分遊びの要素なのですが、入力式は、元素記号の大文字小文字を区別せずに入力可能としています。化学式の入力の際に、元素記号を大文字・小文字を使い分けてキーボードで入力するのは、意外と面倒くさくないですか? そんな面倒な区別はせずに、”caso4″ とか、”al(po4)3″ などと入力するだけで、計算してくれるのは結構便利だと思いませんか。
でも、そうすると、例えば “co” という入力式が、”CO”(一酸化炭素)と”Co”(コバルト)の2種類の解釈が可能となるように、入力式のアルファベットを1文字ずつ、大文字か小文字かの2通りとして網羅的に探索することになり、その計算は結構大変です。
もっとも、そのおかげで、例えば “america”、”china”、”france”、”spain”、”nippon” などと入力して分子量を計算させてみると、
AmErICa: 577.24
CHINa: 162.91
FRaNCe: 399.12
SPaIn: 377.92, SPaIN: 404.01
NiPPoN: 313.67, NiPPON: 150.65, NIPPoN: 395.89, NIPPON: 232.87
などという結果が得られ、やっぱりアメリカの勝ち?となりました。(それがどうした?)
何せ25年も前に作ったプログラムのため、中を見ても、ほとんどチンプンカンプンで、中のロジックや個々の変数の役割など、かなり複雑で、これ本当にオレが作ったのか?状態で、到底隅々まで理解できてはいません。それでも、個々の機能がプロシージャやファンクションとして固まりになっているおかげで、その中身は良くわからなくても、とりあえずそれらしい答えは出るようになりました。うーん、もしかして25年前の自分は結構優秀だったのではないか、と思わなくもありませんが、いまさらどうしようもありませんね。
多分、正しい答えが出てくると思いますが、非常に複雑な入力式の場合には、おかしな動きをする可能性もありますので、出てくる答えを過信しないでください。
というわけで、とりあえずの完成版を「Molwt (Molecular Weight Calculator)」と名付け、無料公開しました。よろしかったら、試しに使ってみてください。エラー対応などは不完全な状態ですが、PCが固まったりはしないと思います。多少変な動作があってもご容赦ください。
ご意見やご要望があれば、遠慮なくお願いします。可能な限り、対応させていただきます。