Closed13

AIでデザイン生成 Stitchめっちゃ良さそうメモ

ぱんだぱんだ

https://stitch.withgoogle.com/docs

ぱんだぱんだ

AIでデザイン生成今何が主流なの?

自分が知っている範囲で以下

  • v0
  • Figma Make
  • Stitch

どれも使ったことはなくStitchに関しては聞いたことあるくらいだった。もともと自分のブログサイトのデザインリニューアルが目的だったのでv0で出てくるものを取り込むのめんどくさそうだなという印象。Figma Makeがなんとなくよく使われてそうだなと感じたが個人でやっていてFigmaを挟むのが面倒、そもそもそんなにFigmaの操作慣れてないし。

じゃあ、Stitchというのはどんなだろうが最初に触った理由。

使ってはいないがざっと調べた感じは以下のような感じだと思う。

v0

v0は一番実装寄り。NextもしくはReactでコード生成まで一気にやりたいならv0が良いのかもしれない。

Figma Make

これは動くプロトタイプを作りたいというモチベーションが一番マッチしそう。AIとのチャットのやりとりでコード生成するのはv0と同じだが、既存のFigmaのコンポーネントやデザインシステムを取り込んだ上で生成できるのが強そう。既にFigmaを活用している、Figmaのデザインがある、Figmaにデザインシステムがあるといったときに有用そう。

Stitch

AIとのやりとりでデザインを複数生成、DESIGN.mdを通して実装をするAIエージェントにデザインシステムを橋渡しし、デザインを更新するといったデザインと実装の開発ループをいい感じにしてくれるのがStitchの立ち位置。

コード生成というよりはAIエージェントに渡すデザインとデザインシステムを用意して開発サイクルをまわしてくれるみたいなイメージ。

ぱんだぱんだ

Stitchとはなんなのか

すみません、ChatGPTに聞きました。

文章や参考画像を渡すだけで、Webサイトやアプリの画面デザインを生成し、デザイン案の比較・修正、複数画面をつないだプロトタイプ作成まで行えます。生成した成果物は、フロントエンドコードやFigma、Stitch MCPなどを通じて実装工程へ引き継げます。

さらに、色・フォント・余白・コンポーネント方針などをまとめた DESIGN.md を出力でき、CodexやClaude CodeなどのAIエージェントとデザインルールを共有できます。

一言で表すなら、

AIと会話しながらWeb・アプリのUIを設計し、そのまま実装工程へつなげられるデザインツール
です。

用途としては、Stitchでデザイン案を作る → DESIGN.mdや画面情報をCodexへ渡す → 実際のコードに実装する、という流れが分かりやすいです。

うん、まさにそんな感じ。

StitchはGoogle Labsが提供するUIデザインツールでまだ執筆時点ではBetaリリースとなっている。

ぱんだぱんだ

Stitchのチャット

よくあるAIチャットのUI。Webかアプリかを選択できるようになっており、デザインを生成するためのプロンプトを入力することでデザインを生成する。生成したデザインはFigmaのようなキャンバス上に生成される。

執筆時点では入力に以下も指定できそう。

  • ファイルアップロード
  • WebサイトURL

モデルは現時点で以下が選択できる。

  • Thinking with 3 Pro
  • Redesign (Nano Banana Pro)
  • 2.5 Pro
  • Fast

以下の公式ドキュメントにも記載があるがモデルはやりたいことによって切り替えることが推奨されている。

https://stitch.withgoogle.com/docs/learn/design-modes/

例えば、最初のデザイン設計でAIと壁打ちしながらデザインを作り込みたいならThinking with 3 Proが適しており、既存のWebサイトのデザインをモダナイズするような用途であればNano Banana Proが適している。ちなみに、ドキュメントにはFastの記載があったが実際にはFastの代わりにIdeateというモードが選択できるようになっていた。

ぱんだぱんだ

デモ

とりあえず使ってみた。以下は今現在の筆者のプロフィールサイトです。なんとも野暮ったいというか今っぽくないデザインなのでリニューアルしたい。

リデザインになりそうなのでとりあえずNano Bananaを使って適当にプロンプトを投げてみた。公開しているサイトのURLが入力で使えるのでURLを指定。

プロフィールサイトのデザインがイケてないのでデザインをリニューアルしてください。
全体的にはダーク系
暗すぎないでPopで可愛い感じがだせると良い

