ソフトウェア
中級

ストーリー(ストーリー)

UI コンポーネントを個別に開発・確認できる単位。Storybook の中核概念で、各コンポーネントの状態(Props 違い)を独立した「ストーリー」として記述しビジュアル + 動作確認する。

0 回閲覧
0 いいね
2026/5/2 更新
関連タグ
Storybook
UIコンポーネント
React
Vue
Histoire

概要

ストーリー(Story)は、Storybook の中核概念で、UI コンポーネントの個別状態を独立した単位として記述したものを指す。1 つのコンポーネント(例: Button)に対し、状態違い(Default / Hover / Disabled / Loading 等)を別々のストーリーとして記述し、コンポーネントカタログとしてブラウザで確認できる。Component-Driven Development の中核ツールで、デザイナー連携・Visual Regression Testing・アクセシビリティテスト・ドキュメント生成を統合する。2026 年現在、Storybook 9 が業界標準、Histoire(Vue 派生)/ Ladle(Vite 高速代替)も台頭している。

主要ツール(2026 年)

ツール形態特徴
Storybook 9OSS業界標準、React / Vue / Angular / Svelte / Solid 全対応
HistoireOSSVue / Vite 系、Storybook 軽量代替
LadleOSSVite ベース、最速級
ChromaticSaaS(Storybook 開発元)$149/月- Visual Regression
Storybook CompositionOSS複数 Storybook を統合

ストーリーの記述例(Component Story Format 3.0)

// Button.stories.tsx
import type { Meta, StoryObj } from '@storybook/react';
import { Button } from './Button';

const meta: Meta<typeof Button> = {
  title: 'Components/Button',
  component: Button,
  tags: ['autodocs'],
};

export default meta;
type Story = StoryObj<typeof Button>;

export const Primary: Story = {
  args: {
    variant: 'primary',
    children: 'Click me',
  },
};

export const Disabled: Story = {
  args: {
    variant: 'primary',
    disabled: true,
    children: 'Disabled',
  },
};

export const Loading: Story = {
  args: {
    variant: 'primary',
    loading: true,
    children: 'Loading',
  },
};

Storybook 9 の主要機能(2026 年)

  • 自動ドキュメント生成: TypeScript 型定義 + JSDoc から自動生成
  • Controls Panel: ブラウザで Props 動的変更
  • Actions Panel: イベントログ表示
  • Viewport: モバイル / タブレット / デスクトップ切替
  • Backgrounds: 背景色変更
  • Accessibility(a11y): WCAG 違反チェック
  • Interactions: ユーザー操作の自動再生 + テスト
  • Visual Tests: Chromatic 統合でデザイン差分検出
  • Test Runner: Playwright 統合、E2E 自動化
  • Composition: 複数 Storybook(デザインシステム + 製品)統合表示

Component-Driven Development の流れ

1. デザイナー: Figma で UI コンポーネント設計
2. 開発者: ストーリー定義(状態別)
3. 開発者: コンポーネント実装、Storybook で確認
4. デザイナー: Storybook で実装確認 + フィードバック
5. テスター: Visual Regression 自動チェック
6. アプリ統合: コンポーネントを画面で組合せ

Visual Regression Testing(Chromatic)

ストーリー単位でスクリーンショット → デザイン変更時の差分を自動検出。

# .github/workflows/chromatic.yml
- name: Publish to Chromatic
  uses: chromaui/action@latest
  with:
    projectToken: ${{ secrets.CHROMATIC_PROJECT_TOKEN }}

アクセシビリティ(a11y)テスト

@storybook/addon-a11y で WCAG 2.1 AA 準拠を自動チェック。コントラスト比 / キーボード操作 / スクリーンリーダー読み上げ等を検証。

自作.com(jisaku.com)でのストーリー運用

  • 総ストーリー数: 100+(Button / Card / Modal / Form 等)
  • 設計システム: design-system/ 配下にトークン + コンポーネント
  • CI 統合: GitHub Actions で Chromatic 自動デプロイ
  • デザイナー連携: Figma → Storybook の双方向確認

PC スペック要件

  • Storybook 開発: Ryzen 7 7700X / 16-32 GB RAM
  • 大規模設計システム(500+ ストーリー): Ryzen 9 9950X / 64 GB RAM
  • CI/CD(Chromatic 並列): GitHub Actions runner

主要 Addons

Addon用途
@storybook/addon-essentialsControls / Actions / Viewport 統合
@storybook/addon-a11yアクセシビリティチェック
@storybook/addon-interactionsユーザー操作自動化
@storybook/addon-themesダーク / ライトモード切替
@storybook/addon-designsFigma 埋込
@storybook/addon-coverageテストカバレッジ
msw-storybook-addonAPI モック

関連用語との違い

用語違い
コンポーネント実装、ストーリーは表示単位
プレイグラウンド自由実験、ストーリーは定義済み
Snapshotテスト結果、ストーリーは入力
デザインシステム全体、ストーリーは個別単位

よくある質問

Q1: Storybook と Histoire / Ladle、どう選ぶ? A: 業界標準・機能網羅・OSS コミュニティ最大なら Storybook 9。起動速度重視・Vite 中心なら Ladle。Vue 専門なら Histoire。

Q2: Storybook はオーバーエンジニアリング? A: 個人プロジェクトでは過剰、3 人以上のチーム or 設計システム必要なら投資価値大。設計と開発の分業 + バージョン管理が圧倒的に楽になる。

Q3: Visual Regression は必要? A: 大規模 / 長期プロジェクトで必須。CSS リファクタや Tailwind バージョンアップで意図しない見た目変化を検出、Chromatic $149/月の価値あり。

まとめ

  • UI コンポーネントの 個別状態を独立記述 する Storybook の単位
  • 2026 年は Storybook 9 が業界標準、Histoire / Ladle が代替
  • Component-Driven Development + Visual Regression がプロ開発の定番
この記事について
カテゴリーソフトウェア
難易度中級
作成日2026/5/2