マニュアル キャンセル

エクスプレッション言語について

  1. After Effects ユーザガイド
  2. ベータ版のリリース
    1. ベータ版プログラムの概要
    2. After Effects ベータ版ホーム
  3. はじめに
    1. After Effects の概要
    2. After Effects の新機能
    3. リリースノート | After Effects
    4. After Effects の必要システム構成
    5. After Effects のキーボードショートカット
    6. サポートされているファイル形式 | After Effects
    7. ハードウェアに関する推奨事項
    8. Apple シリコン対応の After Effects
    9. 計画と設定
  4. Workspaces
    1. 一般ユーザーインターフェイスアイテム
    2. After Effects インターフェイスについて
    3. ワークフロー
    4. Workspaces、パネルおよびビューア
  5. プロジェクトとコンポジション
    1. プロジェクト
    2. コンポジションの基本
    3. プリコンポーズ、ネスト化およびプリレンダリング
    4. コンポジションプロファイラーを使用した詳細なパフォーマンス情報の表示
    5. CINEMA 4D コンポジションレンダラー
  6. フッテージの読み込み
    1. 静止画の準備と読み込み
    2. After Effects および Adobe Premiere Pro の読み込み
    3. ビデオとオーディオの読み込みと変換
    4. 3D イメージファイルの準備と読み込み
    5. フッテージアイテムの読み込みと変換
    6. フッテージアイテムでの作業
    7. シーン編集の検出を使用した編集ポイントの削除
    8. XMP メタデータ
  7. テキストとグラフィック
    1. テキスト
      1. 文字の書式設定と文字パネル
      2. テキストエフェクト
      3. テキストレイヤーの作成と編集
      4. 段落の書式設定と段落パネル
      5. テキストレイヤーとシェイプレイヤーの押し出し
      6. テキストのアニメーション化
      7. テキストアニメーションのサンプルとリソース
      8. Live Text テンプレート
    2. モーショングラフィック
      1. After Effects でのモーショングラフィックステンプレートの操作
      2. エクスプレッションを使用した、モーショングラフィックステンプレートのドロップダウンリストの作成
      3. エッセンシャルプロパティを使用したモーショングラフィックステンプレートの作成
      4. モーショングラフィックステンプレートおよびエッセンシャルプロパティでの画像とビデオの置き換え
      5. プロパティパネルを使用して、すばやく簡単にアニメートする
  8. 描画、ペイント、パス
    1. シェイプレイヤー、パス、ベクトルグラフィックの概要
    2. ペイントツール:ブラシ、コピースタンプおよび消しゴム
    3. テーパシェイプストローク
    4. シェイプレイヤーのシェイプ属性、ペイント操作およびパス操作
    5. 「パスのオフセット」シェイプエフェクトを使用したシェイプの変更
    6. シェイプの作成
    7. マスクを作成
    8. コンテンツに応じた塗りつぶしパネルを使用したビデオからのオブジェクトの削除
    9. ロトブラシとマットを調整
  9. レイヤー、マーカー、カメラ
    1. レイヤーの選択と配置
    2. 描画モードとレイヤースタイル
    3. 3D レイヤー
    4. レイヤープロパティ
    5. レイヤーの作成
    6. レイヤーの管理
    7. レイヤーマーカーとコンポジションマーカー
    8. カメラ、ライト、目標点
  10. アニメーション、キーフレーム、モーショントラッキング、キーイング
    1. アニメーション
      1. アニメーションの基本
      2. パペットツールを使用したアニメーション化
      3. シェイプパスとマスクの管理とアニメーション化
      4. After Effects を使用した Sketch と Capture シェイプのアニメーション化
      5. 多彩なアニメーションツール
      6. データ駆動型アニメーションの操作
    2. キーフレーム
      1. キーフレーム補間法
      2. キーフレームの設定、選択および削除
      3. キーフレームの編集、移動、コピー
    3. モーショントラッキング
      1. モーションのトラッキングとスタビライズ
      2. 顔のトラッキング
      3. マスクのトラッキング
      4. マスク参照
      5. 速度
      6. 時間伸縮とタイムリマップ
      7. タイムコードと時間の表示単位
    4. キーイング
      1. キーイング
      2. キーイングエフェクト
  11. 透明度と合成
    1. 合成と透明化の概要とリソース
    2. アルファチャンネルおよびマット
    3. トラックマットとトラベリングマット
  12. カラーの調整
    1. カラーの基本
    2. カラーマネジメント
    3. 色調補正エフェクト
    4. OpenColorIO および ACES のカラーマネジメント
  13. エフェクトおよびアニメーションプリセット
    1. エフェクトおよびアニメーションプリセットの概要
    2. エフェクトリスト
    3. エフェクトマネージャー
    4. シミュレーションエフェクト
    5. スタイライズエフェクト
    6. オーディオエフェクト
    7. ディストーションエフェクト
    8. 遠近エフェクト
    9. チャンネルエフェクト
    10. エフェクトの生成
    11. 時間エフェクト
    12. トランジションエフェクト
    13. ローリングシャッターの修復エフェクト
    14. ブラー&シャープエフェクト
    15. 3D チャンネルエフェクト
    16. ユーティリティエフェクト
    17. マットエフェクト
    18. ノイズ&グレインエフェクト
    19. 「詳細を維持しながらアップスケール」エフェクト
    20. 旧バージョンエフェクト
  14. エクスプレッションと自動化
    1. エクスプレッション
      1. エクスプレッションの基本
      2. エクスプレッション言語について
      3. エクスプレッション制御の使用
      4. JavaScript と以前の ExtendScript のエクスプレッションエンジンの構文の違い
      5. エクスプレッションの編集
      6. エクスプレッションエラー
      7. エクスプレッションエディターの使用
      8. エクスプレッションを使用したテキストプロパティの編集とアクセス
      9. エクスプレッション言語リファレンス
      10. エクスプレッションの例
    2. 自動化
      1. 自動化
      2. スクリプト
  15. イマーシブビデオ、VR、3D
    1. After Effects での VR 環境の作成
    2. イマーシブビデオエフェクトの適用
    3. VR/360 度ビデオの合成ツール
    4. 高度 3D レンダラー
    5. 3D モデルを読み込んでコンポジションに追加
    6. Creative Cloud ライブラリからの 3D モデルの読み込み
    7. 画像ベースの照明
    8. 3D モデルからのライトとカメラの抽出およびアニメーション化
    9. 3D カメラの移動のトラッキング
    10. シャドウを落とすおよび受ける
    11. 埋め込まれた 3D モデルアニメーション
    12. シャドウキャッチャー
    13. 3D 深度データ抽出
    14. 3D レイヤーのマテリアルプロパティの変更
    15. 3D デザインスペースでの作業
    16. 3D 変形ギズモ
    17. 3D アニメーションによるその他の操作
    18. Mercury 3D エンジンを使用した、3D デザインへのリアルタイムのプレビュー変更
    19. グラフィックへのレスポンシブデザインの追加
  16. ビューとプレビュー
    1. プレビュー
    2. Mercury Transmit を使用したビデオプレビュー
    3. ビューの変更と使用
  17. レンダリングと書き出し
    1. レンダリングと書き出しの基本
    2. After Effects の H.264 エンコード
    3. After Effects プロジェクトを Adobe Premiere Pro プロジェクトとして書き出し
    4. ムービーの変換
    5. マルチフレームレンダリング
    6. 自動レンダリングとネットワークレンダリング
    7. 静止画および静止画シーケンスのレンダリングと書き出し
    8. After Effects での GoPro CineForm コーデックの使用
  18. その他のアプリケーションの使用
    1. Dynamic Link と After Effects
    2. After Effects およびその他のアプリケーションの使用
      1. After Effects プロジェクトを Premiere Pro プロジェクトとして書き出し
    3. After Effects の設定の同期
    4. After Effects の Creative Cloud ライブラリ
    5. プラグイン
    6. Cinema 4D と Cineware
  19. 共同作業:Frame.io と Team Projects
    1. Premiere Pro と After Effects での共同作業
    2. Frame.io
      1. Frame.io のインストールとライセンス認証
      2. Premiere Pro および After Effects での Frame.io の使用
      3. よくある質問
    3. Team Projects
      1. Team Projects の概要
      2. チームプロジェクトの作成
      3. Team Projects を使用した共同作業
  20. メモリ、ストレージおよびパフォーマンス
    1. メモリとストレージ
    2. プレビュー時のメモリ不足の問題に対する After Effects の処理    
    3. 処理速度の向上
    4. 環境設定
    5. After Effects の GPU および GPU ドライバーの要件
  21. ナレッジベース
    1. 既知の問題
    2. 修正された問題
    3. よくある質問
    4. After Effects および macOS Ventura
    5. プレビュー時のメモリ不足の問題に対する After Effects の処理