これで出てきたのが以下

なるほど、Nano Bananaで作ったスライドっぽい感じのが出てきた。画像生成だからアイコンはイメージで作ったものを使うのか。

ファイルアップロードもできるのでアイコン画像をアップロードしてもう1回生成してもらった。

なんか微妙だったのでモードをThinking with 3.1 Proにして作成してもらった。

この感じでいいんだけど全体的にうるさすぎる印象。可愛い感じにはなってるけどもう少し余白を作って色の数も減らしていいと思う。あと背景色はもう少し明るくできると良さそう

だいぶ良くなった。やって気づいたがThinking with 3.1 Proもしくは3 Flashなどを使う場合、DESIGN.mdが生成される。あんまりわかってないがNano Bananaでつくるデザインはあくまで画像データになるんだろうか?

複数のデザイン案をだしてもらうことも可能。

DESIGN.mdに関しては後でもう少し掘り下げる予定だが一旦以下のようなものがエクスポートできたりする。

---
name: Soft Neon Dev
colors:
  surface: '#101224'
  surface-dim: '#101224'
  surface-bright: '#37374c'
  surface-container-lowest: '#0b0c1f'
  surface-container-low: '#191a2d'
  surface-container: '#1d1e31'
  surface-container-high: '#27283c'
  surface-container-highest: '#323347'
  on-surface: '#e1e0fb'
  on-surface-variant: '#d7c1c8'
  inverse-surface: '#e1e0fb'
  inverse-on-surface: '#2e2f43'
  outline: '#9f8c93'
  outline-variant: '#524349'
  surface-tint: '#ffafd4'
  primary: '#ffc9e0'
  on-primary: '#5a133d'
  primary-container: '#ff9ecd'
  on-primary-container: '#7b3059'
  inverse-primary: '#92436d'
  secondary: '#64d5f4'
  on-secondary: '#003641'
  secondary-container: '#109ebb'
  on-secondary-container: '#002e39'
  tertiary: '#abe794'
  on-tertiary: '#063900'
  tertiary-container: '#90cb7b'
  on-tertiary-container: '#215614'
  error: '#ffb4ab'
  on-error: '#690005'
  error-container: '#93000a'
  on-error-container: '#ffdad6'
  primary-fixed: '#ffd8e7'
  primary-fixed-dim: '#ffafd4'
  on-primary-fixed: '#3d0026'
  on-primary-fixed-variant: '#762b55'
  secondary-fixed: '#b0ecff'
  secondary-fixed-dim: '#64d5f4'
  on-secondary-fixed: '#001f27'
  on-secondary-fixed-variant: '#004e5e'
  tertiary-fixed: '#b5f39e'
  tertiary-fixed-dim: '#9ad685'
  on-tertiary-fixed: '#022100'
  on-tertiary-fixed-variant: '#1d5110'
  background: '#101224'
  on-background: '#e1e0fb'
  surface-variant: '#323347'
typography:
  display-lg:
    fontFamily: Plus Jakarta Sans
    fontSize: 48px
    fontWeight: '800'
    lineHeight: '1.2'
    letterSpacing: -0.02em
  headline-lg:
    fontFamily: Plus Jakarta Sans
    fontSize: 32px
    fontWeight: '700'
    lineHeight: '1.3'
  headline-md:
    fontFamily: Plus Jakarta Sans
    fontSize: 24px
    fontWeight: '700'
    lineHeight: '1.4'
  body-lg:
    fontFamily: Plus Jakarta Sans
    fontSize: 18px
    fontWeight: '400'
    lineHeight: '1.6'
  body-md:
    fontFamily: Plus Jakarta Sans
    fontSize: 16px
    fontWeight: '400'
    lineHeight: '1.6'
  label-md:
    fontFamily: Space Grotesk
    fontSize: 14px
    fontWeight: '500'
    lineHeight: '1.2'
    letterSpacing: 0.05em
  headline-lg-mobile:
    fontFamily: Plus Jakarta Sans
    fontSize: 28px
    fontWeight: '700'
    lineHeight: '1.3'
rounded:
  sm: 0.25rem
  DEFAULT: 0.5rem
  md: 0.75rem
  lg: 1rem
  xl: 1.5rem
  full: 9999px
