プロが教える店舗&オフィスのセキュリティ対策術

将来は化学者になりたいと思っている者です。パソコンにも非常に興味があります。

化学反応を予想するソフトを(企業ではなく個人、少人数で)作ることは出来るでしょうか。またそれにはどれぐらいのプログラミング技術が必要でしょうか。(仮に化学の知識は問題ないとします。)
また、C言語(?)などそのソフトを作るプログラミングに必要な少数の言語に精通する必要があるのか、また多数の言語を習得する必要があるのでしょうか。

化学とは物理のような大まかなものではなく、原子単位の反応のことです。たとえば、飛行機のメイカーが新たしい飛行機をつくるときに全部実験でまかなうと膨大に費用が掛かるので、コンピューターのシミュレーション実験を行うそうですが、これはおそらく翼の浮力や機体に掛かる重力、遠心力を計算するなど、物理的なものだと思います。

いままで、"化学"反応を予想するソフトと言うのは聞いたことがありません。プログラミングの知識はhtmlがわずかに出来るだけで無知に等しいですが、現在ではびっくりするぐらい非常に高度なソフトが多数出来ているので、可能ではないかと思いました。

具体的には既知の化学反応式の基本的なパターンを全てプログラミングし、それを元にコンピューターに予想させると言うものです。コンピューターに考えさせるソフトとして、将棋のソフトがありますが、あれは基本的な将棋の定石を大量にインプットさせ、α-β法とかいうプログラミング方法を駆使し、更に関数もいろいろと導入しているそうです。後10年後には超1流プロも勝てなくなる可能性があるらしいです。

将棋が可能なら、化学反応の予想もある程度なら可能ではないでしょうか。

"化学"反応を予想するソフトの現実性、もしあれば前例、そのソフトをつくるために、収得すべきスキルなどをしえてください。

御願いします。

A 回答 (6件)

 私は実際に理論計算(化学反応等をシュミレーションする)を専門に行なっています。

実際に化学反応を予想するソフトとしては、GaussianやGamesなどが有名です。前者はかなり高額ですので、一般ユーザーが使うならばフリーソフトである後者だと思われます。
 このようなソフトの開発はプログラミングの知識よりも圧倒的に量子力学や量子化学の知識が必要となります。何故ならば、化学反応とは電子の振る舞いがそのほとんどを決定するため、電子の振る舞いを表記するSchr?dinger方程式を解かなければならないからです。このSchr?dinger方程式は水素原子以外の場合では多体問題により完全には解く事ができません。よってこれを一部を近似して解きます。どのような近似をするのかによって様々な計算レベルが開発されてきていますが、どのように近似し、これらの近似を行なったSchr?dinger方程式を如何に解くかさえクリアーできれば個人でも開発は可能です。
 習得しなければいけないスキルとしては、最低限のプログラミング・専門課程の大学院相当以上の量子力学及び量子化学の知識・行列計算に関する十分な知識が上げられます。
    • good
    • 0

他の人とまたちょっと違った意見を言ってみたいと思います。

まあ、「可能性」の話ですしね(可能性の話はいくらでも出来ます)。

基本的にコンピュータは「決定論的世界」の産物です。AすればBになる、って言うアレですよね。ですから、「化学の世界」も理論を作る際には「決定論」なので、当然「プログラムとして作りたい」のも決定論の世界に準じるので「化学の知識が必要だ」ってのはその通りです。
物理にしてもその通りで、それも「決定論的世界観」に左右されています。一般的に科学と言う分野はそうなんですよ。
ただし、他の考え方も可能で、恐らくlionsfanさんがやりたいのはコッチなんじゃないかな、って事です。それは「統計学的なアプローチ」と言う事です。
例えばデータベースに「今まで人類が知り得てる化学反応のパターン(事象)」を突っ込んでおいて、未知の化学反応を予測する、と言う……。これは「統計学的な」文脈に於いてはひょっとして可能かもしれません。「確率××%で△△っぽい物質が作られる」みたいな。
ただし、気をつけて欲しいのは、それは「科学とはまたちょっと毛色の変わった」統計学の文脈であって、「化学の文脈ではない」と言う事です。また、「それをやる事に意味があるのか?」「意味がある結果が得られるのか?」と言うのとはまた別の話ですよね。ただし、発想としては面白いとは思います。まあ、「化学の連中」からは総スカンを喰らう可能性も無きにしもあらず、ですが(笑)。
実はこの手の統計学(データベース)+コンピュータによる予測の組み合わせ、と言うのは統計学では今ある種熱い分野で、多分適切な手法は「ベイズ統計学絡み」なんだとは思います。
と言うワケで「考え方」自体は別に否定されるような事でもないので、「ベイズ統計」で調べてみればひょっとしたら面白いかもしれません。
    • good
    • 0

