valueAtTime は、プロパティの「指定した時間の値」を取り出すエクスプレッションです。
今より少し前の値を使えば、別のレイヤーの動きを遅れて追いかける動きが作れます。
- 基本:先頭のレイヤーの位置.
valueAtTime(time - 0.2) - 複製するだけで順番に遅れる:index を使って1つ上のレイヤーを追いかける
- 最初の値を使う:valueAtTime(0)
- キーフレームも他の式もなく、値を固定したプロパティでは時間をずらしても変わらない
この記事は、Adobe公式の「Expression language reference」の説明(2026年10月3日に公式資料を確認)にもとづいています。
2026年10月13日と15日に、Windows 11 Pro上のAfter Effects 26.5.0で、主な式の動きを確かめました。
確かめた条件と結果は、それぞれの節に書いています。
valueAtTimeの書き方
valueAtTime(t)t は秒で指定します。
time はいまの時間なので、time - 0.2 と書くと「0.2秒前の値」になります。
別のレイヤーを遅れて追いかける
- 先頭で動かすレイヤーに、位置のキーフレームで動きを付ける(名前は「先頭」)
- 追いかけるレイヤーの「位置」に次の式を書く
var leader = thisComp.layer("先頭");
var delay = 0.2; // 遅らせる秒数
leader.transform.position.valueAtTime(time - delay);追いかけるレイヤーは、先頭のレイヤーが0.2秒前にいた場所にいつもいます。
この式の貼付先は追従側の「位置」です。回転や不透明度へ使う場合は、参照元の transform.position も対応するプロパティに変更します。先頭自身には貼らず、同じ親・次元のレイヤーで試します。
位置をずらして並べる
同じ場所に重なると1つに見えるので、少しずらしたいときは足し算をします。
var leader = thisComp.layer("先頭");
var pos = leader.transform.position.valueAtTime(time - 0.2);
pos.length == 3 ? [pos[0], pos[1] + 80, pos[2]] : [pos[0], pos[1] + 80];横を変えず、下に80ピクセルずらします。参照元が3DならZ値をそのまま返します。貼付先も参照元と同じ2D/3Dにし、「次元に分割」したX位置・Y位置には配列を返すこの式を貼りません。
位置に、0.4秒遅れて先行レイヤーを追う式を入れた画面です。
式は「delay=0.4;」と「thisComp.layer('Leader18709').transform.position.valueAtTime(time-delay)+[0,260];」でした。

0:20の時点では、下のオレンジの四角が、上の青い四角より左にありました。

1:15の時点では、2つの四角の横位置がそろいました。
0.4秒遅れて、同じ位置に到達しています。
0.2秒遅れと80ピクセルずらす式を試した結果(2026年10月15日)
2026年10月15日に、Windows 11 Pro上のAfter Effects 26.5.0で、上の0.2秒遅れる式と、80ピクセルずらす式を試しました。
コンポジションは1920×1080・30fpsで、先頭と2つの追従側は、同じ静止した親(位置0)につないでいます。
先頭の位置は、0秒で [200, 540]、1秒で [1200, 540] の直線のキーフレームです。
式の文字列は記事のものと同じで、入力欄へ手で打ち込む操作は確認に含めていません。
1秒の時点で、0.2秒遅れる側は [1000, 540]、80ピクセルずらす側は [1000, 620] でした。

0秒と0.1秒の時点では、0.2秒前が最初のキーフレームより前になるため、どちらもXは最初の値の200のままでした。
3Dレイヤーでも同じ式を試し、先頭のZを0秒で50、1秒で150にしました。
1秒の時点で、2つの追従側のZはどちらも約130で、0.2秒前(0.8秒)の先頭のZと同じでした。
80ピクセルずらす式でも、変わったのはYだけで、Zはそのまま残りました。
親が動く場合や、2Dと3Dが混ざった組み合わせは、確認していません。
複製するだけで順番に遅れさせる
たくさんのレイヤーを、少しずつ遅れて動かしたいときの書き方です。
var result = value;
if (index > 1) {
var above = thisComp.layer(index - 1);
result = above.transform.position.valueAtTime(time - 0.1);
}
result;index は、そのレイヤーがタイムラインの上から何番目かを表す数です。
index - 1 は「1つ上のレイヤー」なので、それぞれが1つ上のレイヤーを0.1秒遅れで追いかけます。
- いちばん上に、キーフレームで動かす先頭のレイヤーを置く
- その下に、上の式を書いたレイヤーを1つ作る
- 式を書いたレイヤーを Ctrl+D(Macは Command+D)で複製していく
複製するたびに、1つ前のレイヤーからさらに0.1秒遅れて動きます。
2026年10月15日に、1920×1080・30fpsの別のコンポジションで、この式を書いた追従レイヤーを1枚作り、タイムラインで選んで Ctrl+D を2回押しました。
先頭(1番目)は0秒 [200, 540] から1秒 [1200, 540] へ動く直線のキーフレームで、4枚とも同じ静止した親につないでいます。
1秒の時点のXは、上から1200、1100、1000、900で、Yはすべて540でした。