spacing:
  unit: 8px
  container-padding: 4rem
  card-gap: 2.5rem
  section-margin: 6rem
  inner-padding: 2rem
---

## Brand & Style

The design system evolves the "Pop Dark" aesthetic into a refined, developer-centric workspace that balances playfulness with technical clarity. The brand personality is "Clean, Cute, and Playful," moving away from high-density chaos toward an organized, airy, and inviting interface. 

The visual style blends **Minimalism** with a **Tactile** edge. By utilizing significant whitespace and a softened dark palette, the UI reduces cognitive load while maintaining its personality through large radius curves and gentle neon accents. It aims to evoke a sense of approachable expertise—professional enough for a portfolio, but spirited enough to reflect a creative developer's personality.

## Colors

The palette is anchored by a soft charcoal-indigo base, providing a "Pop Dark" foundation that is easier on the eyes than pure black. The color system is streamlined to focus on two high-visibility accents:

*   **Primary (Soft Neon Pink):** Used for primary calls to action, profile borders, and key brand highlights.
*   **Secondary (Soft Cyan):** Used for technical tags, link states, and secondary interactive elements.
*   **Neutrals:** The background is a deep muted indigo, with surfaces using a slightly lighter variant to create depth without relying on heavy borders.
*   **Semantic Colors:** Success, Warning, and Error states should be desaturated to match the "soft" nature of the neon palette.

## Typography

This design system uses **Plus Jakarta Sans** as the primary typeface to deliver a soft, friendly, and geometric feel. It provides the "cute" aspect of the brand while remaining highly legible for technical blog content.

For metadata, tags, and code-adjacent labels, **Space Grotesk** is introduced. Its technical, slightly quirky proportions provide a "developer" aesthetic that contrasts beautifully with the rounded body text. 

Maintain high line-heights (1.6 for body) to support the goal of increased whitespace and breathability. Headlines should use tight letter-spacing to feel impactful and "pop."

## Layout & Spacing

The layout philosophy shifts from a compact "dashboard" feel to a fluid, spacious **Fixed Grid** model.

*   **Desktop:** 12-column grid with a max-width of 1200px. Gutters are set to 32px to ensure distinct separation between content blocks.
*   **Whitespace:** Increase vertical margins between sections significantly (80px-120px) to allow each part of the portfolio to stand alone.
*   **Mobile:** 4-column grid with 24px side margins. Content should stack vertically, maintaining generous 32px gaps between cards to avoid a cluttered look.
*   **Alignment:** Center-aligned containers for the profile and hero sections, with left-aligned grids for the blog list to maintain readability.

## Elevation & Depth

Depth is achieved through **Tonal Layers** and **Subtle Glows** rather than traditional heavy shadows.

*   **Surfaces:** The main background is the darkest layer. Cards and containers use a slightly lighter indigo (`surface_hex`) to "lift" off the page.
*   **Glow Effects:** Accents use a soft, 20% opacity drop shadow of the primary or secondary color with a high blur radius (24px+). This creates a "neon" atmosphere without the harshness of high-contrast glows.
*   **Glassmorphism:** Navigation bars use a 12px backdrop blur with a 10% white tint to stay legible while scrolling over colorful content.

## Shapes

The shape language is defined by "Rounded" curves. 

*   **Cards & Containers:** Use `rounded-xl` (1.5rem) to maintain the playful, approachable character.
*   **Profile Image:** The panda icon is strictly circular with a consistent 4px border in the Primary Pink or a tri-color stroke (Pink, Cyan, Neutral) to reference the original's energy in a cleaner way.
*   **Interactive Elements:** Buttons and tags use `rounded-lg` (1rem) to feel tactile and soft.

## Components

### Profile Card
The profile section should be centered and spacious. The panda icon must be large (min 160px) with a simple, high-contrast border. Subtext and links should have generous 16px spacing between lines to avoid the "compressed" look of the reference.

### Blog List Cards
Blog cards should abandon the colorful backgrounds for a clean `surface_hex` background. 
- **Header:** Title in `headline-md`.
- **Meta:** Date and reading time in `label-md` using a muted neutral color.
- **Padding:** 32px internal padding on all sides.
- **Interaction:** On hover, the card should scale slightly (1.02x) and gain a soft primary-color glow.

### Chips & Tags
Tags use a secondary color background at 15% opacity with a solid 1px border. Use `Space Grotesk` for tag text to give it a technical "dev" feel.