エクスプレッション言語を学習し、After Effects で様々なエクスプレッションを作成します。

JavaScript に基づく After Effects エクスプレッション言語には、ビルトインオブジェクトの拡張セットが追加されています。After Effects では、Web ブラウザー固有の拡張機能ではなく、標準的な JavaScript 言語を使用しており、レイヤーコンポジションフッテージカメラなどの独自の拡張オブジェクトセットが含まれています。

エクスプレッション言語はスクリプト言語に基づいていますが、スクリプトとエクスプレッションの間には微妙ながら本質的な違いがあります。スクリプトはアプリケーションに対して何らかの操作を実行するように指示しますが、エクスプレッションはプロパティに対して操作の実行を指示します。

エクスプレッションを作成する場合は、以下の点に注意してください。

  • エクスプレッションの値は、最後に評価されたステートメントの値です。これは通常、エクスプレッションの最後の行です。最も単純な形式では、エクスプレッションの値は、評価順に基づいてエクスプレッションで呼び出された最後の変数または関数によって生成されます。ただし、値を戻り値として明示的に参照することもできます。これには、エクスプレッションで以前からデバッグの目的で使用されていた値や、記述された順序で処理されない、明示的に宣言された関数や変数の範囲外の値が含まれる場合があります。
  • JavaScript は大文字と小文字を区別する言語です。
  • エクスプレッションの下部で関数を宣言することはできません。

