受託で制作している Web サイトのトップ画像を差し替えていた午後のことです。作品写真をチャット欄に貼り付けて、「この写真を横長 16:9 に切り抜いて、幅 1920px で書き出してください」と Cowork に頼みました。
返ってきた答えは、写真の構図についての丁寧な説明でした。ところが、その先の作業に進むと「指定の画像ファイルが作業フォルダに見つかりません」と止まってしまいます。写真は確かに見えているのに、手を入れることだけができない——最初は不具合だと思い、同じ画像を二度、三度と貼り直しておりました。
最初にお伝えしたいのは、これは故障ではなく、画像の渡し方が二通りあって、その片方しか使っていなかったという話だということです。
「見えている」と「ファイルとしてある」は別のことです
Cowork とのやり取りには、大きく分けて二つの通り道があります。
| 渡し方 | Claude にできること | 向いている用途 |
|---|---|---|
| チャット欄に貼り付ける | 画像を見て、内容や構図を言葉で説明する | 「この画面のどこがおかしいか」「この写真の印象は」を相談する |
| 接続したフォルダに置く | ファイルとして開き、切り抜き・縮小・形式変換をして別名で保存する | 書き出しや一括処理など、結果をファイルで受け取りたい作業 |
貼り付けた画像は、会話の一部として Claude に「見せる」ものです。一方で、切り抜きや縮小を実行するのは、作業環境の中で動くプログラムです。私が試した範囲では、貼り付けた画像はその作業環境にファイルとして残っていませんでした。プログラムから見ると、開く対象がどこにもないのです。
添付ボタンから付けたファイルは、作業用の場所に置かれる場合もあります。ただ、付け方や画面によって扱いが変わることがあるため、私は「ある前提」で頼まず、次の節の確認を先に挟むようにしています。
止まったときに確かめる順番
「見つかりません」と返ってきたら、貼り直す前に次の三つを順に確かめます。
- 画像がフォルダにあるか。Cowork に「接続しているフォルダの中身を一覧で見せてください」と頼みます。ファイル名が並ばなければ、貼り付けだけで渡していた可能性が高いです
- フォルダが接続されているか。そもそも作業フォルダを選んでいないと、置き場所がありません。画面でフォルダが選ばれているかを見ます
- ファイル名が一致しているか。「写真」「さっきの画像」ではなく、
top_hero.jpgのように名前で指定します。似た名前が複数あると、別の画像を開いてしまうことがあります
私の場合は 1 で止まりました。一覧に写真が無かったのです。Finder で作品写真を接続フォルダへコピーし、名前で指定して頼み直したところ、すぐに作業が進みました。三度の貼り直しは、どれも同じ通り道を往復していただけでした。私自身、この順番を決めてからは、同じ場所で手が止まることがなくなりました。
原本を上書きしない書き出しを頼む
フォルダから渡せるようになったら、次に気をつけたいのは原本の扱いです。「切り抜いてください」とだけ頼むと、同じファイル名で保存される可能性があります。作品写真の原本を失うと、取り返しがつきません。
そこで私は、処理を言葉で頼むのではなく、次のような短いスクリプトを渡して実行してもらう形にしています。解決したいのは「比率どおりに中央から切り抜き、指定幅に縮小し、必ず別フォルダへ書き出す」という三点です。
from pathlib import Path
from PIL import Image
SRC_DIR = Path("images") # 接続フォルダ内の原本置き場
OUT_DIR = Path("images/_out") # 書き出し先(原本と分ける)
TARGET_RATIO = 16 / 9
TARGET_WIDTH = 1920
def crop_center(img, ratio):
w, h = img.size
if w / h > ratio: # 横に長すぎる → 左右を削る
new_w = int(h * ratio)
left = (w - new_w) // 2
return img.crop((left, 0, left + new_w, h))
new_h = int(w / ratio) # 縦に長すぎる → 上下を削る
top = (h - new_h) // 2
return img.crop((0, top, w, top + new_h))
def main():
files = sorted(p for p in SRC_DIR.iterdir()
if p.suffix.lower() in {".jpg", ".jpeg", ".png"})
if not files:
raise SystemExit(f"画像が見つかりません: {SRC_DIR.resolve()}")
OUT_DIR.mkdir(parents=True, exist_ok=True)
for src in files:
dst = OUT_DIR / f"{src.stem}_16x9{src.suffix.lower()}"
if dst.exists():
print(f"skip(既にあります): {dst.name}")
continue
with Image.open(src) as img:
out = crop_center(img.convert("RGB"), TARGET_RATIO)
if out.width > TARGET_WIDTH:
h = round(TARGET_WIDTH / TARGET_RATIO)
out = out.resize((TARGET_WIDTH, h), Image.LANCZOS)
out.save(dst, quality=92)
print(f"{src.name} -> {dst.name} {out.size}")
if __name__ == "__main__":
main()こう書く理由は三つあります。画像が一枚も無ければ最初の数行で止まるので、冒頭のつまずきが言葉ではなくパスつきのエラーで分かります。書き出し先を _out に分け、既存ファイルは飛ばすので、何度実行しても原本と前回の結果を壊しません。そして最後の一行が元の名前と書き出し後のサイズを並べるため、結果を開く前に数字で当たりが付けられます。
頼み方は「images フォルダに写真を置きました。このスクリプトを実行して、出力の一覧を見せてください」で足ります。スクリプトの中身を読んでから実行してもらえるので、何をされるか分からない不安も小さくなります。
色や質感は、任せる前に線を引きます
もう一つ、同じ日に学んだことがあります。切り抜きのついでに「少し明るく、色も整えてください」と頼んだところ、空のグラデーションに段差が出て、作品の質感がまったく別物になってしまいました。
自動の補正は、写真としてはそれらしく見えても、作り手が意図した色を知りません。依頼主の作品であればなおさらです。結局その一枚は原本から自分の手で補正し直し、Cowork には切り抜きと縮小だけを頼み直しました。
形を整えるのは Cowork に、色を決めるのは自分の手で。 いまはこの線引きで頼み分けております。比率・サイズ・形式・ファイル名のように、正解が数字で決まる作業はお任せします。色味・肌の質感・紙の風合いのように、見る人の判断が要る作業は手元に残します。この二つを一度の依頼に混ぜないだけで、やり直しはほとんどなくなりました。個人開発で扱うストア用の画像のように枚数が多い作業ほど、この線引きは効いてくると感じています。
最初の一回をこう始めてみてください
まだ Cowork で画像を扱ったことがない方は、次の小さな手順から始めていただければと思います。
- 作業用のフォルダを一つ作り、その中に
imagesフォルダを用意して接続します - 加工したい画像を一枚だけ、
imagesにコピーします(原本は別の場所に残します) - 「
imagesの中身を一覧で見せてください」と頼み、ファイル名が出ることを確かめます - 上のスクリプトを渡して実行してもらい、
_outにできた画像を自分の目で開きます
一枚でうまくいけば、あとは images に置く枚数を増やすだけです。チャットに貼るのは「相談したいとき」、フォルダに置くのは「仕上げてほしいとき」——この使い分けが身につくと、Cowork とのやり取りの手触りがずいぶん変わるはずです。
Cowork の作業を無人の定期実行に載せ、結果をあとから検証できる形にする設計は、プレミアム記事のほうで実際の運用を交えて掘り下げています。画像の一括処理を毎朝回したくなったときに、そちらも覗いていただけましたら幸いです。