### Buttons
Buttons are solid Primary Pink with dark text for high contrast. They should have a "squishy" feel—expanding slightly on hover and shrinking on click.

### Inputs
Search or contact fields should use a dark stroke that glows Cyan when focused, maintaining the "soft neon" theme.

いい感じではあるんだけどなんかこれってAIでいかにも生成しましたという感じがデザインに出ているっぽくてこのAIっぽさを消すアプローチもあるみたい。

tasteというskillとして公開されているようでこれも後で試してみたい。

https://stitch.withgoogle.com/docs/skills/taste/

ぱんだぱんだ

MCP

Stitchはremote MCPサーバーが提供されいてるのでMCPを使って自身のAIエディタもしくはAIエージェントからStitchにアクセスできる。

Stitchの良いところはStitch上のデザイン情報を手元のAIエージェントに渡せるところにあり、それにはMCPを使うことになる。

Stitchでデザインして得たデザイン情報をもとにFigma Makeでコード生成している人もいた。

https://zenn.dev/sunagaku/articles/stitch-figmamake-design-flow

これはFigma Makeを試してないのでわからないが生成されるプロトタイプがけっこう変わってくるのだろうか?前述もしているがFigmaの活用があったり既存のFigma資産があるならFigma Makeに持っていくのも選択肢の一つ。実際、StitchのデザインをFigmaにエクスポートすることもできるようになっており、細かい調整をFigmaに移植して行い、Figma Makeでプロトタイプを作成するみたいな使い方も考えられる。

とりあえず、MCPの設定に進む。

remote MCPの設定には認証を通す必要があるためAPI keyを設定するかOAuthで認証するかのどっちか。今回はシンプルにAPI keyを設定する。永続的なAPI keyの使用に抵抗がある人はOAuth認証を選ぶと良さそう。今回はAPI keyを使う。

API keyはStitchの設定画面から生成できる。生成したAPI keyをお使いのAIツールのMCP設定に記載する。以下はcodexの例。

[mcp_servers.stitch]
url = "https://stitch.googleapis.com/mcp"

[mcp_servers.stitch.http_headers]
"X-Goog-Api-Key" = "xxxx"

ちなみにStitchはTypeScriptでSDKも提供しているためプログラムからStitchにアクセスすることも可能となっていたりする。

ぱんだぱんだ

DESIGN.md

これまでに何回か出てきてるDESIGN.md。簡単に言うとデザイン版のAGENTS.md。AIエージェントに情報を渡すのにAGENTS.mdなどを使ってきたがデザイン情報をAIエージェントに渡すために使うのがDESIGN.md

DESIGN.mdはStitchで作成したデザインからエクスポートすることもできるし、デザインに長けているなら手書きで作成することもできる、と公式ドキュメントに記載あったがデザインからエクスポートすることになるのがほとんどだろう。

DESIGN.mdの例は既に貼ってあるが再度以下に貼っておく。

DESIGN.mdの例
---
name: Vivid Dark Pop
colors:
  surface: '#081425'
  surface-dim: '#081425'
  surface-bright: '#2f3a4c'
  surface-container-lowest: '#040e1f'
  surface-container-low: '#111c2d'
  surface-container: '#152031'
  surface-container-high: '#1f2a3c'
  surface-container-highest: '#2a3548'
  on-surface: '#d8e3fb'
  on-surface-variant: '#c6c6cd'
  inverse-surface: '#d8e3fb'
  inverse-on-surface: '#263143'
  outline: '#909097'
  outline-variant: '#45464d'
  surface-tint: '#bec6e0'
  primary: '#bec6e0'
  on-primary: '#283044'
  primary-container: '#0f172a'
  on-primary-container: '#798098'
  inverse-primary: '#565e74'
  secondary: '#ffafd3'
  on-secondary: '#620040'
  secondary-container: '#85145a'
  on-secondary-container: '#ff93c8'
  tertiary: '#2fd9f4'
  on-tertiary: '#00363e'
  tertiary-container: '#001b20'
  on-tertiary-container: '#008ea1'
  error: '#ffb4ab'
  on-error: '#690005'
  error-container: '#93000a'
  on-error-container: '#ffdad6'
  primary-fixed: '#dae2fd'
  primary-fixed-dim: '#bec6e0'
  on-primary-fixed: '#131b2e'
  on-primary-fixed-variant: '#3f465c'
  secondary-fixed: '#ffd8e7'
  secondary-fixed-dim: '#ffafd3'
  on-secondary-fixed: '#3d0026'
  on-secondary-fixed-variant: '#85145a'
  tertiary-fixed: '#a2eeff'
  tertiary-fixed-dim: '#2fd9f4'
  on-tertiary-fixed: '#001f25'
  on-tertiary-fixed-variant: '#004e5a'
  background: '#081425'
  on-background: '#d8e3fb'
  surface-variant: '#2a3548'
