画像の中心をグリッドに並べる方法と、横一列で画像の端のすき間を一定にする方法を紹介します。
寸法が違う画像では中心の間隔が同じでも端のすき間は同じになりません。
実機確認日:2026年10月14日。Windows 11 Pro(10.0.26200)・After Effects 26.5(Build 89)・JavaScriptエクスプレッションエンジンで確認しました。
本文の2つの式をAEの位置プロパティに適用し、960×540・24fpsのコンポで座標と描画を照合しました。検証用の不透明PNGを使い、グリッド配置、幅違い画像の余白、無効値と式の無効化を確認しています。
6枚と制御レイヤーの準備
960×540の練習コンポへ200×120の画像を6枚置き、画像_1〜画像_6という名前にします。
すべて2D、親なし、回転0、スケール100%、アンカーポイントは各画像の中央です。
ヌルを1枚作りadjustと名付けます。
ヌルを選択し、「エフェクト」→「エクスプレッション制御」→「スライダー制御」を3つ追加します。各エフェクトの名前を「列数」「横間隔」「縦間隔」に変更し、値を順に3・240・160に設定します。式はこの名前を参照するため、数字だけを変えても動きません。
6枚すべての「位置」へ次の式を貼ります。
Windowsでは位置のストップウォッチをAltを押しながらクリックし、式を入力します。「次元に分割」を使っている場合は解除し、X位置・Y位置へ個別に貼らず、2Dレイヤーの「位置」へ貼ってください。レイヤー名は重複させず、画像_1〜画像_6と完全に一致させます。
中心を同じ間隔で並べる式
var names = ["画像_1", "画像_2", "画像_3", "画像_4", "画像_5", "画像_6"];
var control = thisComp.layer("adjust");
var columns = control.effect("列数")(1).value;
var pitchX = control.effect("横間隔")(1).value;
var pitchY = control.effect("縦間隔")(1).value;
var result = value;
var order = -1;
for (var i = 0; i < names.length; i++) if (names[i] == thisLayer.name) order = i;
if (order >= 0 && isFinite(columns) && columns >= 1 &&
isFinite(pitchX) && pitchX > 0 && isFinite(pitchY) && pitchY > 0) {
columns = Math.min(names.length, Math.floor(columns));
var rows = Math.ceil(names.length / columns);
var col = order % columns;
var row = Math.floor(order / columns);
var x = thisComp.width / 2 + (col - (columns - 1) / 2) * pitchX;
var y = thisComp.height / 2 + (row - (rows - 1) / 2) * pitchY;
result = [x, y];
}
result;
| 入力・条件 | AE 26.5での結果 | 確認点 |
|---|---|---|
| 列数3/画像_1 | [240,190] | 1行1列 |
| 列数3/画像_3 | [720,190] | 1行3列 |
| 列数3/画像_4 | [240,350] | 2行1列 |
| 列数3/画像_6 | [720,350] | 2行3列 |
| 列数2/画像_6 | [600,430] | 3行2列 |
表は実機で取得した位置のX・Yです。3列ではXが240・480・720、Yが190・350となり、2列では画像_6が[600,430]になりました。横間隔と縦間隔は中心間の距離です。
200×120の画像なら、240・160の設定で上下左右の端のすき間は40になります。

200×120の画像6枚をこのコンポの一列に収める例では、先に全画像のスケールを50%へそろえます。表示寸法が100×60になったら、縦一列は列数1・縦間隔80、横一列は列数6・横間隔120にします。どちらも画像間のすき間は20pxです。
スケール100%のまま縦間隔80にすると、高さ120に対して間隔が40px足りず重なります。実機でも中心Yは70・150・230・310・390・470のままで、式による自動縮小はありません。重なりをなくすには表示寸法以下の間隔にせず、画像の縮小またはコンポの拡大を行います。
列数の小数は切り捨て、6を超える値は6へ制限します。
列数は1未満、間隔は0以下、または一覧にないレイヤー名の場合、式を適用する前の位置を返します。実機では列数0・横間隔0・画像名の変更をそれぞれ試し、元の[111,222]に戻ることを確認しました。adjustやスライダー自体が見つからない場合は参照エラーになるため、この判定では回避できません。
namesの順序が配置の順序です。
タイムラインに別の制御レイヤーを挿入しても順番は変わらず、枚数を変える場合はnamesも実際の画像名へ変更します。
横一列で端のすき間を一定にする式
寸法やスケールが違う画像を横一列に並べる場合は、6枚の位置の式を次へ置き換えます。
引き続き画像・プリコンポだけを使い、2D・親なし・回転0・中央アンカーに揃えます。
var names = ["画像_1", "画像_2", "画像_3", "画像_4", "画像_5", "画像_6"];
var gap = 40;
var result = value;
var order = -1;
var widths = [];
var total = gap * (names.length - 1);
for (var i = 0; i < names.length; i++) {
if (names[i] == thisLayer.name) order = i;
var layer = thisComp.layer(names[i]);
widths[i] = layer.width * Math.abs(layer.scale[0]) / 100;
total += widths[i];
}
if (order >= 0 && gap >= 0) {
var x = thisComp.width / 2 - total / 2;
for (var j = 0; j < order; j++) x += widths[j] + gap;
result = [x + widths[order] / 2, thisComp.height / 2];
}
result;
gap=40は端と端のすき間です。
画像のwidthは元の幅なので、表示幅はwidthにXスケールの絶対値を掛けて100で割って求めます。
例えば元幅100・200を両方50%にすると表示幅は50・100です。
2枚の中心間隔は25+40+50=115となり、元の幅だけを使った配置と異なります。
実機では元幅100・200・160・240・120・180px、高さ120pxのPNGを50%にして6枚配置しました。中心Xは155・270・400・540・670・785、Yはすべて270。隣り合う5か所の端のすき間はすべて40pxでした。1枚目のXスケールを−50%に反転しても、この座標は変わりませんでした。

