AviSynthのぺーじ/関数の基本型
これは、かつて「にーやんのAviSynthのぺーじ」として公開されていたものを転載したものです。内容は古く、間違いも含まれている可能性があります。より正確で新しい情報を知りたい場合は、AviSynth 付属のヘルプや AviSynth 公式サイトを参考にすることをおすすめします。AviSynth Wiki の AviSynth入門なども活用してください。
なぜ関数を作るのか? †
AviSynthでは既存のフィルタを組み合わせるなどして、ユーザーが独自に関数を定義することができます(ユーザー定義関数)。
そして、ユーザー定義関数は、あたかもそのようなフィルタがあるかのように呼び出して使用することができます。
関数と言うだけでじんましんが出そうな方もいるかもしれませんが、要するに「すでにあるフィルタを利用して、別の新しいフィルタのようなものを作ることができる」ということです。
この「別の新しいフィルタのようなもの」がユーザー定義関数になります。
これまでも「自分で関数を作るときは・・・」などというようなことを何気なく書いてきましたが、何を言ってるんだ?と思っていた人も、これで少しはその意味がわかったんじゃないかと思います。
じゃあ、わざわざ自分で関数を作るなどという面倒なことをするのは、どうしてか?
それには、次のような理由が考えられます。
- よく使うスクリプトの汎用化
- フィルタのカスタマイズ(使い勝手の向上)
- デフォルト値・プリセットの設定、など。 これらの理由については、次回以降に具体的な例を挙げながら解説したいと思います。
関数の基本型 †
関数を作るといっても適当に書いていいわけではなく、関数の基本型に沿って定義しなければなりません。
function 関数名(引数リスト) { 関数 return文 }
これが関数の基本型です。
まず、関数という意味の英語であるfunctionからはじまります。
次に半角スペースをはさんで関数名(引数リスト)を記述します。
「引数リスト」は、「データ型1 引数1, データ型2 引数2, データ型3 引数3, ...」のように指定します。引数の数は関数によって異なります。
書式とフィルタの記述方法のところで出てきたカッコの中身と一緒ですね。
関数名(データ型1 引数1, データ型2 引数2, データ型3 引数3, ...)
フィルタ名(データ型1 引数1, データ型2 引数2, データ型3 引数3, ...)
実際、この2つは、ほぼ同じと考えていいでしょう。
ようするに自分でフィルタ(関数)の名前と書式を決めるわけです。
そして、 { と } (中括弧)で挟まれた部分にメインの関数を定義します。
関数の最後にはreturn文です。
それはなぜか?
メインスクリプト ---関数呼出---> 関数実行 ---return---> メインスクリプト
ユーザー定義関数を使用する際は、フィルタをかけるのと同じように関数の式を記述して呼び出します。
そして、関数内部で処理されたビデオクリップは、またメインのスクリプトへと戻されなければなりません。
このときビデオクリップを返す(return)ためにreturn文が必要になるわけです。もちろん「return 式」と一行で書けるときは、一行にまとめて記述することも可能です。
以上でユーザー定義関数についての基本的な説明を終わります。
次回からは、数回にわたって「関数をつくる理由(メリット)」について、具体的な関数の作成例を紹介しながら解説していきたいと思います。
最終更新日 2004年7月17日