AIエージェント入門

v0.dev完全ガイド2026|Vercel製AI UI生成・Next.js実装

v0.dev完全ガイド2026|Vercel製AI UI生成・Next.js実装

この記事の結論

v0.devの使い方・料金プラン・shadcn/ui活用・Next.js 15実装・Bolt/Lovable比較まで完全網羅。コード例15本付き実践ガイド。

結論:本記事では「v0.dev完全ガイド2026」の定義・主要機能・実際の活用方法を、初心者でも理解できる形で体系的に解説します。

対象読者:本テーマに興味がある実務担当者・意思決定者。

読了後にできること:本記事の要点を踏まえて、自社や自分の状況に合わせた次のアクションを判断できます。

v0.devとは何か — Vercelが作ったAI UIビルダーの全貌

AI駆動のコード生成アプローチ

v0.dev(現在は v0.app)は、Vercelが2023年に公開したAI駆動のUIコード生成サービスです。日本語を含む自然言語プロンプトを入力すると、React + Tailwind CSS + shadcn/ui ベースの本番品質コンポーネントが数秒で生成されます。

📊 関連比較:主要12ツールを料金・コンテキストウィンドウ・OSS度・用途の4軸で横並びにした【2026年最新】AIエージェントツール完全比較12選|用途・料金・選び方ガイドも併せて参照してください。

「デザインしてからコードに変換する」のではなく、「コードを最初から正確に生成する」アプローチが特徴です。生成されたコードはTypeScriptで型付けされ、シニアエンジニアのコードレビューに通るレベルの品質を持ちます。

2026年時点の主要機能と進化

2026年現在、Next.js 15 / App Router 対応・Figmaインポート・Git連携・サンドボックス実行環境を備えた統合開発プラットフォームに進化しています。

CLIによるローカル環境との連携

v0 CLIを使えば、生成したコンポーネントをローカルプロジェクトにワンコマンドで追加できます。

# v0.app にブラウザでアクセス(登録不要・無料プランあり)
# https://v0.app/

# v0 CLIでコンポーネントをローカルプロジェクトに追加
npx v0 add [component-id]

# Next.js 15で依存関係の衝突が起きる場合
npx --legacy-peer-deps v0 add [component-id]

利用プラン — 無料から Enterprise まで

トークン制への移行と課金の仕組み

2026年2月以降、v0はクレジット制からトークン制に移行しました。生成の複雑さによって消費トークンが変動します。

プラン別機能比較

以下の表で、各プランの月額・機能・想定用途を比較できます。

プラン 月額 主な機能 用途
Free $0($5クレジット付) 基本UI生成、コードコピー 個人学習・試用
Premium $20/月 Figmaインポート、API アクセス、月$20クレジット 個人開発者
Team $30/ユーザー/月 共有クレジット、チームワークスペース スタートアップ
Business $100/ユーザー/月 高度なDB統合、優先サポート 中規模チーム
Enterprise 要問い合わせ カスタムモデル、SLA、SSO 大企業

コストパフォーマンスの考え方

無料プランは月$5クレジットが毎月リセットされます。シンプルなボタンコンポーネントはわずか数セントで生成できますが、複雑なダッシュボードは数ドル消費することもあります。定期的にv0を使う場合はPremium($20/月)がコスパ最良です。

基本的な使い方 — プロンプトからコードまで5分

v0の操作は非常にシンプルです。ブラウザで v0.app を開き、テキストボックスにUIの要件を書くだけです。

プロンプトの書き方

生成精度を高めるには、使用するUIライブラリやレイアウト要件を具体的に記述するのがポイントです。

【基本プロンプト例】
shadcn/ui を使ったユーザープロフィールカードを作成してください。
- アバター画像(左側)
- 名前・役職・メールアドレスを右に表示
- フォローボタン(ティール色)
- レスポンシブ対応

【より具体的なプロンプト例】
Next.js 15 App Router に組み込める管理者ダッシュボードのサイドバーを作成。
- Tailwind CSS + shadcn/ui の Sidebar コンポーネント使用
- ナビゲーション項目: ホーム、ユーザー管理、設定
- アクティブ状態をハイライト
- ダークモード対応
- TypeScript で型定義付き

生成されたコードのコピー方法

# 方法1: ブラウザでコードブロックをコピー
# v0の「Code」タブに切り替えてコピーボタンをクリック

