コンテンツにスキップ
- 筆者はプロのデザイナーではないソフトウェアエンジニア
- チームやプロダクトのロゴを作る機会があり、AIエージェントを中心に据えた制作フローを試行錯誤してきた
- 今回はそのフローを紹介する
- ロゴにフォーカスしているものの、画像やイラスト等、幅広い範囲で参考にできるはず
- 以下、制作物の一部


- チームやプロダクトの哲学を整理し、どういうコンセプトのロゴにするかを決める
- このとき、リファレンスの収集や関連概念の調査なども合わせて行う
- Claude CodeやCodexなどのAIエージェントと壁打ちしながら深めていく
- 議論の内容はマークダウンファイルに逐次書き出してもらう
- ChatGPTやGeminiなどのチャット型AIでも壁打ちは可能だが、AIエージェントを使う利点はリポジトリ内に直接マークダウンファイルとして成果物を残せること
- 筆者は主にClaude Code(Sonnet 4.6)を使用
- この用途においてOpusを使うメリットは今のところ感じない
- 哲学やコンセプト、デザイン方針が固まったら、実際に画像生成を試みる
- なお、この工程で扱うのは主にイラスト部分であり、テキスト(ロゴタイプ)については考えない
- まずChatGPTやGeminiなどのマルチモーダルなAIモデルを試みることが多い
- ただし、作りたい画像の方向性とマッチしないことが多く、生成速度も遅め
- そこで最近はMidjourneyを主に利用している
- アーティスティックな画像生成が得意
- 生成速度が速く、1回で複数パターンを生成してくれる
- 画像生成モデルへ渡すプロンプトは、前工程で作成したコンセプトやデザイン案をもとにAIエージェントに自動生成してもらう
- Midjourneyは英語プロンプトが前提のため、自分で適切なプロンプトを書くのが難しいという事情もある
- 生成のたびに理想とのギャップをフィードバックし、プロンプトを繰り返し洗練させていく
- この過程では、自分が予想もしていなかった良い要素が偶然生まれることもあり、そのセレンディピティを大切にしている
- ちなみに画像生成AIについてはかなり前に検証した記事がある: 画像生成AIの「画風」


- フォントとカラーパレット(テーマカラー)をカラーコードレベルで決めておく
- フォントは Google Fonts で探すことが多い
- フォントは無数にあるため、求める雰囲気をAIに伝えると候補をいくつか提案してもらえる
- 薄い色で下書きを描く
- 別レイヤーに仮で色を置く
- 塗りレイヤーを非表示にし、その上に本番の線を置く
- 別レイヤーで本番の色を置く



- ロゴの場合は手ぶれ補正を強めにかけておくと綺麗なパスを描ける(画風による)
- クリスタはSVG出力に対応していないため、基本的にPNGで書き出す
- 画像が小さい場合は waifu2x で高解像度に拡大できる
- イラストがシンプルな場合は Vectorizer.ai でベクター画像(SVG)に変換できるらしい(未検証)
- 記号的または幾何学的なロゴであればそもそもクリスタのようなペイントソフトは向いていない
- Illustrator(イラレ) のようなソフトウェアを使用するもの良い
- 個人的にはAIエージェントでSVGをいじくる、という手法をよく取っている
- AIは図形認識が苦手で、思ったような図形変換がなかなかできないのでもどかしさもある
- SVGをいじるパッケージはおそらく大体の言語にはあるのではと思う
- テキスト生成、図形生成、イラストとテキストの合成、ロゴへのエフェクト適用など
- 基本的にNode.js(TypeScript)でスクリプトを書いて対応している
- この部分は手作業でコードを書くと大変なため、出力さえ良ければOKと割り切ってAIにガンガン書いてもらう
- ただし、スクリプト自体は適度に分割して肥大化させないような工夫はする
- フォントファイルの入手方法は2通り
- Fontsource に用意されているフォントはNPMでインストール
- そうでない場合はサイトから直接ダウンロード
- フォーマット(TTF、WOFF2など)は基本的にどれでも問題ない
- 読み込みには opentype.js を使用
- 特定フォントで文字を単に出力したいだけなら不要で、テキストに複雑な処理を適用したいときに便利
- 基本的な流れはフォント読み込み → SVGとして描画 → SVGを操作して形状やエフェクトを加える → 出力
- SVGにはフィルター機能が備わっており、Photoshopのフィルターに近いことが一通りできる
feGaussianBlur でぼかし、feColorMatrix で色変換、feDropShadow で影付け、feTurbulence でノイズ・テクスチャ表現など
- 簡単な加工の場合は ImageMagick 、写実的な場合には OpenCV を使うこともある

- Node.jsにはSVGを直接PNGにレンダリングする機能がないため、PuppeteerでSVGを開いてスクリーンショットを撮る方法を取っている
- Puppeteer以外にも、SharpやPlaywrightも選択肢になり得る
- Puppeteer はChromiumのレンダリングエンジンをフル活用するため、CSSフィルターやWebフォントなど複雑なSVGでも正確に出力できる
- Sharp は
libvips のラッパーで、ブラウザを起動するわけではないため、高速・軽量だが複雑なSVGフィルターには非対応なものもあるため、シンプルな加工向き
- Playwright は複数ブラウザに対応している点以外はPuppeteerとほぼ同じ
- これまではイラレやGIMPを苦戦しながら操作したり、Figmaで試したりと色々トライしてきたが、納得できる品質の成果物がなかなかできなかった
- 逆に完全に生成AIに任せるというのも、自分のこだわりたいポイントが上手く反映されず悶々としていた
- 今回紹介したように、様々なAIモデルを様々なフェーズで既存技術と組み合わせながら使うことで、マニュアルとオートマのちょうど良いバランスで制作できるようになった
- 今回紹介した手法は極力GUIを廃し、CLIを通じてAIの得意なテキストを主戦場とする取り組みであり、エンジニアが得意な領域でもあると思う
- 一方で、SVGの複雑な図形操作は、視覚を満足に使えないAIにとって(マルチモーダルでも)苦手領域な印象がある
- 今後も、より良いAIモデルの組み合わせ、既存技術との統合、指示の出し方、制作フローを模索していきたい