言語の基礎

JavaScript では、オブジェクトに格納されている値をプロパティと呼びます。ただし、After Effects では、タイムラインパネルで定義されているレイヤーコンポーネントを「プロパティ」と呼びます。このため、After Effects では JavaScript プロパティを「メソッド」または「属性」と呼んでいます。一般に、「メソッド」と「属性」の違いは、メソッドは通常、出力値(戻り値)を作成するのに対し、属性は出力値(戻り値)を特定するのに既存の値を参照することです。メソッドにはメソッド名の後に括弧で囲まれている入力引数があるので、メソッドと属性は簡単に区別できます。

オブジェクト」は、別のオブジェクト、属性、およびメソッドを含めることのできるアイテムです。コンポジション、レイヤーおよびフッテージアイテムは、オブジェクトの一例です。コンポジション、レイヤーおよびフッテージアイテムは「グローバルオブジェクト」で、上位レベルのオブジェクトを参照せずにコンテキストで参照できます。

属性とメソッドへのアクセス

レイヤープロパティの属性やメソッドにアクセスするには、エクスプレッション言語を使用します。値にアクセスするには、一連のオブジェクト参照をピリオド(.)演算子で区切って指定します。「エフェクト」プロパティ、マスクまたはテキストアニメーターを参照する場合など、他のレベルのレイヤーのオブジェクトを参照するように指定するには、括弧を使用します。例えば、レイヤー A の「不透明度」プロパティをレイヤー B のブラー(ガウス)エフェクトの「ブラー」プロパティにリンクするには、レイヤー A の「不透明度」プロパティの「エクスプレッション」フィールドに次のエクスプレッションを入力します。

thisCompayer(“Layer B”)ffect(“Gaussian Blur”)(“Blurriness”)

このエクスプレッションは、左から右に向かって上位レベルから 特定のプロパティへのオブジェクトを表しています。

  • 使用しているグローバルオブジェクトは、現在のコンポジション thisComp を参照しています。

  • コンポジション内の特定のレイヤーオブジェクトは、 「layer("Layer B")」という名前で参照されます。

  • レイヤー内の特定のエフェクトオブジェクトは、 「effect("Gaussian Blur")」という名前で参照されます。

  • エフェクト内の特定のエフェクトプロパティは、 「("Blurriness")」という名前で参照されます。