おそらく計算物理学が質問者さんの想像しておられるものに近いのではないかなと思います。

残念ながら、私は物理の人間ですのでよく知りませんが、化学の世界では、計算化学とか言うのかもしれません。

====

化学反応を予想するというのは、その方向に化学反応が進むかどうかを計算機で判定します。具体的には論文や発表を見たかぎり以下のようなアプローチがとられるようです。

(1)反応パスの各点において総エネルギーを求めて、そのエネルギー障壁が室温で乗り越えられそうかどうか調べる
(2)実際に分子動力学で反応させて見て、どういう反応が起こるか見てみる
(3)その他

これらの論文で行われていることは非常に複雑ですが、極論すれば、ある特定の「電子系の総エネルギーを計算」することに行き着きます。

====

私の知る限り、「電子系の総エネルギーを計算」するアプローチには、大きく分けて「第一原理計算派」と「モデル計算派」がいます。前者は電子系の支配方程式であるSchrodinger方程式をまじめに解きます。後者は問題に合わせて有効的な支配方程式を導出してそれを解きます。

両者にはそれぞれに利点も欠点もあり、どちらが優れているというわけではないと思いますが、質問者さんが想定しておられるのは、おそらく前者のようなものでしょう。

====

「第一原理計算派」がよく使用する代表的な手法をあげておきます。

(1)Hartree-Fock法
(2)密度汎関数法(Density functional theory)
(3)摂動法(MP2とか)
(4)Coupled cluster法

====

私は使わないのでよく知りませんが、「第一原理計算派」がよく使用する計算パッケージとか。有料のもありますが、無料のもあります。

(1) Gaussian
(2) GAMESS
(3) VASP

====

自分でこれらのプログラムを作る場合

(1)Fortran言語かc言語どちらかの知識
(未だにこの分野ではFortranが使われています。
cも増えてきた感じがします。)
(2)手法に対する知識
(3)量子力学に対する知識
(化学の方は量子化学というのでしょうか?)

1は特に重要ではなく、2と3に対する知識が特に重要だと思います。世間一般で言われているような小難しいプログラミング方法論(オブジェクト指向とか、関数型プログラミング、UML、アスペクト思考、アジャイル)とかはあまり役に立ちません、原子的なプログラムが書ければいいと思います。

もし、本気でこの分野に入りたいのであれば、計算物理系の本を読むのが一番だと思います。読んでいて、物理の知識が足りなければ、量子力学の本も読むといいのではないでしょうか?

(1)量子力学I 小出昭一郎 裳華房
http://www.amazon.co.jp/%E9%87%8F%E5%AD%90%E5%8A …

(2)計算機マテリアルデザイン入門 
http://www.amazon.co.jp/gp/product/4872591526
(結構な数の手法の概要を網羅していて、著者らが作った計算パッケージなどの解説もある。入門にはいいかも)

(3)原子・分子の密度汎関数法
http://www.amazon.co.jp/%E5%8E%9F%E5%AD%90%E3%83 …
(かなり高度)

#こんだけ書いて、質問読み間違えてたらどうしよう・・
    • good
    • 1

化学は専門ではないのですが、聞きかじり程度ということで参考になればと思います。