この式がそろえるのは素材の矩形の端です。PNGに透明な余白があると、絵柄どうしの見えるすき間はそろいません。マスク・回転・文字の境界・遠近・親のスケールを含む見かけの端も計算範囲外です。
計算した並びがコンポより広い場合は、スケールやgapを下げるかコンポを広げます。
並べ方と寸法に合わせた設定
画像の寸法と、そろえたい基準に合わせて、次の順に選びます。
- 同じ寸法の画像を、行と列のグリッドで並べたい:「中心を同じ間隔で並べる式」を使います。横間隔と縦間隔は、画像の中心間の距離です。
- 寸法やスケールが違う画像を、横一列で端のすき間をそろえたい:「横一列で端のすき間を一定にする式」に置き換えます。gapは端と端のすき間です。
- 縦一列にしたい:200×120の6枚ならスケール50%、列数1、縦間隔80で、縦のすき間が20pxになります。
- 横一列にしたい:200×120の6枚ならスケール50%、列数6、横間隔120で、横のすき間が20pxになります。
- 画像が大きくて重なる:寸法やスケールも合わせます。
寸法が違う画像では、中心の間隔が同じでも端のすき間は同じになりません。端をそろえたい場合は、2つ目の式を選んでください。
動かないとき・戻し方
参照エラーならadjustと各画像の名前、3つのエフェクト名を確認します。
元の位置のままならnamesの完全一致と列数・間隔を確認します。
旧記事はマーカーコメントをevalで評価する構成でした。
今回の練習は本文のコードを直接位置へ貼るため、マーカー内のコードや画像から文字を転記する必要はありません。
変更前にコンポを複製し、各位置・スケール・アンカー・親とキーを控えます。
戻すときは式を無効にし、準備で変更した値を控えた状態へ戻します。
今回の検証では、位置[111,222]に式を適用した画像の式を無効にすると、[111,222]へ戻りました。これは式の有効・無効の確認です。スケールなどの手動変更まで元に戻す操作ではないため、作業前のコンポを残しておきます。
よくある質問:画像の等間隔配置で迷ったときのチェックリスト
中心の間隔と端のすき間は何が違いますか?
中心の間隔は、画像の中心から中心までの距離です。端のすき間は、隣り合う画像の端と端の距離です。たとえば200×120の画像なら、240・160の設定で上下左右の端のすき間は40になります。
式を貼ったら参照エラーになるときは?
ヌルのadjustと各画像の名前、3つのスライダー制御のエフェクト名を確認します。名前は完全に一致している必要があります。
式を貼っても元の位置のままのときは?
namesの完全一致と、列数・間隔の値を確認します。列数が1未満、間隔が0以下、一覧にないレイヤー名の場合は、元の位置を返します。adjustやスライダーの名前が違う場合は参照エラーを解消してください。
画像の枚数や順番を変えたいときは?
namesの順序が配置の順序です。タイムラインに別の制御レイヤーを挿入しても順番は変わりません。枚数を変える場合は、namesも実際の画像名へ変更します。
スケールを変えた画像でも端のすき間はそろいますか?
横一列用の式では、表示幅を、元の幅にXスケールの絶対値を掛けて100で割って求めます。ただしこの式がそろえるのは素材の矩形の端です。PNGに透明な余白があると、絵柄どうしの見えるすき間はそろいません。マスク・回転・文字の境界・遠近・親のスケールを含む見かけの端も計算範囲外です。
試したあとに元へ戻すには?
変更前にコンポを複製し、各位置・スケール・アンカー・親とキーを控えておきます。戻すときは式を無効にし、準備で変更した値を控えた状態へ戻します。
旧版の参考画像
次の画像は既存記事の参考資料です。
この節の画像は旧方式の記録です。上の2枚が2026年10月14日に本文の式で撮影した画面です。






関連する操作
| やりたいこと | 最初に読む記事 |
|---|---|
| カメラとの距離で変える | 距離とカメラ制御 |
| RGBをずらして合成する | 色収差の基本設定 |
| 横長・縦長を切り替える | 画面サイズと表示切替 |
| 再生位置の曲名を出す | 曲名と対象レイヤー |
参照資料
Adobeのエクスプレッション言語資料を2026年10月14日に確認しました。レイヤーのwidthはsource.widthと同じ素材幅、scaleはスケール値です。本文の横並び式は、この幅にXスケールの絶対値を掛けて表示幅を計算しています。
旧版の参考コード・関連記事
旧版の参考コードは本文の練習と対象・設定が異なる場合があります。
今回の操作は本文のコードを使います。






検証範囲は上記のWindows環境と不透明PNGです。Mac・別バージョン・3Dレイヤー・親付きレイヤーでの動作やレンダリング書き出しは検証していません。
