Expressionとは?
解 説
 Expression(エクスプレッション)とはAfterEffectsでのモーション制作を補助する計算式です。計算式と言っても実際にはECMA Scriptというスクリプト言語を基準にしています。ECMA Scriptと言ってもピンと来ないかも知れませんが、JavaScriptと言えば分かる人も多いかと思います。Webページでよく使用されているスクリプト言語がJavaScriptで、これと同じようなものがAfterEffectsでも利用することができます。
 同じと言っても完全に同じというわけではありません。JavaScriptのブラウザやアプリケーションなどに依存しない部分でがECMA Scriptであり、これにAfterEffects独自の変更を行ったものがExpressionです。つまり

JavaScript = ECMA Script + ブラウザ独自機能
Expression = ECMA Script + AfterEffects独自機能

 といった感じになります。JavaScriptをある程度使える人であればAfterEffectsのExpressionも簡単に使うことができます。文法や命令が同じためです。ただし、AfterEffectsではMath.random()に関しては専用のランダム関数が用意されています。これは完全に乱数値を使用してしまうとモーションの再現性がなくなってしまい、レンダリングするたびに結果が異なるのを防ぐためです。また、Dateオブジェクトなどにも制限があります。

 Expressionは計算式と書きましたが、JavaScriptが全く書けなくても数値や数式を指定するだけでも大丈夫です。例えば

45

 と回転角度をExpressionで指定して場合、45度に角度が設定されます。また、

12 + 24 * 2

 とすると、この計算が行われ計算結果である60が回転角度として設定されます。以下のように()を使って計算の優先順位を変更することもできます。

(12 + 24) * 2

 この場合は72が回転角度として設定されます。
 JavaScriptでは行末は自動判別されますが、行末である事を確実に示すため本サイトでは行末に;(セミコロン)を表記しています。



Expression表記の注意点
解 説  Expressionでの計算式はJavaScriptと同じですが、注意しなければならない事があります。例えば以下のように位置にExpressionを書いたとします。

45;

 このままでは入力が確定した時点でエラーとなってしまいます。これは、なぜかと言うと位置データは2つの値を結果として必要とするためです。上記の場合は45という1つの値が入っただけで値が不足しています。値を2つ返すようにするには以下のように[]で囲んで返す値の数だけ,(カンマ)で区切ります。

[45,100];

 また、値は一番最後に指定されたものになります。複雑な計算を行って最後に値を返す、という使い方になります。
 Expression内で複雑な計算を行う場合に関数を使うこともできます。JavaScriptなのでfunctionを使って関数を定義できます。例えば一定範囲にレイヤーをランダムに移動させるには以下のように書きます。

function calc(m)
{
n = random(10, m);
return n;
}
x = calc(20);
y = calc(40);
[x,y];


 ここで定義される関数は、このExpression内のみ有効です。つまり位置にこの関数を定義したら位置指定でしか使えません。スケールや回転角度など他の部分で使用することはできません。