エクスプレッションがわかる人ならば使っているはずの変数。ただ、スクリプトでは少し厳密に書かねばならないので理解しましょう。以下のテンプレートはたいがいのスクリプトで最初に書く変数です。
var mAi = app.project.activeItem;
var mSls = mAi.selectedLayers;
var mSl = mSls[0];
まずは日本語訳です。
- 変数『mAi』 = タイムラインが出ているコンポジション。
- 変数『mSls』 = 選択レイヤー群(ゼロ始まりの配列。つまり1番目の番号は[0])。
- 変数『mSl』 = 選択レイヤー(選択レイヤー群の中身が1つしかなくても、このように指定する)。
『var mAi = app.project.activeItem』の『mAi』の部分です。『app.project.activeItem』というデータ情報を、好きな名前を付けた箱に入れて扱いやすくしているわけですね。
STEP1はエクスプレッションを使っている人であれば理解できるかと思います。しかし、エクスプレッションにvarはでてきませんよね?これはなんなんでしょうか?
varはvariableの略で「変数」という意味です。身もフタもないですが、変数名の前に付けて、AEに「これは変数ですよ」と伝えるためのものです。
他のプログラミング言語では「整数には『int』を付ける」など、データの型によって別々の接頭辞を付けるルールがあります。しかし「それめんどうじゃね?」となり、AEスクリプトのもととなったJavaScriptでは全てに『var』を付けておけば大丈夫となりました。AEスクリプトは、AEがどんなデータ型かを判断してくれます。
「全てにvarさえつけておけばいいなら、付けなくても同じじゃない?」という疑問が立ち上がります。実際、AEスクリプトではエクスプレッションと同じように、varなしでも動きます。
しかし別のAEスクリプトのルールから、varは付けておいたほうがいいです。以下がそのルールです。
- varを付けた変数は関数『 function(){〇〇}』の『 { } 』に囲まれていれば『ローカル変数』となる。
- varを付けていない変数は問答無用で『グローバル変数』となる。
- 『グローバル変数』はスクリプト全体どころか、別スクリプトとも変数を共有する。
つまりvarを付けないと『意図せぬ別スクリプトの変数上書き』が起こり得ます。そして単体ではちゃんと動いていたスクリプトが謎のエラーを出すようになるんですね(経験済み)。
mAiとかmSlsという名前は筆者がわかりやすいように付けた名前なので、自分に合う名前に変えてしまって問題なしです!
変数については以上です。