Amazonで商品を見るセール会場へ

Photoshop│図形を数値入力で正確に移動させる方法|自由変形とjsxスクリプト

図形を指定した位置へ置くには、自由変形のX・Yへ座標を入力します。

今の位置から右へ10px動かす場合は、相対位置へ切り替えてXに10px、Yに0pxを入力します。

標準機能の操作と、移動量を入力するJSXスクリプトの2つを紹介します。

実機記録はWindows版Photoshop 27.11.0での相対移動のみで、絶対座標やJSXのPhotoshop実行は未検証です。

目次

自由変形時の数値入力で図形を移動させる方法

追加スクリプトを使わず、標準の自由変形で位置を指定する方法です。

以下の手順で、座標を直接指定して移動します。

  1. 移動させたいレイヤーを選択する
  2. Ctrl + T(Macの場合はCmd + T)で自由変形モードにする
  3. 画面上部のオプションバーにある座標入力欄にX座標とY座標を入力する
  4. Enterキーで確定する

次の画像は旧版の操作画面です。

後述の27.11.0の実機記録とは、画面の配置を区別してください。

自由変形モード時に画面上部のオプションバーで座標入力欄にX座標とY座標を指定する操作画面。

Photoshop 27.11.0で試したときは、XとYの欄に図形の中心位置が表示されました。

絶対座標は選んでいる変形の基準点に対応するため、左上の座標を指定したい場合は基準点も確認してください。

自由変形のオプションバーでは、相対位置のボタンに切り替えることで、現在位置からの移動量も入力できます。

右へ10px移動する場合は、相対位置を選び、単位をpxとしてXに10、Yに0を指定します。

絶対座標の欄へ10を入れる操作とは異なるため、設定を確認してください。

操作と基準点はAdobe公式の自由変形ヘルプでも説明されています。

変形を確定する前なら、Escで取り消せます。

入力後は変形の枠が消えたことを確認し、位置だけでなくW・Hが意図せず変わっていないかも見ます。

相対位置で右へ10px動かした結果(2026年10月16日)

Windows 11 Pro(10.0.26200)のAdobe Photoshop 27.11.0(日本語表示)で、相対位置での移動を試しました。

入力は、自作の200×120pxの白いPSD(72ppi、RGB、8bit)に、40×30pxの青い四角を置いた画素のレイヤーです。

四角の左上は、横20px、縦30pxの位置です。

PSDの用意はスクリプトで行い、作る操作は確認に含めていません。

レイヤーを選んでCtrl + Tキーを押すと、オプションバーのXとYの欄には、四角の中心の位置(Xは40、Yは45)が表示されました。

XとYの欄の間にある三角形のボタン(相対位置)を押すと、XとYはどちらも0.00pxになりました。

Xの欄に10px、Yの欄に0pxを入れ、W(幅)とH(高さ)が100%のままなのを確かめました。

最初の入力では欄の値が全部置き換わらなかったため、Ctrl + Aキーで欄の値を全部選んでから入力し直しました。

Photoshopの自由変形で相対位置のボタンを押し、Xに10px、Yに0pxを入れたオプションバーの画面
2026-10-16撮影。Adobe Photoshop 27.11.0 (20260929.r.26 8c16e56)、Windows 11 Pro (10.0.26200)。自作のPSDで、自由変形の相対位置のボタンを押し、Xに10px、Yに0pxを入れた実機画面。WとHは100%のまま(ファイルのタブとパネル名の行を切り取り。別の検証用ファイルのタブが出ていたため)。

入力欄で1回目のEnterキーを押すと、Xの値が+10.00pxの表示に整えられ、変形の枠は残りました。

もう一度Enterキーを押すと、変形が確定して枠が消えました。

Enterキーを2回押して自由変形を確定し、変形の枠が消えたPhotoshopの画面
2026-10-16撮影。Adobe Photoshop 27.11.0 (20260929.r.26 8c16e56)、Windows 11 Pro (10.0.26200)。Enterキーを2回押して変形を確定した後の実機画面。変形の枠が消えている。移動量は画面ではなく、レイヤーの範囲の読み取りと書き出した画像で確かめた(ファイルのタブとパネル名の行を切り取り。別の検証用ファイルのタブが出ていたため)。

変形の前後で、レイヤーの範囲をスクリプトで読み取り、画像に書き出して比べた結果は次のとおりです。

確かめたこと移動前移動後
四角の左上横20px、縦30px横30px、縦30px
四角の右下横60px、縦60px横70px、縦60px
四角の大きさ40×30px40×30px
青い画素の数1,2001,200

四角は大きさを変えずに右へ10px動き、縦には動きませんでした。

この結果は、1つの画素のレイヤーを相対位置で動かした場合のものです。

絶対座標の欄に値を入れて動かす操作、小数や負の値、グループ、複数のレイヤー、基準点を変えた場合、シェイプのレイヤーは確かめていません。

記事のスクリプトも、Photoshopでは実行していません。

スポンサーリンク

スクリプトを使って数値入力で図形を移動させる方法

同じ操作を繰り返す場合は、次のJSXで移動量をpx指定する方法もあります。

このJSXは模擬環境だけで確認し、Photoshopでの実行は未検証です。