複数のスケール値を持つプロパティの n 番目のコンポーネントは、 エフェクトコントロールポイントの y コンポーネントのように、次のように末尾に [n] を 付加します。

thisCompayer(“Layer B”)ffect(“Advanced Lightning”)(“Origin”1]

エクスプレッションの初期設定オブジェクトは、エクスプレッションを記述するプロパティで、その後ろにエクスプレッションを含むレイヤーが続きます。したがって、プロパティを指定する必要はありません。例えば、レイヤーの「位置」プロパティについて記述したウィグルのエクスプレッションは次のいずれかになります。

wiggle(5, 10)  
position.wiggle(5, 10) 
thisProperty.wiggle(5, 10)

エクスプレッションを作成するレイヤーとプロパティの外からレイヤーとプロパティを取得する場合は、レイヤーとプロパティを指定します。例えば、レイヤー B の「不透明度」プロパティをレイヤー A の「回転」プロパティにリンクするエクスプレッションは次のようになります。

thisCompayer(“Layer A”)otation
注意:

同様の例を見るには、ピックウイップを使用してレイヤープロパティを別のレイヤープロパティとリンクし、それによって生成されるエクスプレッションを参照してください。

配列と多次元プロパティ

配列は、配列とは順序付けられた一連の数値を格納できる種類のオブジェクトです。配列は、次の例のように、コンマで区切られ、かっこで囲まれた数字のリストとして表されます。

  [10, 23]

変数に配列オブジェクトを割り当てれば、エクスプレッションの他の領域で 配列値を容易に参照することができます。以下に例を示します。

  myArray = [10, 23]

配列オブジェクトのディメンションは、配列内の 要素の数のことです。myArray のディメンションは 2 です。 After Effects のプロパティのディメンションは、 保持している値引数の数によって異なります。エクスプレッション言語では、 プロパティの値は単一の値(数値オブジェクト)または配列(配列オブジェクト)の いずれかです。

次の表に、プロパティとそのディメンションの例を 示します。

次元

プロパティ

1

回転 °

不透明度 %

2

拡大・縮小 [x=幅, y=高さ]

位置 [x, y]

アンカーポイント [x, y]

オーディオレベル [左, 右]

3

スケール [幅, 高さ, 深度]

3D 位置 [x, y, z]

3D アンカーポイント [x, y, z]

方向 [x, y, z]

4

カラー [赤, 緑, 青, アルファ]

配列オブジェクトの個々の要素にアクセスするには、 目的の要素を示すインデックス番号と括弧を使用 します。配列オブジェクトの要素には 0 からインデックスが付けられます。 前の例では、myArray[0]10myArray[1]23 です。

以下の 2 つのエクスプレッションは等価です。

  [myArray[0], 5] 
  [10, 5]

プロパティの配列の位置

「位置」プロパティ配列のインデックスは次のとおりです。

  • position[0] は位置の x 座標です。

  • position[1] は位置の y 座標です。

  • position[2] は位置の z 座標です。

配列でのカラーの表示

カラーは 4D 配列として表示されます。

  • アルファ

8 bpc または 16 bpc の色深度のプロジェクトでは、カラー配列の各値が 0(黒)~ 1(白)になります。例えば、の場合は 0(色なし)~ 1(赤)です。したがって、[0,0,0,0] は黒で透明、[1,1,1,1] は白で不透明です。色深度が 32 bpc のプロジェクトでは、0 未満や 1 を越える値を指定することもできます。

配列オブジェクト内で、次元のコンポーネントの最高値より大きなインデックスを使用すると、エラーになります。例えば、myArray[2] ではエラーが発生しますが、position[2] では、位置の z 座標が返されます。

After Effects エクスプレッション言語に含まれる多くのプロパティやメソッドでは、配列オブジェクトを引数として取ったり、戻り値として返したりします。例えば、thisLayer.position は、レイヤーが 2D か 3D かに応じて、2 次元または 3 次元の配列になります。

位置のアニメーションの y 値を維持しながら x 値を 9 に固定するエクスプレッションは、次のようになります。

  y = position[1]; 
  [9,y]

さらに簡潔に記述すると次のようになります。

  [9, position[1]]

