0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Codeで画像プロンプトを生成→Geminiで画像生成→ローカル保存を自動化した話

0
Posted at

はじめに

ゲーム開発で「モンスターのスプライトシートが14種類必要」という状況になった。

普通なら1枚ずつ手作業でプロンプトを考えて画像生成AIに投げるところだが、Claude Codeと連携すると以下のようなパイプラインが組める。

設計書(ゲーム仕様)
  ↓ Claude Code がプロンプト生成
テキストファイル(14体分の画像生成プロンプト)
  ↓ Gemini で画像生成
ダウンロードフォルダに14枚のPNG
  ↓ Claude Code が画像を目視判定&リネーム
Assets/Resources/Monsters/mon_golem.png 等に自動配置

この記事では、このパイプラインの具体的な作り方と、うまくいった点・ハマった点を書く。

私は建設会社の総務で、本職のプログラマーではない。開発はすべてClaude Codeとの対話で行っている。


Step 1:Claude Codeにプロンプトを一括生成させる

仕様を伝えるだけでプロンプトが出てくる

Claude Codeとの会話で、まずゲーム内でのモンスターの役割を決めた。

自分:異世界って設定なんで、著作権に問題ない有名モンスターを障害物的な感じで出したい
自分:ドラゴン、ゴブリン、スケルトン、ゴーレム、スライム、トロール…(14体のリスト)
自分:固定障害物/巡回/突進の3タイプで
自分:プロンプトを作成してtextに書き出して

これだけで、Claude Codeは14体分のプロンプトをprompts.txtに書き出してくれた。

生成されたプロンプトの構造

各プロンプトは以下の要素を含む、150〜200単語の英語テキストだ。

pixel art sprite sheet of a [モンスター名] monster as a racing game obstacle,
4 frames in a single horizontal row on a 512x128 pixel canvas,
each frame is 128x128 pixels,
[外見の詳細な描写],
frame 1 [ポーズ1の説明],
frame 2 [ポーズ2の説明],
frame 3 [ポーズ3の説明],
frame 4 [ポーズ4の説明],
viewed from a front three-quarter angle,
clean black pixel outlines,
white background,
retro SNES 16-bit pixel art style

ポイントは以下の3つ。

1. キャンバスサイズの明示

4 frames in a single horizontal row on a 512x128 pixel canvas,
each frame is 128x128 pixels

Geminiに「4コマ横並びのスプライトシート」を正確に出させるには、ピクセル単位でキャンバスサイズを指示する必要がある。これがないと1枚絵や縦並びが出てくる。

2. フレームごとの具体的なポーズ指示

frame 1 standing still in a wide sturdy stance arms at sides
frame 2 same pose but the orange glow intensifies and small pebbles float
frame 3 the golem shifts its weight slightly raising one fist
frame 4 returns to the original pose with the glow dimming back down

「アニメーション」とだけ書くと4フレームが同じ絵になることがある。各フレームで何が変わるかを具体的に書く。

3. 行動タイプに合ったアニメーション

タイプ アニメーション
固定(idle) 微動・呼吸・発光の変化 ゴーレム:溶岩の発光が明滅
巡回(walk) 歩行サイクル4フレーム ゴブリン:左右の足を交互に
突進(charge) 走り→跳躍→着地 ドラゴン:四足疾走+火炎

Claude Codeはゲーム仕様(固定/巡回/突進の3タイプ)を理解した上で、それぞれに適したアニメーションパターンを設計してプロンプトに落とし込んだ。

コピペ用フォーマットも用意

Geminiに1体ずつ手動で貼る場合に備えて、番号付き・区切り線付きのファイルも出力させた。

============================================================
1/14  mon_golem.png(ゴーレム / 固定タイプ)
============================================================

pixel art sprite sheet of a stone golem monster...(プロンプト本文)


============================================================
2/14  mon_basilisk.png(バジリスク / 固定タイプ)
============================================================

pixel art sprite sheet of a basilisk serpent monster...(プロンプト本文)

