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?

ローカルの FLUX 3 Klein と Pillow で「似たロゴばかり」問題を解く:ロゴ設計スキルを作って公開した

0
Posted at

ローカルの FLUX 3 Klein と Pillow で「似たロゴばかり」問題を解く:ロゴ設計スキルを作って公開した

はじめに

先日、壁紙サイトのロゴを作り直しました。ところが、最初に作った案は「角丸の H にグラデーション」の色違いばかりで、6 案並べても見分けがつきませんでした。

そこで 「1 つの案を磨く」のではなく「まったく違う案を一度に出して、比較シートで落とす」 という手順に変え、その手順をコーディングエージェント用の スキル(logo-design) としてまとめました。この記事では、その手順と、実際にハマったところを書きます。

  • 環境:Mac(Apple silicon)、ローカルの ComfyUI、FLUX 3 Klein、Python(Pillow / numpy)
  • 完成物:スキル一式(スクリプト 5 本 + 手順書 + 事例画像)
  • 公開先:SkillPeek の logo-design ページ

!!! info
ロゴの「唯一性」はこのスキルでは保証できません。最終候補は必ず画像検索と商標検索で確認してください(後述)。

何が問題だったか

最初の反復は、色や角の丸みを変えただけの案でした。「角丸 H + グラデーション」「山の形の横棒つき H」…と並べても、別のロゴには見えません。

そこで考え方を変えました。

やり方 結果
1 つの案の色や形を少しずつ変える 6 案がほぼ同じに見える
切り口そのものを変えて 6 案つくる 比較する意味が出る

切り口の例は次のとおりです。

  • 文字どおりの物(色見本のカード)
  • モノグラム(頭文字)
  • 抽象図形
  • 名前のメタファー(Hue = 色相、Walls = 壁)
  • プロダクトの絵文字化(スマホ = 壁紙)
  • 質感で見せるエンブレム

方針:AI と「コードで描く」の二本立て

得意なことが違うので、両方で案を出します。

目的 使うもの 理由
質感・グラデーション・意外な発想 ローカルの FLUX 3 Klein(ComfyUI 経由) 手で描くより見栄えがする
正確な形・対称・個数・特定の文字 Pillow 小さくてもシャープで、色の差し替えも簡単
logo-design/
├── SKILL.md              手順・経験則・限界
├── assets/
│   ├── flux3_klein_api.json   ComfyUI のワークフロー(API 形式)
│   └── prompts.md             FLUX 用プロンプトと結果の評価
└── scripts/
    ├── flux_concepts.py       FLUX で案を出して保存
    ├── shapes.py              コードで描く幾何ロゴ 6 種
    ├── contact_sheet.py       明暗 2 背景 + 64/32/16px の比較シート
    └── export_kit.py          選んだ案から一式を書き出し

① コードで描く:supersampling で縁をきれいに

2048px で描いて 1024px に縮小するだけで、縁のギザギザがほとんど消えます。座標は 0〜100 のグリッドにそろえておくと、案の追加が楽です。

shapes.py
K = 2048
U = K / 100          # 0〜100 の座標を実ピクセルに換算

def phone_sun(ink, acc, **_):
    """スマホの輪郭と点が 1 つ。壁紙を示す最短の記号。"""
    im, d = canvas()
    d.rounded_rectangle([27*U, 8*U, 73*U, 92*U], radius=14*U,
                        outline=ink, width=int(6*U))
    d.ellipse([40*U, 34*U, 60*U, 54*U], fill=acc)
    return done(im)   # 2048 -> 1024 に LANCZOS で縮小

2 つの円を重ねて乗算色にする案は numpy で作ります。重なり部分の色は ink * acc / 255 です。