typography:
  headline-xl:
    fontFamily: Sora
    fontSize: 48px
    fontWeight: '800'
    lineHeight: 56px
    letterSpacing: -0.02em
  headline-lg:
    fontFamily: Sora
    fontSize: 32px
    fontWeight: '700'
    lineHeight: 40px
    letterSpacing: -0.01em
  headline-lg-mobile:
    fontFamily: Sora
    fontSize: 24px
    fontWeight: '700'
    lineHeight: 32px
  body-md:
    fontFamily: Hanken Grotesk
    fontSize: 16px
    fontWeight: '400'
    lineHeight: 24px
  label-caps:
    fontFamily: Space Mono
    fontSize: 12px
    fontWeight: '700'
    lineHeight: 16px
    letterSpacing: 0.1em
  button-text:
    fontFamily: Sora
    fontSize: 14px
    fontWeight: '600'
    lineHeight: 20px
rounded:
  sm: 0.5rem
  DEFAULT: 1rem
  md: 1.5rem
  lg: 2rem
  xl: 3rem
  full: 9999px
spacing:
  base: 8px
  container-padding: 24px
  gutter: 16px
  stack-sm: 4px
  stack-md: 12px
  stack-lg: 32px
---

## Brand & Style
The brand personality is high-energy, futuristic, and unapologetically bold. It targets a tech-forward, creative audience that thrives in "dark mode" environments but seeks more personality than standard enterprise interfaces. The design system leverages a **Vivid Dark Pop** aesthetic—a fusion of deep, celestial backgrounds with high-chroma neon accents.

The emotional response should feel like a premium "starry tech space": immersive, luminous, and kinetic. By mixing **Glassmorphism** (for depth and transparency) with **Neon-Brutalism** (for high-contrast strikes of color), the UI feels like a glowing cockpit in a digital nebula.

## Colors
The palette is built on a "Deep Space" foundation with "Neon Flare" accents.

- **Primary (Deep Space):** `#0f172a` is the canvas. Use it for the main background to provide infinite depth.
- **Secondary (Neon Pink):** `#f472b6` is for high-priority actions and emotional highlights.
- **Tertiary (Electric Cyan):** `#22d3ee` is used for data visualization, secondary actions, and links.
- **Accent (Lime Green):** `#a3e635` provides a "go" signal and success states, cutting through the dark with maximum visibility.
- **Surface (Indigo Navy):** `#1e293b` is used for cards and containers to create a subtle separation from the background.

## Typography
The typography uses a tri-font strategy to balance personality and utility. **Sora** provides a geometric, futuristic weight for headlines. **Hanken Grotesk** ensures maximum readability for body copy in high-contrast environments. **Space Mono** is used sparingly for technical labels and metadata to lean into the "tech space" narrative.

Headlines should occasionally use "text-shimmer" gradients moving from Cyan to Pink to emphasize the "Vivid Pop" energy.

## Layout & Spacing
The layout follows a **fluid grid** model with generous internal padding to allow elements to "breathe" against the dark background. 

- **Desktop:** 12-column grid, 24px gutters, 80px side margins.
- **Mobile:** 4-column grid, 16px gutters, 16px side margins.
- **Rhythm:** Use an 8px base unit. All component heights and margins must be multiples of 8.

Elements should feel like they are floating. Avoid cramped vertical stacks; instead, use wide margins to emphasize the "infinite space" feel.

## Elevation & Depth
Depth is achieved through **Glassmorphism** and **Luminous Shadows** rather than traditional grey shadows.

