Storybookは、UIコンポーネントを独立した環境で開発・確認できるツールです。デザインシステムの構築・ドキュメント化・ビジュアルテストなど、コンポーネント駆動開発(CDD)に欠かせない選択肢になっています。本記事では、Storybookの始め方と基本的な使い方を解説します。
Storybookとは
Storybookは、コンポーネント単体をアプリ本体から切り離して表示・操作できる開発環境です。React・Vue・Svelte・Angular・Web Componentsなど主要フレームワークすべてに対応します。デザイナーとエンジニアの認識合わせや、UIライブラリの公開ドキュメント化にも使えます。
導入手順
# 既存プロジェクトに追加
npx storybook@latest init
# 起動
npm run storybook
自動でフレームワーク・ビルドツール(Vite/Webpack)を検出し、サンプルストーリーを生成してくれます。
ストーリーの書き方(Reactの例)
// Button.stories.tsx
import type { Meta, StoryObj } from '@storybook/react';
import { Button } from './Button';
const meta: Meta<typeof Button> = {
title: 'Components/Button',
component: Button,
args: { label: 'クリック' },
};
export default meta;
export const Primary: StoryObj<typeof Button> = {
args: { variant: 'primary' },
};
export const Danger: StoryObj<typeof Button> = {
args: { variant: 'danger' },
};
主な機能
- Controls:propsをUIから動的に変更
- Actions:イベント発火をログ表示
- Viewport:レスポンシブ表示確認
- A11y:アクセシビリティ自動チェック
- Docs:MDX/コメントから自動ドキュメント生成
- Test Runner:ストーリーを使ったテスト自動化
ビジュアルリグレッションテスト
Chromatic(Storybook公式)やPercyと連携することで、コンポーネントの見た目変化を自動検知できます。プルリクごとに変更があった箇所だけレビューできるため、UI回帰の検出が劇的に楽になります。
デプロイ・公開
npm run build-storybook
# storybook-static フォルダができる
# Vercel / Netlify / Chromaticにデプロイ可能
社内デザインシステムのドキュメントサイトとして公開すれば、デザイナーとの共通言語になります。
導入のメリットと注意点
- UIライブラリ単位の開発がアプリの影響を受けず行える
- デザイナー・QA・PMとの共通プレビュー環境に
- ストーリーが増えると保守コストが嵩む(必要な範囲に絞るのが吉)
- 初期セットアップ後はチームの運用ルールが重要
まとめ
Storybookは、コンポーネント駆動開発の中核ツールです。UI部品を独立して育てる文化を支え、ドキュメント・テストまで一気通貫で扱えます。デザインシステムを作るチーム、複数人で長く運用するプロダクトには特に有効です。