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

Photoshopスクリプト(jsx)│選択したレイヤーサイズのシェイプを作成する方法

Photoshopで選択したレイヤーのサイズを取得し、同サイズのシェイプを作成するスクリプトを紹介します。

このスクリプトを使えば、選択レイヤーと同じ大きさのシェイプをすばやく作成できます。

2026年10月17日に、Adobe Photoshop 2026(27.11.0)とWindows 11 Pro(10.0.26200)で、この記事の2つのコードを[ファイル]→[スクリプト]→[参照]から実行して確かめました。

解像度が72ppiでない文書では、以前のコードがシェイプを違う位置と大きさで作ったため、コードを直しました。

直した版も同じ方法で実行し、選んだレイヤーと同じ位置・大きさになることを確かめています。

選択したレイヤーと同じ大きさのシェイプをすばやく作成するPhotoshopスクリプトの実行例。
Photoshopで選択したレイヤーサイズのシェイプを作成するスクリプトの実行例。
目次

選択しているレイヤーの座標を取得する方法

Photoshopのboundsプロパティを使用すると、アクティブなレイヤーを囲む長方形の左・上・右・下の値を取得できます。

Photoshopで選択しているレイヤーの四隅の座標を示す概念。

レイヤーの座標を取得するコード

layObj = activeDocument.activeLayer.bounds;
x1 = layObj[0];
y1 = layObj[1];
x2 = layObj[2];
y2 = layObj[3];
alert("(" + x1 + "," + y1 + ")-(" + x2 + "," + y2 + ")");

このコードを実行すると、レイヤーの左上座標(x1, y1)と右下座標(x2, y2)がダイアログで表示されます。

コードを実行してレイヤーの左上座標と右下座標がダイアログで表示された画面。

2026年10月17日に、このコードを書き換えずに保存して[ファイル]→[スクリプト]→[参照]から実行すると、「スクリプト警告」の窓に(137 px,91 px)-(401 px,263 px)と表示されました。

選んでいたのは、640×400pxの練習文書にある、左上が(137, 91)、右下が(401, 263)の長方形のレイヤーです。

Photoshopのスクリプト警告の窓に (137 px,91 px)-(401 px,263 px) と表示された画面
2026-10-17撮影。Adobe Photoshop 2026 (27.11.0)、Windows 11 Pro (10.0.26200)。座標を取得するコードを[参照]から実行したときの表示(窓の周りだけ切り出し)。

値には定規の単位が付きます(この例は定規の単位がピクセルの状態です)。

スポンサーリンク

選択したレイヤーのサイズのシェイプを作成するスクリプト

以下のスクリプトは、アクティブなレイヤーのboundsを囲む長方形のシェイプを新規作成します。透明部分を除いた輪郭をなぞる処理や、回転した形の四隅をそのまま再現する処理ではありません。文書を開き、内容のあるレイヤー1つを選んで、複製した文書で試してください。

STEP.1 スクリプトを配置

  1. CreateShapeFromLayer.jsxというファイル名で保存します。

Photoshopのほかの操作方法は、関連記事にまとめています。

下のコードは、2026年10月17日に、文書の解像度と定規の単位に左右されないように直した版です。

function DrawShape() {
    var doc = app.activeDocument;
    var y = arguments.length;
    var i = 0;

    var lineArray = [];
    for (i = 0; i < y; i++) {
        lineArray[i] = new PathPointInfo;
        lineArray[i].kind = PointKind.CORNERPOINT;
        lineArray[i].anchor = arguments[i];
        lineArray[i].leftDirection = lineArray[i].anchor;
        lineArray[i].rightDirection = lineArray[i].anchor;
    }

    var lineSubPathArray = new SubPathInfo();
    lineSubPathArray.closed = true;
    lineSubPathArray.operation = ShapeOperation.SHAPEADD;
    lineSubPathArray.entireSubPath = lineArray;
    var myPathItem = doc.pathItems.add("myPath", [lineSubPathArray]);

    var desc88 = new ActionDescriptor();
    var ref60 = new ActionReference();
    ref60.putClass(stringIDToTypeID("contentLayer"));
    desc88.putReference(charIDToTypeID("null"), ref60);
    var desc89 = new ActionDescriptor();
    var desc90 = new ActionDescriptor();
    var desc91 = new ActionDescriptor();
    desc91.putDouble(charIDToTypeID("Rd  "), 255.000000); // R
    desc91.putDouble(charIDToTypeID("Grn "), 0.000000); // G
    desc91.putDouble(charIDToTypeID("Bl  "), 128.000000); // B
    var id481 = charIDToTypeID("RGBC");
    desc90.putObject(charIDToTypeID("Clr "), id481, desc91);
    desc89.putObject(charIDToTypeID("Type"), stringIDToTypeID("solidColorLayer"), desc90);
    desc88.putObject(charIDToTypeID("Usng"), stringIDToTypeID("contentLayer"), desc89);
    executeAction(charIDToTypeID("Mk  "), desc88, DialogModes.NO);

    myPathItem.remove();
}