多くの化学者は Gaussian
(http://www.hulinks.co.jp/software/gaussian/)
を使っているようです。なにやら難しい方程式を解いているらしいです。似たような事をするプログラムを他にいくつかあるようです。

毛色の違うものとしては、MolWorks
(http://www.molworks.com/ja/)
というのがありますが、これは分子式から物性を推測(正確には推算というらしい)するようです。

日本では特に勘違い(?)されている人が多いのですが、プログラムするというのは特殊なものではなく、あくまで手段なのです。欧米、特にヨーロッパでは計算科学、コンピュータ自体の科学、は他の自然科学より低く見られていて、物理屋さん、化学屋さんが自分の研究のために自分でプログラムを書きます。(日本でこういう人は少ないです、残念ながら)

ということで、本当に必要なのは化学の知識です。ということで、どっちが先かというと化学(と数学)の勉強、で次がプログラミングなのではないでしょうか。
    • good
    • 0

立体障害を予想するソフトはありました。


ただ、構造が簡単なものしかできない(立体構造を予測できないので手入力だったはず)ので、その後どうなったやらわかりません。

どこかの薬学の先生が報告していたはずです。

このソフトでしたらば、3Dワイヤーモデルを指定した座標に描くだけ(それ以上の内容をしていたかもしれませんが私の記憶では)ですから、極端な言い方をすれば、市販分子模型から、あるいは、化学便覧の後ろの方に書いてある原子間距離と角度から、寸法をワイヤーモデルの指定に書き換えて、描くだけなので、画像表示プログラムが描ける程度の能力があれば誰でもできます。
これでは、電子雲の状態が不明ですから、既にあるような内容を使って電子雲の状態を推定し、電子雲同士の反発があるかどうかを人間が見て判断し、立体障害の有無を調べる方法です。
「市販分子模型」を手で作るのが面倒だから、パソコンに刺せているというような、簡単なソフトです。

KISS(着せ替えセットシステム)というソフトで、同じようなことを試みた人もいたようです。

化学反応のデザインは、これは、実験をこなした人でないとできないです。素反応から推定することは可能です。しかし、その素反応が起こる条件かどうかはわからない。やってみてうまく行ったらば、何とかなるだろう、と見当をつけることになります。極端な話が、入手可能な報告の素反応を詰めこんで行き、条件が合いそうな反応を拾って行く、という内容ですが、これは、一-2年有機合成をやっていれば、誰でもかけます。
ただし、分量が巨大過ぎるので、パソコンではその判断が困難です。
素反応が、大きく分けて、30系統、200位ですから、パソコンでやるよりも人間がやったほうが早いです。しかも、条件合わせの判断で文献を拾わなければならず、著作権法の制限で、実行は不可能でし様。
    • good
    • 0

プログラムと言うのはプログラマーの頭の中身以上の事は出来ません。


もしあなたが"化学"反応を予想する事が出来るのであれば、その考え方をプログラミングすれば良いのです。
もしあなたが"化学"反応を予想する事が出来ないのであればプログラミングする事は出来ません。

シュミレーターと言うのは何度も数字を入力して電卓を叩いて計算するのが面倒だから、その一連の計算をパソコンにやらせてるだけです。
小学生向けの算数ドリルが一冊合ったとします。簡単ですが面倒じゃないですか?
それを、パソコンに問題だけを入力して答えを計算させてるんですね。
これがプログラミングです。

例えば、連立方程式が面倒だからプログラミングしよう!という人ならば連立方程式プログラムを作る事が出来るでしょう。
連立方程式が分からないからプログラミングしよう!という人はプログラミングが終わる頃には連立方程式が解けるようになっているはずです。

ちなみに、将棋などのソフトは予測しているわけではなく、全ての将棋の駒を動かしてみて、最適と思われる手順で駒を動かしているんです。
(極端な話ですと、開始直後の一手目で既に数万通りの投了の形をシュミレートしてるはずです。)
定石をインプットしているのはその手が有効であると言う説が有力だから、その形になるような手順で動かした方が良いという設計なのではないかと思います。

だから、とりあえず必要なスキルはあなた自身が"化学"反応を予想出来るようにならなければいけません。
あとはその計算式を分解してプログラムに組み込むだけです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!