「何番目の何を作っているか」が一目でわかるので、手動作業でも迷わない。


Step 2:Geminiで画像生成

ブラウザ自動化を試みた(が不安定だった)

Claude CodeにはClaude-in-Chromeというブラウザ操作拡張がある。これを使ってGeminiへのプロンプト投入→画像生成→ダウンロードを自動化しようとした。

自動化の手順:
1. gemini.google.com に移動
2. 入力欄にプロンプトを貼り付け
3. 送信ボタンをクリック
4. 10〜20秒待つ(画像生成中)
5. 生成された画像をクリック(ビューア表示)
6. ダウンロードボタンをクリック
7. 新規チャットに戻る
8. 1に戻って次のプロンプト

結果:1〜2枚なら成功するが、連続実行すると不安定になる。

Geminiの画像ビューアが重く、3枚目あたりでChromeのタブがフリーズした。Geminiのページ自体がリッチなSPAで、画像ビューアを開閉するたびにメモリ使用量が増えていく。ブラウザ自動化ツールはページが応答しなくなると操作を続けられないため、「1〜2枚やって固まる→タブを閉じて再開→また1〜2枚」というサイクルになった。

結論:手動が一番速い

14枚程度なら手動でコピペして生成するのが最も確実で速いprompts.txtのコピペ用フォーマットが活きた。

作業時間の比較:

方法 14枚にかかった時間 安定性
完全自動化(理想) 推定15分 3枚目で破綻
手動コピペ 約20分 確実
自動化リトライ込み 40分以上 不安定

ブラウザ自動化は「ページ構造が安定していて、重いビューアを開かない」タイプのサイトでは有効だが、Geminiのようなリッチ UIでは現時点では厳しい。


Step 3:Claude Codeに画像を判定・リネームさせる

ここが一番面白いパートだ。

Geminiでダウンロードした画像のファイル名はGemini_Generated_Image_myvvt5myvvt5myvv.pngのようなランダム文字列で、どれがどのモンスターか分からない。14枚を1枚ずつ開いて確認してリネームするのは面倒だ。

Claude Codeは画像を「見て」判定できる

Claude Codeにダウンロードフォルダのファイルパスを渡すと、画像を直接読み取って中身を判定してくれる

自分:(14枚のファイルパスを貼り付けて)適用して。

Claude Codeは14枚すべてを読み込み、以下のように判定した。

1. myvvt5... → バジリスク(緑の蛇、赤い冠)
2. s77nl3... → ゴーレム(石の体、オレンジの亀裂)
3. 1g87rv... → サイクロプス(灰青の肌、棍棒)
4. x400r...  → ゴブリン(緑肌、兜、剣と盾)
5. h66w00... → スケルトン(骸骨、赤いタバード)
6. v6hytq... → スライム(青いブロブ)
7. rdript... → トロール(緑の疣肌、前かがみ)
   ...(以下7体続く)

Claude Codeはマルチモーダルモデルなので、画像を渡せばピクセルアートの内容を理解して「これはドラゴン」「これはキョンシー」と特定できる。

自動リネーム&配置

判定後、Claude CodeがPowerShellスクリプトを生成・実行して、14枚すべてを正しいファイル名でゲームのリソースフォルダにコピーした。

$map = @{
    "Gemini_Generated_Image_s77nl3s77nl3s77n.png" = "mon_golem.png"
    "Gemini_Generated_Image_myvvt5myvvt5myvv.png" = "mon_basilisk.png"
    "Gemini_Generated_Image_1g87rv1g87rv1g87.png" = "mon_cyclops.png"
    # ...全14体のマッピング
}

foreach ($entry in $map.GetEnumerator()) {
    Copy-Item -Path (Join-Path $src $entry.Key) -Destination (Join-Path $dst $entry.Value)
}

ランダムなファイル名の画像14枚が、数秒で正しい名前のリソースファイルになった。


Step 4:ゲームコードへの組み込みまで自動