function GetImageSize() {
    var k = 72 / activeDocument.resolution;
    layObj = activeDocument.activeLayer.bounds;
    x1 = layObj[0].as("px") * k;
    y1 = layObj[1].as("px") * k;
    x2 = layObj[2].as("px") * k;
    y2 = layObj[3].as("px") * k;
}

var savedUnits = app.preferences.rulerUnits;
app.preferences.rulerUnits = Units.PIXELS;
try {
    GetImageSize();
    DrawShape([x1, y1], [x1, y2], [x2, y2], [x2, y1]);
} finally {
    app.preferences.rulerUnits = savedUnits;
}

以前のコードからの変更は2か所です。

1つ目は、レイヤーの座標をas("px")でピクセルの数値として読み、72 / activeDocument.resolutionを掛けてからパスの点にしている点です。

300ppiの文書で以前のコードを実行すると、137pxを渡した点が約571pxの位置にできました(倍率は300÷72)。

2つ目は、実行している間だけ定規の単位をピクセルにし、終わったら元の単位に戻す点です。

以前のコードはparseIntで数値にしていたため、定規の単位がセンチのときは「4.83 cm」が「4」になっていました。

  1. 所定のスクリプトフォルダーへファイルを配置します。
C:\Program Files\Adobe\Adobe Photoshop 2026\Presets\Scripts\
  1. Photoshopを再起動します。

Photoshop 2026では、上のフォルダーがあることを確かめました。

フォルダー名には版の年が入るので、使っている版に合わせて読み替えてください。

Program Filesの中なので、保存するときに管理者の権限を求められることがあります。

この記事の確認ではフォルダーに置かず、[ファイル]→[スクリプト]→[参照]から実行しました。

フォルダーに置いた後に[スクリプト]のメニューに名前が出ることは、確かめていません。

STEP.2 スクリプトを実行

  1. シェイプを作成したいレイヤーを選択します。
  2. [ファイル] → [スクリプト] → [CreateShapeFromLayer]を実行します。
  3. 選択したレイヤーと同じサイズのシェイプが作成されます。

フォルダーに置いていない場合は、2の代わりに[ファイル]→[スクリプト]→[参照]を選び、保存したファイルを指定して[読み込み]を押します。

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

Photoshop 2026で実行して確かめた結果

2026年10月17日に、Adobe Photoshop 2026(27.11.0)とWindows 11 Pro(10.0.26200)で確かめました。

練習用に640×400px・白背景の文書を作り、「BOX」というレイヤーに、左上が(137, 91)、右下が(401, 263)の青い長方形を塗りました。

練習文書はスクリプトで作ったので、作る操作は確認に含めていません。

72ppiの文書で実行した結果

「BOX」を選んだ状態で、以前のコードを書き換えずに[ファイル]→[スクリプト]→[参照]から実行しました。

Photoshopで青い長方形のレイヤー「BOX」を選んだ72ppiの練習文書
2026-10-17撮影。Adobe Photoshop 2026 (27.11.0)、Windows 11 Pro (10.0.26200)。72ppiの練習文書で「BOX」を選んだ、スクリプトを実行する前の画面。

実行すると、「BOX」の上に「べた塗り 1」というレイヤーができ、同じ位置にピンクの長方形が重なりました。

スクリプトの実行後に「BOX」の上へピンクの「べた塗り 1」ができたPhotoshopの画面
2026-10-17撮影。Adobe Photoshop 2026 (27.11.0)、Windows 11 Pro (10.0.26200)。以前のコードを書き換えずに[ファイル]→[スクリプト]→[参照]から実行した後の画面。「BOX」と同じ範囲にシェイプができた。

「べた塗り 1」はベクトルマスクの付いた塗りつぶしレイヤーで、範囲は「BOX」と同じ左上(137, 91)・右下(401, 263)でした。

色はコードのR・G・Bの行で決まり、この記事のコードではR255・G0・B128です。

ヒストリーには「パスを設定」「パスを保存」「新規カラー塗りつぶしレイヤー」「パスを削除」の4つが記録されました。

スクリプトが途中で作る「myPath」というパスは最後に消され、残ったのは新しいレイヤーのシェイプパスだけでした。

実行した後は、新しい「べた塗り 1」が選ばれた状態になります。

300ppiの文書では位置と大きさがずれた

同じ内容の文書を解像度300ppiで作って以前のコードを実行すると、シェイプは右下にずれ、大部分がカンバスの外に出ました。

300ppiの文書で以前のコードを実行し、ピンクのシェイプがカンバスの右下にずれたPhotoshopの画面
2026-10-17撮影。Adobe Photoshop 2026 (27.11.0)、Windows 11 Pro (10.0.26200)。300ppiの練習文書で以前のコードを実行した後の画面。シェイプが右下にずれ、大部分がカンバスの外に出た。

できたレイヤーの範囲は左上(570, 379)・右下(1671, 1096)で、元の座標の約4.17倍でした。

