📝

人間はどこまで制作から降りられるのか?Gemini 2.0 Thinking × Imagen 3 で挑む「自律型4コママンガ生成システム」

に公開

「Nano Banana Pro Powered Super AI 4-koma System/自律型4コママンガ生成システム」とは

https://www.youtube.com/watch?v=wmC8BgKliKk
https://www.youtube.com/watch?v=FmSQ267vrZg

1. はじめに:AIは「道具」から「ディレクター」へ

AIによるマンガ制作は、これまで人間がプロンプトを練り、何度も「ガチャ」を回す補助的な役割が主流でした。本プロジェクトは、その工程を根本から覆し、AIをディレクターに据えることで、ネタ収集から構成、演出、レンダリングまでを完全無人化することを目的に開発されました。

「人間がクリエイティブな工程から意図的に離脱する」という設計思想に基づき、拡散モデル特有の弱点をコードレベルで制御する独自のプロトコルを実装しています。

2. 解決した技術的課題

画像生成AI(Diffusion Model)で「4コマ漫画」を生成する際、以下の3つの壁が立ちはだかります。

  1. 空間の崩壊: 正確なコマ割りや枠線を維持できず、内容が融合してしまう。
  2. 同一性の欠如: 同一キャンバス内で、キャラクターの造形(髪型、眼鏡、服装)がコマごとに変わる。
  3. 意思決定の依存: 「何を描くか」というネタ出しにおいて人間に依存している。

これらを解決するために実装したのが、以下の技術群です。

3. 物理的空間制約:ABSOLUTE PHYSICAL GEOMETRY LOCK

「4コマで描いて」と自然言語で頼むのではなく、キャンバスの空間座標をピクセル単位の物理制約としてLLMに叩き込みます。

// src/App.jsx より抜粋
// 2:3の縦長キャンバス内に4つの等間隔な水平ストリップを強制
const geometryLock = `
  [ABSOLUTE PHYSICAL GEOMETRY LOCK - v121.3]
  (Aspect Ratio: 2:3 Vertical ONLY).
  (Orientation: Portrait Mode).
  (Physical Barrier: Top 15% and bottom 15% are solid pure white blocks).
  (Structure: 4 EQUAL-SIZED HORIZONTAL STRIPS stacked vertically).
  (Panel Width: EXTEND TO THE VERY EDGES. ZERO PADDING ON SIDES).
`;

キャンバスの上下15%を「Physical Barrier」として意図的に死域化することで、AIがタイトルや署名を書き込むスペースを物理的に確保し、コマのレイアウトがキャンバス端で切れるのを防いでいます。

4. 特徴量の数理的制御:Weighted Immutable Prompts

キャラクターの同一性(Character Consistency)を保つため、解析フェーズで抽出された特徴量に数学的な重み(Weight)を付与し、不変の定数としてプロンプトに注入します。

// 特徴量の一貫性を担保する重み付け注入のロジック
// 例: female:1.6, glasses:1.2 などの強度を指定
const VAR_CAST_LIST = "${castList.replace(/\n/g, ', ')}"; 

「female:1.6」のように、モデルが無視できない強度のウェイトを明示することで、複数コマにわたる描写でも眼鏡の有無や髪の色といった特徴の「欠落」や、キャラ同士の「混ざり合い(フュージョン)」を最小限に抑えています。

5. 堅牢なモデル巡回ロジック:Model Cycling Strategy

Gemini 2.0 Flash Thinking などの最新モデルは、実験的提供(Experimental)ゆえに404エラーやクォータ制限が発生しやすい不安定な側面があります。これを克服するため、利用可能なモデルを動的に巡回するフォールバック機構を構築しました。

// src/lib/gemini.js より抜粋
const MODEL_IDS = [
    "gemini-2.0-flash-thinking-exp-01-21", // 最新の思考モデルを優先
    "gemini-2.0-flash-thinking-exp",
    "gemini-2.0-flash",
    "gemini-1.5-flash-latest"              // 最終的な安定版へフォールバック
];

export const callThinkingGemini = async (prompt, ...) => {
    for (const modelId of MODEL_IDS) {
        try {
            // モデルへの接続および生成処理を実行
            const result = await model.generateContent(...);
            return { text: finalOutput, thought: thought };
        } catch (err) {
            console.warn(`Model ${modelId} failed:`, err.message);
            // 失敗時は即座に次のモデルへフォールバックし、生成を継続
        }
    }
};

さらに、Gemini 2.0の thought パーツを抽出し、フロントエンドの「Neural Process」ログにリアルタイム表示することで、AIの思考過程をユーザーが透過的に監視できる仕組みも導入しています。

6. Imagen 3 のレンダリング最適化

最終出力では、Imagen 3のAPIを叩く際にマンガ特有の縦積み構造を維持するためのパラメータ制御を行っています。

// src/lib/imagen.js より抜粋
parameters: {
    sampleCount: 1,
    aspectRatio: "9:16", // 4コマの縦積みに最適な超縦長比率を指定
    personGeneration: "allow_adult" 
}

aspectRatio: "9:16" を明示的に指定することで、キャンバス内の横方向の余白を削ぎ落とし、4つのコマが密集して描画されるよう最適化されています。

技術スタック

  • Frontend: React 19 / Vite 7 / Tailwind CSS
  • AI Engine: Google Gemini API & Imagen 3
  • Architecture: 思考トレースを活用した非同期プロンプト・コンパイル

おわりに

このシステムは、AIが「人間の道具」であることを超え、自律した「クリエイター」として振る舞う未来を検証するための実験体です。ソースコードはMIT License、ロジックはCC BY-NC-SA 4.0で公開しています。

エンジニアの皆さんの手で、このプロトコルをさらに洗練させていただければ幸いです。

Repository: https://github.com/FURUYAN1234/nano-banana-pro
Demo: https://furuyan1234.github.io/nano-banana-pro/
Technical Article (note): https://note.com/happy_duck780/n/ndf063558c1f5

Discussion