# 方法2: v0 CLI でローカルに追加(推奨)
# 生成された UI の URL から component ID を取得
# 例: https://v0.app/chat/abc123 → ID は abc123

npx v0 add abc123
# → components/ui/ 配下に自動追加される

# 方法3: GitHub 連携でブランチに直接 push
# v0 の Git パネル → 「Create Branch」→ 「Create PR」

生成結果のプレビューと調整

v0はサンドボックス環境でリアルタイムプレビューを提供するため、生成直後にレスポンシブ表示やインタラクションを確認し、必要に応じてチャットで追加指示を出せます。

shadcn/ui コンポーネント活用パターン

shadcn/ui の初期セットアップ

v0が生成するコードは shadcn/ui をベースにしています。shadcn/ui はコンポーネントライブラリではなく「コードを直接プロジェクトにコピーする」アプローチのため、v0との相性が抜群です。

# shadcn/ui の初期セットアップ(Next.js 15)
npx shadcn@latest init

# 必要なコンポーネントを個別インストール
npx shadcn@latest add button
npx shadcn@latest add card
npx shadcn@latest add dialog
npx shadcn@latest add form
npx shadcn@latest add table

# v0 で生成したコンポーネントを追加
npx v0 add [component-id]

v0生成コードの構造と特徴

v0が生成するコードは、shadcn/ui の cn() ユーティリティ、cva() によるバリアント定義、Radix UI プリミティブを正しく使用しています。追加設定なしで既存プロジェクトに組み込めます。

// v0 が生成する典型的なコンポーネント例
import { cn } from "@/lib/utils"
import { Button } from "@/components/ui/button"
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"

interface StatsCardProps {
  title: string
  value: string
  change: number
  className?: string
}

export function StatsCard({ title, value, change, className }: StatsCardProps) {
  return (
    <Card className={cn("w-full", className)}>
      <CardHeader className="pb-2">
        <CardTitle className="text-sm font-medium text-muted-foreground">
          {title}
        </CardTitle>
      </CardHeader>
      <CardContent>
        <div className="text-2xl font-bold">{value}</div>
        <p className={cn(
          "text-xs mt-1",
          change > 0 ? "text-green-600" : "text-red-600"
        )}>
          {change > 0 ? "+" : ""}{change}% 先月比
        </p>
      </CardContent>
    </Card>
  )
}

インクリメンタル編集 — 差分修正で品質を上げる

差分修正プロンプトの書き方

v0の強みの一つは、生成後の差分修正(インクリメンタル編集)です。「ここだけ変えたい」という指示に対して、コンポーネント全体を再生成するのではなく、必要な箇所だけを更新します。

【インクリメンタル編集のプロンプト例】

最初の生成後:
→「ボタンのカラーをティールからグレーに変更」
→「モバイルでカードが縦並びになるよう修正」
→「フォームにバリデーションメッセージを追加」
→「ダークモード時のコントラストを改善」
→「アニメーションを framer-motion で追加」

修正ごとに差分が積み重なり、最終的に
プロダクション品質のコンポーネントが完成する。

セッション管理と履歴の活用

v0のチャット履歴はセッション単位で保持されるため、前の会話の文脈を維持しながら段階的にUIを完成させられます。

Figma → v0 ワークフロー(Premiumプラン以上)

Figmaデザインの取り込み手順

Premiumプラン以上では、FigmaデザインをそのままURLまたはファイルで取り込み、コードに変換できます。

【Figma → v0 のステップ】

1. Figma でフレームを選択し「Copy Link」でURLを取得
2. v0.app のチャットに Figma URL を貼り付け
3. 「このデザインをNext.js + shadcn/ui で実装してください」と入力
4. v0 が Figma レイヤーを解析しコード生成
5. 差分修正で細部を調整

変換精度を高めるコツ

Figma側の設計品質が変換結果に直結します。以下のポイントを押さえておくと精度が向上します。

【活用のコツ】
- Figma コンポーネントのAuto Layout を設定しておくと変換精度が上がる
- デザイントークン(色・タイポ)をFigmaで定義しておくと Tailwind config に反映しやすい
- フレームを単一コンポーネント単位で渡すと精度が高い

Next.js 15 / App Router 対応

Server ComponentとClient Componentの自動判定