1.  **The Base Layer:** Solid `#0f172a`.
2.  **The Glass Layer:** Cards use a semi-transparent fill (`rgba(30, 41, 59, 0.7)`) with a `backdrop-filter: blur(12px)`.
3.  **The Glow:** Instead of black shadows, use tinted, diffused shadows based on the component's accent color (e.g., a Pink button gets a Pink shadow with 30% opacity and 20px blur).
4.  **The Edge:** Use a 1px inner border (stroke) with 10% white opacity to define the edges of glass containers.

## Shapes
Maximum roundness is a core pillar of this design system. All interactive elements—buttons, input fields, and tags—must use **pill-shaped** (fully rounded) corners. This softens the high-contrast "Brutalist" colors and makes the interface feel approachable and modern. Large containers like cards should use `rounded-xl` (3rem) to maintain the organic, fluid feel.

## Components
- **Buttons:** Primary buttons are pill-shaped with a solid Neon Pink or Electric Cyan fill and a matching colored glow shadow. Text is high-contrast white or deep navy.
- **Chips/Tags:** Small pill-shaped containers with a 1px colored border and a subtle 10% opacity fill of the same color.
- **Cards:** Glassmorphic surfaces with `rounded-xl` corners, a 1px subtle top-border (highlight), and a soft backdrop blur.
- **Inputs:** Dark navy fills with a 1px Cyan border that "glows" (increases shadow spread) when focused. 
- **Lists:** Clean rows separated by low-opacity lines (`rgba(255,255,255,0.05)`), featuring Cyan or Lime Green icons for visual rhythm.
- **Selection Controls:** Checkboxes and Radials use Lime Green for the "active" state to provide an unmistakable "On" signal.

ファイルを見てもらえればわかるがカラーやタイポグラフィ、余白など細かくデザイントークンが定義されていたり、デザインの概要などが記載されている。

DESIGN.mdには仕様通りかを検証するためのCLIが提供されていたりする。

DESIGN.mdはStitchのデザインからエクスポートしたり手動で作成する以外に公開されているWebサイトのURLから作成したり、AIエージェントのskillで実際のコードベースから作成したりもできる。

ぱんだぱんだ

Skills

繰り返しになるがStitchのいいところとしてStitch上でのデザイン作業とローカルの開発環境の行き来を楽にしてくれるというのがあるため、そのフローに乗るにはSkillを追加およびMCPの設定をしておく必要がある。

skillの追加は以下のようにpluginの追加で可能。

npx plugins add google-labs-code/stitch-skills --scope project --target claude-code
npx plugins add google-labs-code/stitch-skills --scope project --target cursor
npx plugins add google-labs-code/stitch-skills --scope project --target gemini-cli

codexに関してはcodexのマーケットプレイス経由で入れろとあったので以下のようにして追加。

codex plugin marketplace add google-labs-code/stitch-skills --ref main \
  --sparse .agents/plugins \
  --sparse plugins/stitch-design \
  --sparse plugins/stitch-build \
  --sparse plugins/stitch-utilities

https://github.com/google-labs-code/stitch-skills

skillを使うことでStitchと手元の開発環境とを双方向に行き来することができる。公式ドキュメントにあった以下の図がわかりやすかったので貼っておきます。

Stitchのskillを活用とした自律型の開発ループの流れが公式ドキュメントに記載されている。

https://stitch.withgoogle.com/docs/skills/build-in-a-loop/

これはStitchでデザインされているすべてのページを自律的にページ単位で自動的に生成していくサイクルでデザインビジョンとデザインシステムを一度定義すればあとはskillがいい感じに開発してくれるというもの。

ぱんだぱんだ

デザインリニューアル

DESIGN.mdをリポジトリに配置して適当にリニューアルの指示を出してみた。

https://jy-panda.com/

前よりは断然良くなった。デザインもStitchからDESIGN.mdに抽出したデザイントークンがちゃんと使われていそう。ただたぶんコード生成にはskillは使われてない。

コード生成に関係するskillを確認してみたがreact-componentsshadcn-uiというskillがあるみたいだ。ちゃんと支持すればskillを使って実装してくれたのかもしれない。

ぱんだぱんだ

Stitchにデザインをアップロードしてみる

やりたいことはやったので完成したデザインをStitchにアップロードしてみる。これにはskillが使えそう。

StitchにこのWebサイトのデザインをアップロードできますか??

上のように質問してみたところ以下のように回答があった。