shapes.py
a = (x - 38) ** 2 + (y - 50) ** 2 < 28 ** 2
b = (x - 62) ** 2 + (y - 50) ** 2 < 28 ** 2
o = np.zeros((K, K, 4), dtype="uint8")
o[a] = ink; o[b] = acc
o[a & b] = [*(np.array(ink[:3]) * np.array(acc[:3]) // 255), 255]

色は --ink 14141c --accent ff5c5c のように # なしの 16 進で渡します(理由は後述)。

python3 scripts/shapes.py --out marks/ --ink 14141c --accent ff5c5c

② FLUX で描く:ComfyUI の HTTP API を叩くだけ

ComfyUI を起動・再起動するコードは書きません。すでに動いている ComfyUI にプロンプトを投げて、結果を /view で取ってくる だけです。

flux_concepts.py
HOST = os.environ.get("COMFY_URL", "http://127.0.0.1:8188")

p = json.loads(TEMPLATE.read_text())               # API 形式のワークフロー
p["18:17"]["inputs"]["value"] = text               # プロンプト
p["18:6"]["inputs"].update(width=w, height=h)      # 画像サイズ
p["18:7"]["inputs"].update(seed=seed, steps=30, cfg=3.5)
pid = call("/prompt", {"prompt": p, "client_id": "logo-design"})["prompt_id"]

# 完了後に /history を見て、/view で画像を保存
q = urllib.parse.urlencode({"filename": im["filename"],
                            "subfolder": im.get("subfolder", ""),
                            "type": im.get("type", "output")})
out.write_bytes(urllib.request.urlopen(HOST + "/view?" + q).read())

768×768、30 ステップで 1 枚あたり約 145 秒でした(M4 Max)。

プロンプトの型

毎回この共通部分から始め、最後に概念を 1 文だけ足します。

Professional brand logo mark design, a single centered emblem on a clean
plain background, flat vector style, bold simple shapes, highly memorable
and eye-catching, modern app icon quality, award-winning identity design,
no text, no letters, no mockup.

概念の例:Three rounded rectangular paint color swatch cards fanned out like a hand of cards, in coral red, golden yellow and turquoise, overlapping with soft rounded corners, on an off-white background.

③ 結果:FLUX は「質感」は強いが「数」と「枠」に弱い

6 案を並べた結果です(左上から順に、色見本のカード / レトロな夕日 / 色相の水滴 / カラータイルの壁 / オーロラ / めくれた壁紙)。

FLUX 3 Klein の 6 案

案 評価
色見本のカード きれいで使える。2〜3 色のシンプルな物が得意
レトロな夕日 良いが、よくあるシンセウェイブ調。類似ロゴの確認が必要
色相の水滴 6 案の中で質感は一番。光沢やグラデーションは AI が圧勝
カラータイルの壁 失敗。「3×3 の 9 枚」のはずがタイルの数も並びも崩れた
オーロラ 波は良いが、角丸の枠が左右非対称になった
めくれた壁紙 頼んでいない花が描き足された。比喩の多いプロンプトは余計な物を生む

ここから得た経験則は次のとおりです。

  • 1 つのプロンプトに 1 つの概念。2 つ入れると混ざる
  • 色は「coral red」「turquoise」のような言葉で書く。16 進コードは書かない
  • 個数・格子・左右対称はモデルに任せず、コードで描く
  • 文字もモデルに任せない。ワードマークは後からコードで載せる
  • 同じプロンプトでシードだけ変えても似た絵になる。6 回回すなら概念を 6 つ変える
  • 出力はラスターなので、選んだ案はベクターで描き直す

④ 比較シート:16px で読めない案を早めに捨てる

contact_sheet.py は、フォルダ内の PNG を 明るい背景・暗い背景の 2 枚にして、64 / 32 / 16px の縮小プレビューを付けて並べます。

コードで描いた案の比較シート

仕上げる前にここで落とすのが肝心です。

  • 細い線・小さな点・ハーフトーン調は、favicon サイズで潰れる
  • 濃い色だけの案は、暗い背景で消える(板を敷くか、暗い版を別に作る)
  • 「きれい」より「名前に合っている」案のほうが、結局は評価が高かった(スマホ=壁紙、色見本のカード=Hue)

⑤ 一式書き出し

選んだ案(透過 PNG)から、1 コマンドで一式を作ります。

python3 scripts/export_kit.py marks/4_swatch_fan.png --name paletta --out kit/ --tile light

出力:mark.png / mark-black.png / mark-white.png(シルエット)、lockup-light.png / lockup-dark.png、favicon.ico(16/32/48)、apple-touch-icon.png、icon-512.png、og-1200x630.png、preview.png。

書き出しの確認ボード

実際の広告バナーに載せた例です。ワードマークやコピーはコードで重ねているので、綴りは常に正しくなります。

広告での使用例

⑥ スキルとして公開するときにハマったこと

スキルは「書いた」だけでは足りず、エージェントが実際に使って動くかを試す必要がありました。隔離フォルダにこのスキルだけを入れ、3 つのスクリプトだけを許可して claude -p で試用しました。

最初の 2 回は許可待ちで止まり、成果物が出ませんでした。

  • 1 回目:実行しようとしたコマンドに、引用符つきの "#14141c" が含まれていました。引用符内の # が権限チェックで引っかかるのではないかと疑い、色引数を # なし(14141c)に変えました。これが本当の原因かは確認できていません(変えたあと 2 回目は別の理由で止まったため)。
  • 2 回目:エージェントが --help や mkdir まで許可待ちになりました。手順書にある相対パス(scripts/shapes.py)で実行しようとした可能性があると考え、**「スクリプトは出力フォルダを自分で作る」「インストール先のパスで実行する」**を手順書に追記しました(これも推測です)。
  • 3 回目で成功し、試用の記録をそのまま「演示」として載せました。

試用の出力は、スキルを褒めるだけではありませんでした。

  • 暗い背景で濃い色のロゴが消えることを、自分で指摘した
  • 6 番目の案が「P」ではなく「H」で、このブランドには不適切だと指摘した
  • 色見本のカードは 16px で 3 本の縞に潰れる、と正直に書いた

このあたりの記録を加工せず出す、というのがスキル公開時のルールでした。

ライセンスと限界

FLUX 3 Klein の重みは FLUX Kommunity License v1.0 です。公式ブログと Hugging Face の LICENSE.md を確認した範囲では、次のとおりです。

  • 本人と関連会社を合わせた年間売上が 500 万米ドル未満なら、無料で商用利用できる
  • 生成物の所有権は主張されないが、公開前に内容を確認するか、フィルターをかけることが求められる
  • 法令で必要な場合は AI 生成であることを開示する
  • 生成物を使って他の AI モデルを訓練・蒸留することは禁止

!!! warning
私が読んだのは要約ツール越しの内容で、逐語の全文ではありません。商用で使う前に、必ず原文を読んでください。
https://huggingface.co/black-forest-labs/flux-3-image-klein-base/blob/main/LICENSE.md
また、ローカルで使う量子化版(コミュニティ版)には別のライセンス表記がある場合があります。

このスキルにできないこともあります。

  • ロゴの唯一性は証明できません。Google レンズ・TinEye での画像検索と、USPTO / EUIPO(TMview)/ WIPO の商標検索を、最終候補のマークと名前の両方で行ってください
  • ラスター画像からベクター(SVG)は作りません。選んだ案は描き直すか、トレースしてください
  • 試用で確認したのはコード描画の経路だけです。ComfyUI + FLUX の経路は、試用環境に ComfyUI がなく、作者が手元で別に動かしただけです

まとめ

  • ロゴ作りは、**「磨く」前に「まったく違う案を広く出して、比較シートで落とす」**ほうがうまくいった
  • 質感は AI、正確さはコード。個数・対称・文字はコードに任せる
  • 小さいサイズ(16px)と明暗 2 つの背景での確認は、早い段階でやる
  • スキルは書いたあとに、エージェントに実際に試用させると、手順書の穴が見つかる

付録:使い方

エージェントに次のように頼むだけで動きます。

Paletta という、カラーパレットを見てスマホの壁紙にできるアプリのロゴを作って。
ミニマルで親しみやすく、紫は使わない。6 つのまったく違う方向を出して、
明暗の背景と 16px で比較し、上位 2 案を理由つきで教えて。

手動で動かす場合は、次の 3 コマンドです。

python3 scripts/shapes.py --out marks/ --ink 14141c --accent ff5c5c
python3 scripts/contact_sheet.py marks/ --out sheet.png --name paletta
python3 scripts/export_kit.py marks/4_swatch_fan.png --name paletta --out kit/
  • スキル本体(MIT):SkillPeek / logo-design
  • 動作要件:Python 3.9 以上、Pillow、numpy。AI 案を出す場合は、FLUX 3 Klein を読み込んだ ComfyUI が必要です
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?