v0が生成するコードはNext.js 15のApp Routerに最適化されています。Server ComponentとClient Componentの境界を適切に設定し、'use client'ディレクティブが必要な箇所のみに付与します。

// v0 が生成する App Router 対応コンポーネント
// Server Component として動作('use client' なし)
import { Suspense } from "react"
import { UserList } from "@/components/user-list"
import { UserListSkeleton } from "@/components/user-list-skeleton"

export default function UsersPage() {
  return (
    <main className="container mx-auto py-10">
      <h1 className="text-3xl font-bold mb-8">ユーザー管理</h1>
      <Suspense fallback={<UserListSkeleton />}>
        <UserList />
      </Suspense>
    </main>
  )
}

Client Componentの生成パターン

ユーザー操作を伴うインタラクティブな要素は、自動的にClient Componentとして生成されます。

// インタラクティブなコンポーネントは Client Component
'use client'

import { useState } from "react"
import { Button } from "@/components/ui/button"
import { Input } from "@/components/ui/input"

export function SearchBar({ onSearch }: { onSearch: (q: string) => void }) {
  const [query, setQuery] = useState("")

  return (
    <div className="flex gap-2">
      <Input
        value={query}
        onChange={(e) => setQuery(e.target.value)}
        placeholder="ユーザーを検索..."
        className="max-w-sm"
      />
      <Button onClick={() => onSearch(query)}>検索</Button>
    </div>
  )
}

Vercel デプロイ統合

Gitパネルからの自動デプロイ

v0はVercel製品のため、Vercelへのデプロイが最もスムーズです。v0のGitパネルからブランチを作成し、Vercel Projects と連携するだけで自動デプロイパイプラインが構築できます。

CLIデプロイと環境変数の設定

ローカルで追加開発を行った場合は、Vercel CLIから直接デプロイすることも可能です。

# v0 から Vercel デプロイまでの流れ

# 1. v0 で UI 生成 → Git パネルで「Create Branch」
# 2. GitHub にブランチが作成される
# 3. Vercel Project に GitHub リポジトリを連携済みであれば
#    ブランチの Push で自動的に Preview Deployment が起動

# CLI でのデプロイ(ローカル開発後)
npm install -g vercel
vercel login
vercel --prod

# 環境変数の設定(Vercel ダッシュボードまたは CLI)
vercel env add DATABASE_URL production

v0 vs Bolt.new vs Lovable 比較表【2026年】

各ツールの得意領域

フロントエンド開発者が迷いやすい3ツールを整理します。