倍率が300÷72と一致するので、パスの点の座標が1/72インチ単位として扱われたと考えられます。

直した版を同じ300ppiの文書で実行すると、シェイプは「BOX」とぴったり重なりました。

300ppiの文書で直した版を実行し、ピンクのシェイプが「BOX」と重なったPhotoshopの画面
2026-10-17撮影。Adobe Photoshop 2026 (27.11.0)、Windows 11 Pro (10.0.26200)。300ppiの練習文書で直した版を[参照]から実行した後の画面。シェイプは「BOX」と同じ範囲にできた。

範囲は左上(137, 91)・右下(401, 263)で、「BOX」と同じでした。

定規の単位がセンチのときもずれた

定規の単位をセンチにした状態で、72ppiの文書に以前のコードを実行すると、カンバスの左上に小さなシェイプができました。

定規の単位はスクリプトで切り替えたので、[環境設定]で切り替える操作は確認に含めていません。

定規の単位をセンチにして以前のコードを実行し、カンバスの左上に小さなシェイプができたPhotoshopの画面
2026-10-17撮影。Adobe Photoshop 2026 (27.11.0)、Windows 11 Pro (10.0.26200)。定規の単位をセンチにした状態で、72ppiの練習文書に以前のコードを実行した後の画面。左上に小さなシェイプができた。

範囲は左上(4, 3)・右下(14, 9)で、座標の「4.83 cm」などがparseIntで切り捨てられた値でした。

直した版は、300ppiの文書で定規の単位をセンチにした状態でも範囲が「BOX」と同じになり、実行した後の定規の単位はセンチのままでした。

確かめていないこと

スクリプトフォルダーに置いて[スクリプト]のメニューから実行する方法と、メニューに出る名前は確かめていません。

試したのはピクセルのレイヤーを1つ選んだ場合だけで、文字・スマートオブジェクト・グループ・複数選択、効果の付いたレイヤー、座標に小数が出るレイヤーは試していません。

Macやほかの版での動作も確かめていません。

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

スポンサーリンク

まとめ

  • 選択したレイヤーのサイズを取得し、同サイズのシェイプを作成可能
  • boundsプロパティでレイヤーを囲む長方形の範囲を取得
  • スクリプトを実行するだけでシェイプが自動生成される

同サイズのシェイプ作成を自動化することで、UIデザインやWebデザインの作業を効率化できます。

よくある質問:選択したレイヤーと同じサイズのシェイプを作成する

このスクリプトでは何ができますか?

Photoshopで、選択したレイヤーのサイズを取得し、同じ大きさのシェイプを新しく自動生成できます。UIデザインやWebデザインの作業を効率化できます。

選択しているレイヤーの座標はどうやって取得しますか?

Photoshopのboundsプロパティを使用すると、アクティブなレイヤーを囲む長方形の左・上・右・下の値を取得できます。記事のコードを実行すると、レイヤーの左上座標(x1, y1)と右下座標(x2, y2)がダイアログで表示されます。

シェイプはどのサイズで作成されますか?

選択したレイヤーと同じサイズの新しいシェイプが作成されます。

2026年10月17日の確認では、72ppiと300ppiの文書で、直した版のシェイプはレイヤーと同じ範囲になりました。

以前のコードは、72ppiでない文書や、定規の単位がセンチなどピクセル以外のときに、位置と大きさがずれました。

スクリプトはどのように導入しますか?

記事のコードを「CreateShapeFromLayer.jsx」のファイル名で保存し、所定のスクリプトフォルダーへ配置します。配置後にPhotoshopを再起動してください。

Photoshop 2026のフォルダーはC:\Program Files\Adobe\Adobe Photoshop 2026\Presets\Scripts\です。

フォルダーに置かずに、[ファイル]→[スクリプト]→[参照]から実行することもできます。

どうやって実行しますか?

シェイプを作成したいレイヤーを選択し、[ファイル] → [スクリプト] → [CreateShapeFromLayer]を実行します。選択したレイヤーと同じサイズのシェイプが作成されます。

どんな作業に向いていますか?

同じサイズのシェイプ作成を自動化できるため、UIデザインやWebデザインの作業の効率化に向いています。

スクリプトのコードはどこで確認できますか?

記事内に掲載しているほか、GitHubのMOTOKI-LLC/cg-method-codeにもまとめています。

メニューの表示や名称が記事と違う場合はどうすればよいですか?

Photoshopのバージョンによってメニューの名称や配置が変わることがあります。最新の操作手順は、Adobeの公式情報で確認してください。

シェイプの位置や大きさがずれるのはなぜですか?

以前のコードは、文書の解像度が72ppiでないときや、定規の単位がセンチなどピクセル以外のときにずれました。

この記事のコードは2026年10月17日に直した版なので、コードを貼り直してから試してください。

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

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

Photoshopのおすすめ書籍

動作要件とPCの確認項目

周辺機器の優先度

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