トップページ

シミュレーションの作り方

iBone Mascot

by 岐阜大学大学院医学系研究科 組織・器官形成分野 手塚建一

生体シミュレーションについてくどくど説明するより、まず一つ作ってみましょう。僕は古いMacにおまけで付いて来たHyperCardというプログラミング環境が好きなんですが、とりあえずいろいろなコンピュータ上で動くC言語を使って簡単なプログラムを組んでみます。コンピュータ=インターネットから一歩進んだ使い方です。例は、膜のイオン透過性が膜内外の電位差を作るという簡単なシミュレーションです。

用意するもの

  • パソコン(C言語でプログラミングできればなんでも/MacOSXかLinuxマシンが良いと思います)
  • C言語プログラミングに関する入門書(自分のマシンに合ったもので、何よりも勉強する気を起こさせるもの)

    実は、プログラムを組んだ事が無い人にとって、上の2つはかなりの難関のはずです。OSが入っていないPCを用意して、Linuxをインストールすればそれで済むのですが、いろいろとトラブルが起き、なかなか動いてくれないかもしれません。大学のUNIXマシンを使うのもひとつの方法です。最近のMacOSXには、Xcode ToolsというCDがおまけで付いて来ますが、これをインストールして、Terminalでプログラムを行うのもオツな物です。Windows環境は良くわからないので、パス(笑)。

    とにもかくにも、なんとか自分でC言語でプログラムを作れる環境を整える事ができたら、既にあなたはプログラマーです。コンピュータの華やかな上っ面から、一歩中に入った事になります。プログラムを組むというのは、海に潜るのとちょっと似ています。波の上でサーフィンするのと、ダイビングの違いですね。地味だけど、奥が深いダイビングです。

    さて、環境が用意できたら、早速プログラムを組んでみましょう。Linuxなら、

    emacs simulation.c

    で、ファイルを作ります。最後の.cがCで書かれたプログラムである事を意味しています。Macならテキストエディットなどの使いやすい文章入力ツールを使って、普通にファイルを作って下さい(僕の好みはミミカキエディットです)。それでは、コメント文でタイトルなぞ付けてみましょう。

    /* My Simulation 1.0 */
    /* Programmed by K. Tezuka */
    /* 2004/7/14 */

    自分の名前と日付を付けておくと、自分で作ったぞという主張ができます。/*と*/で挟まれた部分は、プログラムとしては何もしないので、好きな文章を入れられます。

    次に、環境に組み込まれたツールを使える様にしておきます。基本入出力(printfなど)と計算用ライブラリ(平方根などが計算できる関数が含まれる)をリンクしておけば良いでしょう。

    #include <stdio.h>
    #include <math.h>

    この2つを入れる事で、シミュレーションに使うための道具が使える様になります。簡単でしょ?

    次に変数を作ります。ここで作った変数は、プログラム全体で使えるグローバル変数になります。必要になったらまた後で付け足しますから、とりあえず細胞内と細胞外のNaとKの濃度を、

    double Nai, Nao, Ki, Ko;

    と定義しておきます。

    では、いよいよプログラム本体です。

    main()
    {
    printf("%f %f %f %f\n",Nai,Nao,Ki,Ko);
    }

    日本語環境では\(バックスラッシュ)が¥(円)になったりします。ここまででとりあえずファイルを保存(Emacsならctrl-C-S)して、終了(Emacsならctrl-C-X)します。

    コンパイル(cc)して実行プログラムを作ります。

    cc -o simulation simulation.c

    これで、simulationという実行プログラムが出来るはずです。何かエラーメッセージが出たら、プログラムファイルに間違いが無いか良く確認して下さい。意外とミスがあるのに気づくはずです。何もエラーが出なければ、

    ./simulation

    で実行させると、

    0.000000 0.000000 0.000000 0.000000

    と出ますか?環境によってはランダムな数値が4つ出力されるかもしれません。

    もし、うまく行かない場合は、今、simulation.cのファイルの中身は下の様になっているでしょうか?プログラム用のエディタを使うと、文の性格によって色分けがされるので、ミスを見つけやすいですね。

    ターミナル上でコンパイルし実行した時には、下の様に表示されているでしょうか(環境によって見かけは異なります)。

    最後に、変数は定義した時に値が0にセットされる事も多いですが、これは保証されないので、最初の定義の時に、初期値を入れておくと良いと思います。

    double Nai=50.0, Nao=50.0, Ki=50.0, Ko=50.0;

    次に、実際の膜電位シミュレーションを作ってみます>膜電位シミュレーションへ