PSDのコピーで試し、移動対象を1つ選んでから実行してください。

標準機能だけで足りる場合は導入不要です。

JSXはPhotoshopで実行するJavaScriptファイルで、通常のウェブブラウザへ貼り付けるコードではありません。

保存先を選んで実行する操作はAdobe公式のスクリプト実行手順にあります。

手順

  1. 以下のコードをUTF-8のテキストファイルpixelMove.jsxとして保存する
  2. 「ファイル」→「スクリプト」→「参照」から保存したファイルを選ぶ
  3. ダイアログが表示されたら、単位を付けずに移動距離を入力する(右10pxなら横に10、縦に0)
  4. 移動をクリックすると、指定したピクセル数だけ対象が移動する

次のダイアログ画像は旧版で、掲載コードの画面とは項目が異なります。

掲載コードには「中心から」のチェックはなく、横・縦の移動量と[移動][キャンセル]を使います。

スクリプト実行時に表示されるダイアログでX方向とY方向の移動距離を入力する設定画面。

pixelMove.jsx

このスクリプトを実行すると入力ダイアログが表示され、X方向とY方向それぞれの移動距離をピクセル単位で入力できます。

[移動]をクリックすると、入力した数値の分だけ選択中のレイヤーが移動します。

対象はアクティブなレイヤーまたはレイヤーグループ1つです。

複数選択したレイヤーを個別に処理するコードではありません。

(function () {
    if (!app.documents.length) {
        alert("ドキュメントを開き、移動するレイヤーを選択してください。");
        return;
    }
    var layer = app.activeDocument.activeLayer;
    var dialog = new Window("dialog", "レイヤーの移動距離(px)");
    dialog.orientation = "column";
    dialog.alignChildren = "left";
    function field(label) {
        var row = dialog.add("group");
        row.add("statictext", undefined, label);
        return row.add("edittext", [0, 0, 100, 25], "0");
    }
    var x = field("横:右が+、左が-");
    var y = field("縦:下が+、上が-");
    var buttons = dialog.add("group");
    var ok = buttons.add("button", undefined, "移動", {name: "ok"});
    buttons.add("button", undefined, "キャンセル", {name: "cancel"});
    ok.onClick = function () {
        function number(text) {
            text = String(text).replace(/^\s+|\s+$/g, "");
            if (!/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)$/.test(text)) return null;
            var value = Number(text);
            return isFinite(value) ? value : null;
        }
        var dx = number(x.text);
        var dy = number(y.text);
        if (dx === null || dy === null) {
            alert("単位を付けず、有限の数値を両方の欄に入力してください。");
            return;
        }
        try {
            layer.translate(new UnitValue(dx, "px"), new UnitValue(dy, "px"));
            dialog.close(1);
        } catch (error) {
            alert("移動できませんでした。レイヤーのロックや選択状態を確認してください。\n" + error.message);
        }
    };
    dialog.center();
    x.active = true;
    dialog.show();
}());

入力できない・移動しない場合の確認

以下は掲載コードの処理に基づく説明で、Photoshop上で再現したエラーの記録ではありません。

  • 数値エラー:10pxや空欄は受け付けないため、半角で横に10、縦に0のように入力します。
  • ドキュメント未選択:PSDのコピーを開き、対象レイヤーを選んでから実行し直します。
  • 移動エラー:対象とロック状態を確認し、解除してよいレイヤーか判断してから試します。
  • ファイルが選べない:名前がpixelMove.jsx.txtになっていないか、拡張子を確認します。

コードでは右・下が正、左・上が負で、小数も数値として受け付けます。

ただし負数・小数による移動結果や各レイヤー種別の動作は、Photoshopでは未検証です。

[キャンセル]なら移動を実行せず閉じる設計です。

結果が意図と違う場合は元のPSDへ上書きせず、コピー上で位置と大きさを確認してください。

Photoshopの他の操作方法については、以下の関連記事も参照してください。

この記事で紹介しているコードは、GitHubのMOTOKI-LLC/cg-method-codeにもまとめています。

GitHubのファイル名は01.jsで、2026年10月25日に空行を除く各行が本文コードと一致することを確認しました。

シェイプや塗りを作る方法は、ほかにも書いています。

スポンサーリンク

まとめ

  • 絶対座標での移動:Ctrl + Tで自由変形モードにして座標を入力
  • 相対的な移動:自由変形の相対位置、またはスクリプトで移動量を指定

まずはコピーしたPSDで、標準機能の相対位置から10pxの移動を確認してください。

目的に応じて扱いやすい方法を使い分けてください。

右・下は正、左・上は負の値です。

2026年10月25日にAdobe公式の操作説明と公開コードを照合しました。

今回のPhotoshop実機再試験は行っておらず、上記の実測は2026年10月16日の記録です。

旧記事での模擬確認は、数値入力・キャンセル・ドキュメント未選択・移動エラーの処理を対象としたものです。

現行Photoshop上での実行は未検証なので、複製したPSDで結果を確認してから作業用ファイルに使ってください。

次に学ぶ・作業環境を選ぶ

学習を続けたい方や、作業環境を整えたい方は、目的に合うガイドをご覧ください。

Photoshopのおすすめ書籍

動作要件とPCの確認項目

周辺機器の優先度

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次