スクショ1枚からIllustratorのワイヤーフレームをスクリプトで組み立てる
既存サイトを参考にワイヤーフレームを引き直す作業が、たまに発生します。四角とテキストを並べるだけなのに地味に時間がかかる。そこでスクリーンショットをClaudeに渡して、ExtendScriptを書かせてみました。
結論から言うと、1回目は必ずズレます。ただしズレるのは数値だけなので、直すのは速い。手で四角を並べるより早く終わりました。
環境はIllustrator 2026とPhotoshop 2026です。下記はPhotoshopの作成
なぜスクリプトなのか
画像生成AIにワイヤーフレームを描かせる手もありますが、出てくるのは画像なので、後から動かせません。Figmaのプラグインを書く方法もある。ただし環境構築が必要で、今回のような単発の作業には重すぎました。
ExtendScriptなら.jsxファイル1枚です。ファイル > スクリプト から流すだけで、編集可能なパスが出てきます。
自分にとって一番大きかったのは、レイアウトの数値が全部テキストで残ることでした。ズレたときにAIに直させる必要がなく、CONFIGの数字を書き換えれば済みます。会話を往復しなくていいぶん、結果的に速い。
全体の流れ
- 元になるスクリーンショットを用意する
- Claudeに画像とプロンプトを投げる
- 出てきたコードを
.jsxで保存する - Illustratorで ファイル > スクリプト > その他のスクリプト(Ctrl/Cmd + F12)
- 実行結果を見て数値を詰める
投げたプロンプトはこんな感じです。
このスクリーンショットのワイヤーフレームを作成するExtendScriptを書いてください。
- Illustrator用(.jsx)
- 1920x1000のアートボード
- グレースケール。写真部分はダミー画像(枠+×)で表現
- レイアウトの数値はすべてファイル冒頭のCONFIGにまとめる
- レイヤーはヘッダー、ヒーロー、カルーセルのように分ける
3つ目と4つ目が効きます。特にCONFIGへの集約を指定しないと、数値が関数の中に散らばって、あとで自分で直せなくなります。
文字サイズが4.2倍になった話
いきなり本番のワイヤーフレームではなく、まずロゴで小さく試しました。出てきたのがこれです。
原因は単位でした。textItem.sizeはポイント指定です。そこにpxのつもりで115を渡していた。ドキュメントは300dpiで作っていたので、115pt は 479px として描画されます。300 ÷ 72 = 4.166、ぴったり4.2倍です。
修正は3行でした。
function pxToPt(px) {
return px * 72 / CONFIG.resolution;
}
ワイヤーフレームを72dpiで作る場合はptとpxが一致するので、この問題は起きません。ロゴのように高いdpiで作るときだけ踏みます。
もうひとつ、中央揃えにトラッキングをかけると、最後の文字の後ろにも字間の空きが入って、見た目の中心が左にズレます。実際の描画範囲を見て置き直す関数を1つ用意しておくと、フォントが変わっても崩れません。
var vb = tf.visibleBounds; // [left, top, right, bottom]
var w = vb[2] - vb[0], h = vb[1] - vb[3];
tf.translate(ax(x) - w / 2 - vb[0], (ay(y) + h / 2) - vb[1]);
PhotoshopとIllustratorの違い
同じExtendScriptですが、オブジェクトモデルは別物です。Photoshop用に書いたものはIllustratorでは動きません。
| Photoshop | Illustrator | |
|---|---|---|
| 図形 | 選択範囲を作ってfill / stroke
|
pathItems.rectangle()でパスを置く |
| 円 | 多角形で近似する |
ellipse()で真円 |
| 文字 |
artLayers.add() + LayerKind.TEXT
|
textFrames.add() |
| Y軸 | 下向き | 上向き(上端が0、下がマイナス) |
Y軸の向きが毎回こんがらがるので、画面座標のまま計算して、描画の直前に変換する関数を2つ置きました。
function ax(x) { return X0 + x; }
function ay(y) { return Y0 - y; }
X0とY0はアートボードの原点で、artboards[0].artboardRectから読みます。0で決め打ちにすると環境によってズレるので、実測したほうが安全です。
これでレイアウト定義の部分がPhotoshop版とそのまま共通になりました。片方の数値を直したら、もう片方にコピーするだけで済みます。
なお、UXPで書けないかも試しました。Photoshopは.psjsという拡張子で単体スクリプトが動きます(Photoshop 23.5以降)。ES6が使えるので書き味は良い。ただしIllustratorのUXPは2026年5月時点で公開APIもドキュメントも出ておらず、Adobe社内でしか使われていないそうです。コミュニティの質問は2020年から続いているらしい。当面は.jsxで問題なさそうです。
AIに書かせるときに効いたこと
曲面のような形もパラメータにさせる。 今回のスクショにはカルーセルが円錐っぽく歪んだ状態で入っていました。これは上辺と下辺を別々の楕円弧として定義してもらいました。
carousel: {
top: { cx: 1780, cy: 410, rx: 1150, ry: 265, a0: 180, a1: 278.7 },
bottom: { cx: 1415, cy: 700, rx: 840, ry: 250, a0: 141.7, a1: 53.1 },
panels: 3
}
カーブが浅ければryを増やす。曲がり始めを変えたければa0をいじる。ここまで数値に落ちていれば、会話に戻らずに自分で寄せられます。
崩れたら実行結果のスクショを投げ返す。 ロゴが壊れたときは「デザインがずれるよ」の一言と画像だけ送りました。それで単位の取り違えを当ててきます。エラーが出ない種類のバグなので、文章で説明するより速い。
フォントはPostScript名の候補を並べさせる。 環境に入っていない名前を指定すると落ちます。上から順に試して見つかったものを使う関数を書かせておくと、MacとWindowsで使い回せます。
Codexでやる場合
まとめ
完全自動にはなりません。1回目のスクリプトは必ずどこか崩れます。
ただ、崩れ方が数値の問題に閉じているので、CONFIGを見て直せば終わります。手で四角を並べ直すより速い、というのが今のところの感触です。
微妙だったのは曲面です。スクショから楕円の角度を逆算するのは無理があって、結局は目視で寄せました。まっすぐな要素しかないワイヤーフレームなら、もっと素直に出てきます。

