Photoshop互換のPhotoCraftをAIから操作:CLI・MCPで試して見つけた良い点と不具合

PhotoCraftをAIで操作してみた。花ロボがモニターの画像編集ソフトを指さし、花イヌが虫眼鏡でてんとう虫をのぞいている
Information

この記事は、AI が行った検証の記録をもとに AI が執筆し、人間が確認しています。

ArtCraftが、Adobe Creative Cloudの各アプリに相当するオープンソースのアプリ7本「Crafting Apps」を公開しました。その中でいちばん開発が進んでいるPhotoCraft(Photoshop相当)を、AI(Claude Code)からCLIとMCPで操作してみました。

結果を先にまとめます。AIから操作する道具としての作りは、期待以上でした。700以上のコマンドに引数の説明が付いていて、MCPサーバーも最初から入っています。ブログのヘッダー画像からX用の画像(1200×675)を組み立てる作業は、コマンド1回・約0.36秒で終わりました。手元にあったPhotoshop製のPSD 4つも、読み込み・保存し直しともピクセル単位で正しく扱えました。一方で、「可変フォントの太さがPSDに保存されない」「幅0を指定すると、エラーにならずに画像が1×1に潰れる」などの不具合も見つかりました。

作業日:2026年10月7日(日本時間)。

PhotoCraftとは(公式の情報)

ArtCraftは2026年10月5日に、次の7本をまとめて公開しました。すべてRustで書かれていて、ElectronやWebビューは使っていません。ライセンスはMITまたはApache-2.0で、Windows・macOS・Linuxで動き、WebAssemblyでブラウザでも動きます。

アプリ相当するAdobe製品公式サイトでの状態
PhotoCraftPhotoshop初期アルファ
PrintCraftAcrobat初期アルファ
VectorCraftIllustrator開発中
FilmCraftPremiere Pro開発中
LightCraftLightroom開発中
EffectCraftAfter Effects開発中
DesignCraftInDesign開発中

PhotoCraftについて、公式は次のように説明しています(いずれも公式の主張で、今回すべてを確かめたわけではありません)。

なお、PhotoCraftはAdobeとは関係のない独立したプロジェクトです。

検証環境

項目内容
OSWindows 11 Pro(10.0.26200)
PhotoCraft0.2.0(ad8632173、2026-10-05)Windows x64 ポータブル版(zip 28.5MB)
AIClaude Code(デスクトップアプリ)
比較・集計Python 3.11、numpy 2.4.6、Pillow 12.3.0

画面を持つアプリ本体(photocraft.exe)は起動していません。試したのはCLI(photocraft-cli.exe)と、そこから起動するMCPサーバーだけです。

セットアップ

GitHubのリリースページからポータブル版のzipを落として展開するだけです。インストーラーは使っていません。中身は、アプリ本体(46MB)、CLI(27MB)、ライセンス、READMEの5ファイルでした。

CLIには次のサブコマンドがあります。

サブコマンド内容
convert形式の変換(PSD、PNG、JPEG、TIFF、WebP、EXR、独自形式の .pcraft など)
infoドキュメントの中身(サイズ、モード、レイヤー構造)をJSONで出す
runファイルを開き、コマンドを順に実行して保存する
batch / dropletフォルダ内の画像に同じ処理をまとめてかける
commandsコマンドの一覧(--json で引数の説明付き)
mcpMCPサーバーとして起動する
serve画面なしのセッションを開いたまま、JSONの命令を受け付ける

commands で数えると、登録されているコマンドは748個でした(公式の説明は「500以上」)。内訳は、レイヤー181、フィルター122、編集70、画像64、文字56などです。

検証結果

CLIだけでX用の画像を作る

このブログの「生成AIキャッチアップ」のヘッダー画像(1900×600)を、X用の1200×675に組み直しました。グラデーションの背景、縮小して配置したヘッダー画像、紺の角丸の帯と影、2行の日本語タイトル、黄色のラベルを、run の1回の呼び出しで作っています。

photocraft-cli run --new '{"width":1200,"height":675}' \
 --cmd shape.create --params '{"kind":"rect","rect":[0,0,1200,675],"fill":{"gradient":{"stops":[[0,"#dcecff"],[1,"#ffffff"]],"angle":90}}}' \
 --cmd file.placeEmbedded --params '{"path":"in/header.png","scale":63.158,"center":[600,200]}' \
 --cmd shape.create --params '{"kind":"roundedRect","rect":[40,420,1120,220],"radii":28,"fill":"#0b2a6b"}' \
 --cmd layer.layerStyle.dropShadow --params '{"color":"#000000","opacity":35,"distance":8,"size":18,"angle":90}' \
 --cmd type.create --params '{"x":600,"y":512,"text":"PhotoCraft を\nAIエージェントで動かしてみた","align":"center","font":"Noto Sans JP","size":54,"color":"#ffffff"}' \
 --cmd type.setStyle --params '{"variations":{"wght":900},"leading":72}' \
 --out out/x-card.psd

(黄色のラベルを作る部分は省略しています。図形と文字を同じように2つ追加するだけです)

上半分に「生成AIキャッチアップ」のヘッダー画像、下半分の紺色の帯に白い文字で「PhotoCraft を AIエージェントで動かしてみた」、左上に黄色の「試用レポート」のラベルがある画像
PhotoCraftのCLIだけで作った1200×675の画像