画像の配置が終わると、Claude Codeはそのまま以下のコードも生成した。

  • MonsterObstacle.cs — モンスターの行動AI(固定/巡回/突進の3タイプ)
  • TrackBuilder.cs への追加 — コース上にモンスターを自動配置するロジック
  • Mode7ObjectRenderer.cs への追加 — スプライトシートを読み込んでアニメーション描画

つまり「モンスター14体を障害物として出したい」という1つの要望から、プロンプト生成→画像生成→リネーム配置→ゲームコード実装まで一気通貫で完了した。


全体のパイプラインまとめ

ステップ 担当 所要時間 成果物
ゲーム仕様の決定 人間 会話5分 14体のモンスターリスト+行動タイプ
プロンプト生成 Claude Code 自動(約1分) prompts.txt(14体分)
画像生成 人間(Gemini手動) 約20分 14枚のPNG
画像判定+リネーム Claude Code 自動(約30秒) mon_xxx.png × 14
ゲームコード実装 Claude Code 自動(約5分) 3ファイル追加・4ファイル修正

人間が手を動かしたのは「仕様を話す」と「Geminiにプロンプトをコピペする」の2つだけ。残りはすべてClaude Codeが処理した。


ハマりポイントと対策

1. Geminiが4フレーム並びを無視する

プロンプトに4 frames in a single horizontal rowと書いても、たまに1枚絵や3フレームが出てくる。対策としてon a 512x128 pixel canvas, each frame is 128x128 pixelsとキャンバスサイズを数値で明示すると精度が上がった。それでもダメな場合はリトライ。

2. 白背景指定が効かない

white backgroundと書いても背景に地面や空が描かれることがある。ゲームでは白ピクセルを透明として扱うので、背景にグレーや茶色が混ざると透過処理がおかしくなる。

対策:スプライトシート読み込み時に「白に近いピクセル(RGB全て240以上かつalpha>20のもの)をコンテンツとして扱わない」フィルタをコード側に入れた。

// 白背景を自動判定で除外
if (c.a > 20 && (c.r < 240 || c.g < 240 || c.b < 240))
{
    hasContent[x] = true;
}

3. ブラウザ自動化の限界

Claude-in-Chrome経由でGeminiを操作する方法は、ページが軽い作業(テキスト入力・ボタンクリック)なら動くが、画像ビューアのような重いUIを繰り返し開閉すると破綻する。

対策:100枚以上の大量生成が必要なら、Gemini APIを直接叩くスクリプトをClaude Codeに書かせるほうが安定する。 14枚程度の小規模なら手動コピペが最速。


この手法が使える場面

ゲーム開発以外でも、以下のような場面で同じパイプラインが使える。

  • ブログ用のアイキャッチ画像を大量生成 — 記事タイトルからプロンプトを自動生成
  • プレゼン資料の図解 — スライドの内容から図解プロンプトを生成
  • UIモックアップ — 画面仕様からモックアップ用のプロンプトを生成
  • 教材の挿絵 — 教科書の単元ごとにイラストプロンプトを生成

共通するのは「大量の類似画像を、統一されたスタイルで生成したい」というケースだ。人間がプロンプトを1個ずつ書くと表現がブレるが、Claude Codeに一括生成させると14体すべてが同じフォーマット・同じ画風指定になる。


まとめ

  • Claude Codeは画像生成プロンプトの一括生成が得意 — ゲーム仕様を会話で伝えるだけで、統一フォーマットのプロンプトが出てくる
  • ブラウザ自動化は小規模なら有効、大量生成にはAPI直叩きを推奨 — Geminiの画像ビューアが重くて連続処理が不安定
  • Claude Codeの画像判定が地味に便利 — ランダムファイル名の画像を渡すと中身を見て正しくリネームしてくれる
  • プロンプト生成→画像生成→リネーム配置→コード実装まで一気通貫 — 人間は仕様を話すのとコピペだけ

AIにコードを書かせるのはもう当たり前になりつつあるが、画像生成のプロンプトをAIに書かせて、生成された画像をAIに判定させるという「AI×AI」のパイプラインは、これからもっと一般的になると思う。


関連記事

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?