ケモインフォマティクスやマテリアルズインフォマティクスやプロセスインフォマティックスの研究をするなかで、手法の開発するときには、何らかのプログラミング言語でプログラムを作成することが必要になります。ちなみに金子研 (データ化学工学研究室) では主に Python を用いています。
ただ、目的や方針が決まったり、何かやりたいことがあったりするときに、いきなりコードを書き始めるわけではありません。プログラムを作成する大きな流れとしては以下になります。
- 言語化する
- アルゴリズム化する
- コードを書く
順に説明します。
1. 言語化する
言葉で表すことができることは、すべてコードにできる、と考えています。そのため、まずはやりたいことをしっかり言語化します。頭のなかにモヤモヤとあることを、具体的に言葉で表すわけです。例えば、予測精度を考えるとき、それは r2 なのか、MAE なのか、実測値 vs. 推定値プロットにおける目的変数 y の値がいくつ以上の誤差なのか、具体的に言葉で表現します。誰もが理解できるような論理性をもって、具体的に言語化しましょう。
2. アルゴリズム化する
言語化できたとしても、まだコードを書き始めることはしません。どのような手順で計算・実行していけば、言語化したことを実現・達成できるのか、アルゴリズムとして表現します。このアルゴリズムにそって、コードを書くことになるため、そのことも念頭に入れて、細かく手順を作成します。手順に間違いがあると、言語化したことを実現できませんので、確認しながら進めます。
アルゴリズム化できたとしても、最初に書いたアルゴリズムですべて上手くいくわけではありません。より効率的なアルゴリズムはないか検討していきます。例えば Python でいうと、for 文を使うと計算速度が遅くなるため、for 文を使わずに表現できないか、検討します。
3. コードを書く
アルゴリズムが完成したら、いよいよ (Python で) コードを書き、実装します。コードを書きながら、細かくテストをして、その (それらの) コードでやりたいことを実際できているか、その都度確認します。たくさんコードを書いた後に、実行してみたらやりたいことが実現できていないと、どこに間違いがあるのかわかりにくくなるため、細かくチェックすることをオススメします。
以上がプログラムを開発するときの流れです。もちろん、1. 2. 3. すべて大事ですが、どれが一番大事かといえば、やはり言語化になります。ここでしっかり具体的に言語化できていないと、次のアルゴリズムで表現できなくなりますし、やりたいことを間違えていると、最後にできたコードも間違いになります。
言葉で表現できるものはすべてコードにできると思いますので、自分の頭の中にあるやりたいことを、具体的に正確に言語化する努力をすることが、プログラムを完成させる一番の近道と思います。
以上です。
質問やコメントなどありましたら、twitter, facebook, メールなどでご連絡いただけるとうれしいです。