複製した2枚も同じ式のままで、それぞれが1つ上のレイヤーを0.1秒遅れで追っていました。
追従レイヤーの直上にほかのレイヤーを挿入したり並べ替えたりすると、index – 1が指す相手も変わります。
2枚目の追従レイヤーを3番目に移すと、追う相手が先頭から1つ上の追従レイヤーに変わり、1秒の時点のXは1100から1000に変わりました。
この並べ替えはタイムラインのドラッグでは行っていないため、ドラッグで並べ替える操作は確認に含めていません。
指定時刻の値を使う
valueAtTime(0)0秒のときの値を返すので、動きの途中でも「最初の位置」を基準にできます。
レイヤーが始まった時間の値を使いたいときは、inPoint を使います。
valueAtTime(inPoint)2026年10月15日に、スライダー制御のエフェクトで、この2つの式を確かめました。
スライダーには0秒で0、1秒で100のキーフレームを付け、レイヤーの開始(inPoint)を0.5秒にしています。
0.5秒から2.5秒までの6つの時刻で調べると、valueAtTime(0) はいつも0、valueAtTime(inPoint) はいつも50でした。
valueAtTime(0) は、レイヤーが始まる0.5秒より前の、0秒のキーフレームの値を返しました。
キーフレームの値をランダムに選ぶ
random(4) は整数のキー番号ではなく、0以上4未満の時刻を返します。途中の時刻ではキーフレーム間の補間値を取得する場合があります。キーに保存した値を1つ選んで固定するには、次の式を使います。
var result = value;
if (numKeys > 0) {
seedRandom(index, true);
var n = Math.min(numKeys, Math.floor(random(numKeys)) + 1);
result = key(n).value;
}
result;2026年10月15日に、0秒・1秒・2秒・3秒に10・20・30・40のキーフレームを付けたスライダーで、この式を試しました。
0.5秒から2.5秒までの6つの時刻で、値はいつも同じキーの値(このレイヤーでは10)でした。
どのキーが選ばれるかはレイヤーやプロパティによって変わるため、10になるとは限りません。
キーフレームのないスライダーでは、元の値(42)のまま変わりませんでした。
比べるために valueAtTime(random(4)) を試すと、1秒の時点で22.27になるなど、時刻ごとにキーの値ではない途中の値になりました。
うまくいかないとき
- 遅れない:先頭のレイヤーの動きがキーフレームで付いているかを見る(動いていないと同じ値が返る)
- エラーになる:レイヤー名が式と同じかを見る。
index - 1のときは、いちばん上のレイヤーに式を書いていないかを見る - 最初だけ位置がおかしい:遅らせた時間が最初のキーフレームより前になる間は、最初のキーフレームの値のまま止まる
ほかのプロパティに合わせて値を変える書き方は、After Effectsのlinear・easeで値を変換するエクスプレッションで紹介しています。
追従とキー選択の練習
1920×1080の練習コンポジションに、同じ親を持つ2Dレイヤー「先頭」と追従側を作ります。
先頭の位置は0秒 [200, 540]、1秒 [1200, 540] の直線キーです。
追従側だけに0.2秒遅れる式を貼ると、1秒で [1000, 540]、80ピクセル下げる式では [1000, 620] になります。
2026年10月15日に試した結果も、この値と同じでした(上の「位置をずらして並べる」の節)。
2026年10月13日に、After Effectsの画面で、0.4秒遅れて追う動きを確認しました。
2026年10月15日には、0.2秒遅れと80ピクセルずらす式、複製で順番に遅れる式、valueAtTime(0) と valueAtTime(inPoint)、キーの値を選ぶ式を確かめました。
上のレイヤーを追う式は、indexが1なら元の値を返します。
複製後にタイムラインの順番を変えると参照先も変わります。
1つ上のレイヤーと次元・親を揃えてから確認します。
キー選択の例では seedRandom(index, true) により時間を変えても選択を固定します。
レイヤー番号を変えると選ぶキーも変わる場合があります。
戻すときは追従側の式を無効にします。
原本の先頭キーを削除しないでください。
式の有無を比較するため、追従前の位置とレイヤーの並びも保存しておきます。
READMEの貼付先を確認し、1つずつ練習用プロパティに使います。
ZIPに入っているファイルそのものを、After Effectsで読み込む確認は含めていません。
上のレイヤーを1秒遅れで追う例と旧記事の画面
「上のレイヤーと同じ動きをN秒遅れで追従する」記事の内容を、このページに統合しました。上の複製手順で遅延を1秒にする場合は、追従側の「位置」に次の式を入力します。先頭はキーフレームで動かし、追従側と同じ親・2D/3Dの条件に揃えてください。
var result = value;
if (index > 1) {
result = thisComp.layer(index - 1).transform.position.valueAtTime(time - 1);
}
result;
追従側をCtrl+D(MacはCommand+D)で複製すると、それぞれが1つ上のレイヤーより1秒ずつ遅れます。並べ替えると参照先も変わります。最初のキーフレームより前を参照する間は、最初のキーの値になります。