引数の書き方は、commands --json を見れば分かるようになっています。たとえば image.imageSize には {"width":px,"height":px,"resolution":ppi,"resample":"bicubic|bilinear|…"} という説明が付いています。AIが説明を読んでから呼び出せるので、試行錯誤はほとんど要りませんでした。

MCPサーバーとして使う

photocraft-cli mcp で、標準入出力で話すMCPサーバーが起動します。ツールは18個で、大きく分けると次のとおりです。

接続すると、サーバーが「まずコマンド一覧で調べてから実行し、結果はプレビューで確かめ、最後に保存する」という使い方の説明を返してきます。AIが迷わないように考えられています。

花ロボの設定画(1900×2400)を開いて、600pxへの縮小と2つの調整レイヤー(色の鮮やかさ、トーンカーブ)をまとめて実行し、プレビューを受け取ってPSDとPNGで保存しました。各手順の時間は次のとおりです。

手順時間
開く54ms
縮小+調整レイヤー2つ(まとめて実行)38ms
プレビュー画像の取得93ms
PSDで保存37ms
PNGで保存92ms

間違った操作をしたときのエラーメッセージも具体的でした。たとえば文字レイヤーにぼかしをかけようとすると、「フィルターにはピクセルのレイヤーが必要(今選ばれているのは文字レイヤー)」と返ってきます。

読み書きできるフォルダを制限できる

MCPサーバーは、起動時に読み込み用と書き込み用のフォルダを指定できます(--automation-read-root、--automation-write-root)。AIに任せるときに、ほかのファイルを読まれたり上書きされたりしないための仕組みです。外に出ようとする指定を4通り試し、すべて拒否されました。

試したこと結果
../escape.png に保存拒否(親フォルダへの移動は不可)
C:/Users/…/Desktop/escape.png に保存拒否(ドライブ名の指定は不可)
../../../../../../README.md を開く拒否
F:/works/…/README.md を開く拒否

Photoshopで作ったPSDを読む

手元にあったPhotoshop製のPSD 4つ(2017年〜2025年に作った業務用のファイル。非公開)で試しました。3つはグレースケールでレイヤー1枚、1つはRGBで、非表示の文字レイヤーを含む3枚のレイヤーがあります。

見つかった不具合

1. 可変フォントの太さがPSDに保存されない

可変フォントの太さを "variations":{"wght":700} で指定した文字は、独自形式の .pcraft で保存すれば太さが残ります。ところが .psd で保存して開き直すと、太さの指定が消えています。開き直した直後は、PSDに入っている描画済みの画像が表示されるので太字に見えます。文字を編集した時点で描き直され、標準の太さになります。

上は .pcraft 経由で太字のままの「Edited 700」、下は .psd 経由で細くなった「Edited 700」
上が .pcraft、下が .psd を経由して文字を編集した結果(Windows標準の可変フォント Bahnschrift)

"weight":700 という別の指定方法なら、PSDでも太さが残りました。PSDを使うなら、こちらで指定するのが回避策です。

2. 間違った値でもエラーにならない

コマンド指定結果
image.imageSize{"width":0}成功扱いで、画像が1×1に潰れる
image.imageSize{"width":-5}同上
image.imageSize{"widht":200}(綴り間違い)成功扱いで、何も変わらない
image.imageSize{"width":"huge"}(型の違い)成功扱いで、何も変わらない
layer.newAdjustmentLayer.vibrance{"vibrance":500}(説明では -100〜100)成功扱い
type.create存在しないフォント名成功扱いで、警告なしに別のフォントになる

AIに操作させるときは、ここがいちばん困ります。間違いが「成功」として返ってくるので、AIが誤りに気づけません。幅0の指定は、実際に画像を壊します。一方で、図形の色に "red" と書くと「認識できない色」としてきちんと拒否されるので、チェックの厳しさがコマンドによってばらばらです。

3. 位置と大きさを返す値の形式がそろっていない

同じ文字レイヤーについて、作成したときの結果は bounds: [11, 35, 78, 51](左・上・右・下)、info の結果は bounds: [11, 35, 67, 16](x・y・幅・高さ)でした。キーの名前は同じなので、AIが取り違えやすい部分です。

つまずいた点

MCPの引数名

最初のMCPの呼び出しは、全部エラーになりました。コマンドをまとめて実行するツールの引数は commands ではなく steps、コマンド名は command ではなく id でした。また、ファイルのパスは、指定したフォルダからの相対パスで書く必要があります(in/hanarobo.png ではなく hanarobo.png)。どれもツールの説明に書いてあり、エラーメッセージ(「steps がない」など)を見ればすぐ直せました。

評価できる範囲(限界)

まとめ

PhotoCraftは、「人がGUIで使うPhotoshopの代わり」としてはまだ初期アルファです。ただ、「AIに画像を加工させる道具」としては、すでにかなり使いやすいと感じました。コマンドの説明、MCPの設計、フォルダの制限、エラーメッセージまで、AIから使うことを前提に作られています。ブログのアイキャッチやSNS用の画像のように、一から組み立てる画像なら実用に近いところまで来ています。

気をつけたいのは、間違った指定が黙って通ってしまう点です。AIに任せる場合は、プレビューで結果を確かめる手順を必ず入れるのがよさそうです。

参照資料

マックお宝鑑定団:ArtCraftシリーズのリリース / ArtCraft Crafting Apps / PhotoCraft 公式ページ / PhotoCraft(GitHub) / PhotoCraft リリース / IlSoftware.it の紹介記事(イタリア語)