Stitch MCPには接続できています。現在のSoft Neon Devデザインシステムも、最新のStitchプロジェクトに登録済みです。
ただし、現在利用可能なStitch MCPには「公開URLを読み込んで、そのまま画面としてインポートする」機能がありません。
可能なのは次の方法です。
現在のコードとサイト構成をもとに、Stitch上へホーム画面・記事画面を再生成する
.stitch/DESIGN.mdのデザインシステムを適用する
生成後の画面をテキスト指示で調整する
スクリーンショットをStitch画面から手動インポートし、その後MCPで編集する
現在のサイトをかなり近い形でStitchへ再生成することはできますが、スクリーンショットの完全なアップロードではなく、コードと実際のサイトを参照した再構築になります。

アップロードというかコードベースから頑張ってデザインを再現するみたいな感じみたい。とりあえずやってもらった。

勝手に再現されたデザインもあるけど9割くらい再現はされた。

https://stitch.withgoogle.com/projects/6075755493875450331

ぱんだぱんだ

AI味を消す

Tasteというアプローチ

https://stitch.withgoogle.com/docs/skills/taste/

https://github.com/Leonxlnx/taste-skill

追加でskillをインストールする必要がある。

npx skills add https://github.com/Leonxlnx/taste-skill

Codexを使っている場合はマーケットプレイスから探さないとだめかも。

taste-designskillを使ってデザインを更新してもらったのがこちら。

https://stitch.withgoogle.com/projects/4403079275156026689

なるほど、ムズいな。

このskillはAIっぽくなるよくあるデザインを厳密に禁止してるっぽくて具体的には以下のようなものがあるみたい。

