マクロとユーザー定義関数part1(大まかな違い)
題名を見ただけれはわからないかもしれませんが、
Macro と Function の違いです。
まずIgorのマニュアルでは以下のように書かれています。
Igorが初めて開発されたときから、マクロによる自動実行がサポートされていました。マクロという概念によって、ユーザはコマンドを組み合わせて呼び出し可能なルーチンを作成できました。(中略)
WaveMetrics社はまもなく、あらゆる範囲のプログラミングをサポートする、より高速で強力な技術の必要性を認識し、これがユーザ定義関数の追加につながりました。関数はコンパイルして使用するため、マクロよりも数段速く実行されます。(中略)
ほとんど大部分のプログラミングでは関数を使用するべきです。(中略)
マクロの構文と動作は関数のものと似ていますが、その違いは初めてIgorのプログラミングを習う人々にとっては混乱の元となる可能性があります。プログラミングの初心者の場合、マクロについてもっと知る必要が生じるまで、 この章の残り(マクロの章)を読むのは延期して支障はありません。
はい、ここまで散々解説してきたマクロですが、マクロじゃなくユーザー関数、つまりMacroではなくFunctionを使うほうがおすすめされています。
僕自身も、これには同意できる部分があります。
しかし同意できない部分もあります。
Functionを使って自動化した方が、Macroを使って自動化するよりも明らかに高速で処理してくれます。
個人的な例ですが、Macroで10分かかっていたものが、Functionでは40秒でできました。
大量のデータを処理するならば、Functionで自動化する方が良いでしょう。
さらにユーザー定義関数を使って、しっかりと、正しい形でプログラミングをする方が、長期的に見ると無駄なエラーが減ったり、使えるコマンドも多いので、自由度が高いです。
しかし、簡単にプログラミングしたいのであれば、Macroが楽で、手っ取り早いですし、直感的だと思います。
ですので、初めはMacroで、慣れてきたらFunctionで、という風に進んでいくと良いと思います。
前 ーーーー
次