「ImageJマクロを使う」シリーズでは、ImageJを使って生命科学系の画像解析をするにあたって必要な知識をまとめていきます。
今回は、マクロを使う上で出てくる「関数と変数」についてです。
「関数と変数」って言われても、数学のこと?って感じですよね。
プログラミングの関数って言われても「?」って思う人が多いのではないでしょうか。
プログラミングを始めて最初につまづいたのが「関数と変数」でした。
初歩の初歩でよくわからなくて、勉強するのを諦めようかと思ったくらいです。
プログラミングをする人にとっては、あまりにも当たり前のことなので教科書とかには丁寧に書かれていないのです...
この記事では、プログラミング超初心者だった私が、自分なりに理解した「関数と変数」についてまとめていきます。
「関数と変数」がわかるようになれば、マクロを自分で書けるようになります!
関数ってなに?
プログラミングでの「関数」というのは、あらかじめ作られた「処理」のかたまりのことです。
Excelを使っていたら、SUM関数やAVERAGE関数などを使ったことがあるかもしれません。
セルにデータを入れておいて、“=SUM()”を使えばデータの総計が、“=AVERAGE()”を使えば平均が自動で計算されます。
この面倒な作業を一気にやってね!と指示を出して、答えを返してくれるのが「関数」です。
ImageJマクロには「関数」が2種類あります。
1つ目は、事前にその言語に組み込まれている「組み込み関数」。
2つ目は、ユーザーが自分で定義する関数です。
試しに「関数」を使ってみましょう。
マクロの編集画面は、「File -> New -> Script...」で開けます。「Language -> IJ1 Macro」で言語を選択してください。
ImageJに組み込まれている関数は、こちらのサイトで一覧になっているので参考にしてみてください。
関数の基本の形を打ち込んで、「Run」ボタンを押すと動きます。
自分で関数を作ってみる。
自分で関数を作る場合には、
1 2 3 |
function 関数名(引数1, 引数2, 引数3, ...){ 命令文 } |
という形で作ります。
※「引数(ひきすう)」というのは、関数に引き渡される情報。その関数を動かすのに必要な情報を入れていきます。
ImageJマクロで足し算をする関数と、引き算をする関数を作ってみましょう。
計算だけではなく、文字を表示させる関数も作ってみましょう。
という感じで簡単に自分で作りたい関数を作ることができました。
変数ってなに?
ImageJでは変数にも2種類あります。文字変数と数値変数です。
そもそも、変数というのはどういうものでしょう?
変数といえば、数学の関数を思い浮かべる人が多いのではないでしょうか?
y=2x+1という関数があったときに、xもyも変数です。
xが1のときyは3、yが9のときxは4と決まりますよね。
この時のxやyは「ある特定の値」ではなく、その関数の代表的な値として記述されています。
プログラミング言語の変数は数学のものと少しイメージが違うかもしれません。(でも根っこは同じで、代表的な値として抽象化して記述するものです)
プログラミング言語での変数は「箱」。
データの数値や、計算式、文字列などを入れておく「箱」だと思っておいてください。
まず、文字変数の扱い方について簡単にみてみましょう。
ImageJマクロで変数に代入するときには"="を使います。
文字列(””で囲ったもの)を入れて、足し算をすることができました。
※文字列を扱う場合には、演算子は"+"しか使えません。("-"や"*"などを使うとエラーが出るので注意しましょう。)
余談ですが...
print関数の特殊な使い方で、Log画面に表示されている結果を消す方法をご紹介します。
次に、数値データを変数に入れてみましょう。
数値データを入れて、演算子を使うと計算を自動的にしてくれます。
変数に数値データを入れた場合、print関数で変数名を引数に入れると変数の名前ではなく、変数の中に入っている数値データが返されます。
最後に、自分で定義した関数の結果を変数を使って表示させてみましょう。
変数に数値データが入っている場合には、関数の引数を数値データではなく変数にしてもきちんと動くことがわかりました。
【ImageJ】ImageJマクロを使う #2〜関数と変数とは? まとめ
プログラミングの初歩の初歩である「関数」と「変数」についてみてきました。
- 関数は「処理」のかたまり
- 関数は自分で定義することもできる
- 変数は「箱」
- 文字列を使うときと数値データを使うときで扱い方が違うので注意が必要
次は、ImageJマクロを使ってディレクトリを選択する方法をまとめます。