❌ デザインに絵文字を使用していないか
❌ Interフォントを使用していないか
❌ 純粋な黒(#000000)を使用していないか
❌ ネオンのような外側のグローシャドウを使用していないか
❌ 3カラム均等幅のカードレイアウトになっていないか
❌ 架空の数値を記載していないか(例:「稼働率99.98%」「平均応答速度124ms」など)
❌ AIが書いたような決まり文句を使用していないか(例:「Elevate(高める)」「Seamless(シームレスな)」「Unleash(解き放つ)」など)
❌ 中身のないUIテキストを使用していないか(例:「スクロールして探索」「跳ねる山括弧アイコン」など)
❌ 「ラベル // 年」といった書式パターンを使用していないか

ネオンっぽい感じは確かにAIっぽいよね。

とりあえず、DESIGN.mdを更新してもらって実装してみてもらった。

意外と良いか?ダーク系も作ってもらった。

良さそう。どっちも良さそうではあったからもうダークモードとライトモードの切り替えできるように実装してもらった。

これredesignだから最初のデザインに引っ張られているのはあるか。最初からtaste skillを使ってAIっぽさが出ないようにデザイン出力したほうが良いものが出たかもしれない。でも、そもそもがデザインリニューアルだしな。0から作らせたほうが良かったかも

このskillはデザイン前にコンセプト案みたいなのを出力するように指示されているっぽいので今回は以下のような記載があった。

リニューアル案は、北海道の静けさと子育て後の学びを表す「Quiet Hokkaido Editorial」とし、温かい紙色・チャコール・低彩度の朱色1色、非対称レイアウト、カードを減らした編集的な記事一覧へ切り替えます。

「北海道」と「子育て」と「学び」というキーワードから温かみのあるデザインテーマになったようだ。確かにサイト内容関係なく汎用的なデザイン割り当てられるよりはサイトの内容からデザイン決めてもらった方が良さげではある。

若干メリハリが薄れた気がするので前のデザインの方が良かったところもあるが淡い感じの色味とかの方が好みではあるのでこっちのデザインを採用することにする。

ちょっと修正した

一番最初のデザインに戻ってきた気がする。

やっぱり前の方が良かった気もする、わからん

ぱんだぱんだ

新画面の開発

Stitchを使うユースケースを考えてみたけどいろいろ使い方はありそうだが

  • 完全に0からサイト構築するときの初手でサイトデザインを壁打ちしながら作成する
  • 既存のサイトからDESIGN.mdを抽出し、Stitchのキャンバスでデザイン作成する

ざっくり上記のような感じだろうか。プロダクトの初期でデザインシステムとかをFigmaで細かく作り込まないで実装進めたいときにはかなり良さそうなイメージ。まさにバイブデザイン。プロダクトが安定してきたらFigmaにエクスポートして抽出しているDESIGN.mdをもとにデザインシステムを構築するとかもできそう。

どっちにしろ抽出したDESIGN.mdをもとにStitchのキャンバス上で新しい画面をデザインすることになりそうなのでやってみる。

いろいろ試行錯誤したがシンプルにDESIGN.mdを指定してどういう画面を作成してほしいかのプロンプトを投げることになりそう。

なんか生成した画面を編集再生成みたいなことができなくて毎回プロンプトで指示出したら新しい画面デザインが作成されるのでやりとりが増えるとキャンバス上が混雑する。新しい画面を作成せずに生成した画面デザインを編集し続ける方法があるのかもしれないがそのやり方を見つけられなかったのであきらめ

あとは画面遷移で紐付けたワイヤーフレームワーク的な感じには現状できなそう。プロトタイプを即座に作って画面遷移を再現することはできそうだが画面同士の結びつきをもたせるのは現状難しそう?

とりあえず、Zennのスクラップが個人的に一番使いやすく技術ネタ以外もスクラップで投稿したいと思っているのでブログにスクラップ画面を新規で作成してもらった。

まあ、デザインのテーマを維持しつつざっくりとしたデザインを生成するのがStitchの今のところの使い方なんだろう。

このStitchのデザインとDESIGN.mdを使って実装をしてみる。

これトークンの節約になるかなと思ってStitchのキャンバス上でデザイン作成したけど手元の開発環境からClaude CodeとかCodexのskillを使ってremoteでデザイン作成したほうが質は良くなるかも。tasteのskillも使えるし。手元でCodex経由でデザイン調整してもらったのが以下。

実際のコードベースも知ってるしトークン消費が問題なければ普段使っているAIエージェント使ったほうが良いかもしれない。今回はあんまりデザインのクオリティは変わらないような気もしなくもない。

Stitch上のキャンバスに新しい画面デザインがとりあえずできたので手元のAIエージェントを使って実装してもらう。

再現度たけー

ぱんだぱんだ

感想

デザインわからんエンジニアがFigmaとか使わずにサクッと動くものを作りたいときにめっちゃ刺さると思う。v0はまるっと作りすぎるし、Figma MakeはFigma上にデザイン作成する場合やプロトタイプに寄ってる気がする。いずれもエディタやAIエージェントのタブから離れて作業しないといけない。

Stitchならskillを使えばエディタもしくはデスクトップのApp上からremoteでデザインを練ることもできるし、そのまま実装もできるし、コードベースを参照できるので実装の柔軟性が高そう。

個人的には何か動くものを作るときデザインがネックでモチベーションが上がらないことが多かったがStitchがあればそのハードルがかなり下がる。

その分、デザインFigmaに比べれば雰囲気デザインだからちゃんとしたものを最終的に作りたいなら最初からFigmaもしくはStitchで作成したデザインをFigmaにエクスポートして移行したほうが良さそう。

あとはtasteのskillを初めて知ったのだけどとても有効そう。中身はざっくりとしか見てないけどかなり作り込まれているし作成するサイトテーマみたいなものを出力させてからAIが使うデフォルトデザインみたいなのを排除しているから毎回同じようなものを出力するみたいなのがけっこうなくせそう?これはもう少し使ってみないとわからないけど。

まだBeta版リリースだが十分活用できる感じがする。Stitch上のキャンバスの使い勝手とかがもう少し良くなるともっと良さそう。

あとあれだ、DESIGN.mdはかなり良いよね。デザインシステムってかなりハードル高く感じてしまうというかFigmaとかデザインについての習熟度みたいなのが求められそうな気がしてしまうけどDESIGN.mdという形式にデザインシステムを抽出してくれるのが画期的すぎる。

リポジトリ上に配置することでエンジニア的には見やすいし、コードに近いところにあったほうが扱いやすい気がする。

もっと流行ってもいい気がするけどあんまりStitchに関して情報ないね。まだベータ版リリースだからかな。というか実際の仕事だとFigma使うことが多いからFigma Makeのほうが選択肢にあがるのか。

個人で何か作るとか何も既存資産ない中で最速で作りたい時とかにいいのかもしれない。とりあえず、個人的にはとても気に入ったので個人で何かデザイン作るときは積極的に使っていこうと思います。

このスクラップは21日前にクローズされました