統合元の参考出典:ワークスコーポレーション掲載ページ。今回の式は先頭レイヤーのガードを加えた記述です。AE本体の動作確認は、このページの検証範囲の記載を参照してください。
まとめ
- valueAtTime(t) で、指定した秒の値を取り出せる
time - 0.2と書くと、0.2秒前の値で遅れて追いかけるindex - 1を使うと、複製するだけで順番に遅れる- valueAtTime(0) や valueAtTime(inPoint) で最初の値を使える
参考:Adobe「Expression language reference」(2026年10月3日に公式資料を確認)。
2026年10月15日に、0.2秒遅れ・80ピクセルずらす式・複製による連鎖・指定時刻の値・キーの選択をWindows 11 ProのAfter Effects 26.5.0の画面で確かめ、該当の節に追記しました(Adobe公式の説明も同じ日に確認)。
よくある質問:After EffectsのvalueAtTimeで遅れて追従させるとき
valueAtTimeは、何をするエクスプレッションですか?
プロパティの「指定した時間の値」を取り出します。時間は秒で指定します。timeはいまの時間なので、time - 0.2と書くと「0.2秒前の値」になります。今より少し前の値を使えば、別のレイヤーの動きを遅れて追いかける動きが作れます。
追いかけるレイヤーの式は、どこに貼りますか?
追従側の「位置」に貼ります。先頭自身には貼りません。回転や不透明度へ使う場合は、参照元のtransform.positionも対応するプロパティに変更します。同じ親・次元のレイヤーで試してください。
追いかけるレイヤーが先頭と重なって1つに見えるときは?
足し算で少しずらします。記事の例では、横を変えず、下に80ピクセルずらします。貼付先も参照元と同じ2D/3Dにし、「次元に分割」したX位置・Y位置には配列を返すこの式を貼らないでください。
複製するだけで、順番に遅れさせるには?
indexを使って1つ上のレイヤーを追いかける式を、追従側の「位置」に入力します。追従側をCtrl+D(MacはCommand+D)で複製すると、それぞれが1つ上のレイヤーより遅れます。タイムラインで並べ替えると参照先も変わります。
まったく遅れて動かないときは?
先頭のレイヤーの動きがキーフレームで付いているかを見てください。キーフレームも他の式もなく、値を固定したプロパティでは、時間をずらしても変わりません。
エラーになるときは?
レイヤー名が式と同じかを確認します。index - 1の式のときは、いちばん上のレイヤーに式を書いていないかも確認してください。
最初だけ位置がおかしいのはなぜですか?
遅らせた時間が最初のキーフレームより前になる間は、最初のキーフレームの値のまま止まります。
この記事の式は、実機で確認済みですか?
この記事は、Adobe公式の「Expression language reference」の説明(2026年10月3日に公式資料を確認)にもとづいています。2026年10月13日に0.4秒遅れて追う式を、15日に0.2秒遅れる式、80ピクセルずらす式(2Dと3D)、複製で順番に遅れる式、valueAtTime(0) と valueAtTime(inPoint)、キーの値を選ぶ式を、Windows 11 Pro上のAfter Effects 26.5.0で確かめました。どれも同じ静止した親を持つレイヤーでの結果で、親が動く場合、2Dと3Dの混在、1秒遅れの例、旧版のAfter Effectsは確認していません。「上のレイヤーを1秒遅れで追う例と旧記事の画面」の節の画面は統合元の記事のもので、現在のAEで撮影・再検証した画面ではありません。