比較軸 v0.dev(Vercel) Bolt.new(StackBlitz) Lovable
主なアウトプット UI コンポーネント フルスタックアプリ フルスタックアプリ
技術スタック React + Tailwind + shadcn Node.js + 任意フレームワーク React + Supabase
バックエンド生成 限定的(2026年に強化) あり(Node.js) あり(Supabase自

📚 公式リファレンス・出典

v0.devが向くケースと向かないケース — 用途別の適性早見表

v0.devは「自然言語からReactコードを生成する」ツールですが、すべての開発フェーズや要件に万能なわけではありません。同じツールでも、素早く形にしたい場面では圧倒的に強い一方、長期運用する本番アプリの中核ロジックでは人間のレビューと作り込みが前提になります。導入判断でつまずきやすいのは、この「向き・不向き」を曖昧にしたまま全工程をv0に任せようとするケースです。ここでは代表的な用途ごとに適性を整理し、それぞれ「なぜそうなるのか」まで明示します。

下表の評価はあくまで一般的な傾向であり、チームの習熟度や既存コードベースの状態によって変わります。実際の制限や最新仕様はv0公式のドキュメントで確認してください。

用途・フェーズ 適性 理由・補足
プロトタイプ / 概念実証(PoC) 非常に高い アイデアを数分で動く画面に落とせる。捨てる前提のコードなら品質の細部を気にせず量産でき、関係者との認識合わせが速い。
ランディングページ / マーケLP 高い 静的寄りでロジックが浅く、見た目とレスポンシブが主役。shadcn/uiベースの整った初期実装が得られ、微調整も差分プロンプトで回しやすい。
管理画面・社内ツールのUI骨格 中〜高 フォームやテーブルなど定番UIの叩き台に向く。ただしデータ取得・権限制御・バリデーションは別途設計が必要で、生成物は「画面の骨組み」と割り切る。
本番アプリの中核機能 中〜低 状態管理・エラー処理・例外系・テストまで含めた完成度は人間の作り込み前提。生成コードはレビューと改修のたたき台として扱うのが安全。
既存デザインシステムへの厳密準拠 低〜中 自社トークンや独自コンポーネント規約への完全一致は苦手。生成後にトークン・命名・余白ルールを手で合わせ込む工数を見込む。
複雑なドメインロジック / バックエンド主導の処理 UI生成ツールの守備範囲外。サーバー処理やデータ整合性の核心は、UIとは独立して設計・実装するのが原則。

判断の軸は「生成物をそのまま出すか、たたき台にするか」

適性を一言でまとめると、「成果物をそのまま使える領域(プロトタイプ・LP)ほど向き、長期運用する本番ロジックに近づくほどレビュー前提になる」という傾きです。導入初期は向いている用途から着手し、チームがレビューの勘所をつかんでから本番アプリの叩き台用途へ広げると、手戻りを最小化できます。逆に最初から本番中核をv0任せにすると、後述のレビュー工程が膨らみ、かえって遅くなることがあります。

生成コードを本番に乗せる前のレビューチェックリスト

v0.devの出力は「動く見た目」としては高品質ですが、そのまま本番にデプロイしてよいかは別問題です。AIが生成したコードは、アクセシビリティの欠落、状態管理の素朴さ、不要な依存の追加といった「動作はするが運用で困る」項目を含むことがあります。プロトタイプ段階では無視できても、ユーザーに届ける本番コードでは一つずつ確認しておきたいポイントです。ここでは、マージ前のプルリクエストでチェックすべき観点をカテゴリ別に整理しました。担当者が機械的に上から潰せる粒度にしています。

観点 確認すること
アクセシビリティ 画像のalt、フォーム要素とlabelの対応、適切な見出し階層、キーボード操作とフォーカス可視化、コントラスト比。装飾だけの要素に意味的タグが使われていないか。
レスポンシブ 主要ブレークポイント(モバイル/タブレット/デスクトップ)で崩れないか。固定幅・固定高による見切れ、横スクロール発生、タップ領域が小さすぎないかを実機相当で確認。
状態管理 ローカル状態の持ち方が過剰/不足でないか。サーバー状態とUI状態の混在、不要な再レンダリング、ローディング・空・エラーの3状態が表現されているか。
セキュリティ ユーザー入力の扱い、dangerouslySetInnerHTMLの有無と妥当性、APIキーやトークンがクライアントに露出していないか、外部リンクのrel="noopener"付与。
デザイントークン整合 色・余白・タイポが直値ベタ書きでなく、自社のトークン/テーマ変数に揃っているか。生成時の暫定値が残っていないか、命名規約から外れていないか。
依存追加の妥当性 新規に追加されたライブラリが本当に必要か。既存スタックで代替できないか、バンドルサイズ・メンテ状況・ライセンスに問題がないか。重複する同種パッケージが増えていないか。
コード構造 コンポーネントの責務分割が適切か、Server/Client Componentの指定が意図通りか、ハードコードされた文言やマジックナンバーが残っていないか。

チェックリストは「捨てる/直す/採用」の仕分けに使う

このチェックリストは、生成コードをすべて作り直すための減点表ではなく、どこを直せば本番品質に届くかの仕分けツールとして使うのが効果的です。多くの場合、アクセシビリティとデザイントークン整合、依存の妥当性の3点が現場で最も指摘の多い領域になります。プロトタイプ用途なら全項目を厳密に満たす必要はありませんが、ユーザーに公開する画面では、最低でもアクセシビリティ・セキュリティ・レスポンシブの3カテゴリは妥協せず通すことをおすすめします。チーム内でこの表をPRテンプレートに組み込んでおくと、レビュー観点の属人化を防げます。

Need help moving from reading to rollout?

この記事を読んで導入イメージが固まってきた方へ

Uravationでは、AIエージェントの要件整理、PoC設計、社内導入、研修まで一気通貫で支援しています。

この記事をシェア

X Facebook LINE

※ 本記事の情報は2026年6月時点のものです。サービスの料金・仕様は変更される可能性があります。最新情報は各サービスの公式サイトをご確認ください。

関連記事