これは重要なポイントなので、もう 1 つ例を見てみます。 レイヤー A から取得した x 位置の値とレイヤー B から取得した y 位置の値を 組み合わせる場合は、次のように記述できます。

  x = thisCompayer(“Layer A”)osition[0  
  y = thisCompayer(“Layer B”)osition[1  
  [x]

2D プロパティまたは 3D プロパティの配列の値を 1 つだけ参照するエクスプレッションを作成することができます。初期設定では、特に指定がない限り、最初の値が使われます。例えば、レイヤー A の「回転」プロパティからレイヤー B の「拡大・縮小」プロパティにピックウイップをドラッグすると、次のエクスプレッションが表示されます。

  thisCompayer(“Layer B”)cale[0]

デフォルトでは、「拡大・縮小」プロパティの最初の値である幅の値が使用されます。幅の代わりに高さを使用する場合は、プロパティ名ではなく 2 番目の値に直接ピックウイップをドラッグするか、エクスプレッションを次のように変更します。

  thisCompayer(“Layer B”)cale[1]

逆に、レイヤー B の「拡大・縮小」プロパティからレイヤー A の「回転」プロパティにピックウイップをドラッグすると、自動的に変数が作成されて「回転」プロパティの 1 次元の値が割り当てられ、その変数が「拡大・縮小」プロパティの両方のディメンションに使用されます。

  temp = thisComp.layer(1).transform.rotation; 
  [temp, temp]

ベクトル

After Effects では、多くのプロパティおよびメソッドがベクトルを返します。配列が空間におけるポイントまたは方向を表す場合、After Effects ではそれを「ベクトル」と呼びます。例えば、position はベクトルを返す、というように表現します。

ただし、audioLevels のような関数は 2 次元の値(左と右のチャンネルのレベル)を返しますが、これはポイントや方向を表しているわけではないので、「ベクトルを返す」とは言いません。After Effects の関数の中にはベクトル引数を取るものがありますが、このような関数が便利なのは渡される値が方向を表している場合のみです。例えば、cross(vec1, vec2) では、入力ベクトルに対して垂直な第 3 のベクトルを計算します。これは、vec1vec2 が空間内の方向を表している場合は便利ですが、2 組の任意の数値の組み合わせを表している場合は特に意味がありません。

インデックスとラベル

After Effects のレイヤーエフェクトマスク要素のインデックスは、1 から始まります。例えば、タイムラインパネルの最初のレイヤーは layer(1) です。

特に理由がない限り、レイヤー、エフェクト、マスクのラベルには番号ではなく、名前を使用してください。番号を使用すると、これらのオブジェクトを移動した場合や、After Effects のアップデートまたはアップグレード時に引数が変更された場合に区別しづらくなり、エラーの原因となりかねません。名前を使用する場合は、必ず半角の二重引用符("")で囲みます。例えば、次に示す最初のエクスプレッションの方が 2 番目のエクスプレッションよりわかりやすく、また最初のエクスプレッションはエフェクトの順序を変更しても機能します。

  effect(“Colorama”)aram(“Get Phase From”)  
  effect(1)aram(2)

エクスプレッション時間

エクスプレッション内の時間は、レイヤー時間ではなく常にコンポジション時間にあり、秒単位で測定されます(sourceRectAtTime() エクスプレッションには当てはまりません)。エクスプレッションの初期設定の時間は、エクスプレッションが評価されるコンポジションの現在の時間です。次のエクスプレッションでは、両方ともコンポジションの初期設定の時間が使用され、同じ値が返されます。

thisComp.layer(1).position  
thisComp.layer(1).position.valueAtTime(time)

相対時間を使用するには、time 引数に相対値を追加します。例えば、現在の時間の 5 秒前の位置の値を取得するには、次のエクスプレッションを使用します。

thisComp.layer(1).position.valueAtTime(time-5)

ネスト化されたコンポジションに含まれるプロパティが参照する初期設定の時間は、リマップされた時間ではなく、コンポジションの元の初期設定の時間です。ただし、プロパティの取得に source 関数を使用する場合は、リマップされた時間が使用されます。

例えば、包含コンポジション内のレイヤーのソースがネスト化されたコンポジションで、包含コンポジション内でタイムリマップされているとします。この場合、次のエクスプレッションで、ネスト化されたコンポジション内にあるレイヤーの位置の値を取得すると、コンポジションの初期設定時間の位置の値が返されます。

comp(“nested composition”)ayer(1)osition

ただし、ソース関数を使用してレイヤー 1 にアクセスすると、 タイムリマップされた後の位置の値が返されます。

thisCompayer(“nested composition”)ourceayer(1)osition
注意:

エクスプレッションで特定の時間を指定すると、 タイムリマップされた時間は無視されます。

エクスプレッションはフレーム単位ではなく、秒単位で時間どおりに動作するため、フレームで動作するように時間変換メソッドを使用して時間値の変換が必要になる場合があります。

例:エクスプレッション言語の要素を使ってエクスプレッションを記述する

ここでは、エクスプレッション言語の要素を使用してエクスプレッションを記述する例を紹介します。この例で作成されるエクスプレッションは、「平面 2」の「位置」プロパティを「平面 1」の「位置」プロパティにリンクし、「平面 2」の動きは「平面 1」の動きの 2 秒分オフセットされます。

  1. 2 つの平面レイヤー(「平面 1」と「平面 2」)を作成します。

  2. キーフレームを使用して、「平面 1」の「位置」プロパティ値をアニメートします。(アニメーション、キーフレームおよびエクスプレッションについてを参照)。

  3. 「平面 2」の「位置」プロパティを選択して、アニメーションエクスプレッションを追加を選択するか、Alt キー(Windows)または Option キー(macOS)を押しながらプロパティのストップウォッチ ボタンをクリックします。初期設定では、次のエクスプレッションが表示されます。

      transform.position
  4. transform.position を次のエクスプレッションで直接上書きします。

      thisComp
  5. 要素 thisComp はグローバル属性で、その値は、現在のコンポジションを表す Comp オブジェクトになります。このエクスプレッションで thisComp の後に入力できる要素を確認するには、グローバルオブジェクト、属性、メソッドthisComp の戻り値を調べます。

    thisCompComp オブジェクトを返します。次に、Comp の属性とメソッドを参照して、Comp オブジェクトで使用できる属性とメソッドを確認します。1 つの選択肢として layer(index) があります。括弧内のインデックスまたは数字に、使用するレイヤーを示す番号を指定します。この例では、「平面 1」がコンポジションの最初のレイヤーとします。アクティブなコンポジションの最初のレイヤーから値を取得するには、次のように入力します。以下のようにエクスプレッションの末尾に layer(1) と入力します。

      thisComp.layer(1)
  6. 再びエクスプレッション要素リファレンスを参照して、layer(index)レイヤーオブジェクトを返すことを確認します。レイヤーの一般属性とメソッドを参照して、使用する要素を確認します。例えば、レイヤーの「位置」プロパティの値を取得するには、以下のようにエクスプレッションの末尾に .position と入力します。

      thisComp.layer(1).position
  7. レイヤーの一般属性とメソッドから、位置属性がプロパティを返すことがわかります。プロパティの属性とメソッドを参照すると、このエクスプレッションに時間係数を追加できることがわかります。現在の時刻から 2 秒後など、特定の時刻を追加するには、次のようにエクスプレッションの末尾に .valueAtTime(time+2) と入力します。

      thisComp.layer(1).position.valueAtTime(time+2)
  8. プロパティの属性とメソッドから、valueAtTime メソッドが数字または配列を返すことがわかります。エクスプレッションが数字、配列またはブーリアン(正か誤か)を返す場合は、エクスプレッションにその他の属性またはメソッドを追加することはできません(ただし、必要に応じて、+-*/ などの演算子を使用することはできます)。

その他のエクスプレッション関連リソース

ここまでで、エクスプレッションの背景となる概念を理解したので、今度はコミュニティにアクセスして実例を参考にしたり、自分の作品を共有したりしてください。

AE Enhancers フォーラムには、エクスプレッションの多くの例や情報、スクリプトやアニメーションプリセットも公開されています。

ヘルプをすばやく簡単に入手

新規ユーザーの場合

Adobe MAX 2025

Adobe MAX Japan
クリエイターの祭典

2025 年 2 月 13 日
東京ビッグサイト