Storybook すとーりーぶっく
簡単に言うとこんな感じ!
ボタンやフォームなど画面のパーツ(コンポーネント)を、アプリ本体とは切り離して「サンプル帳」みたいに並べて確認・テストできるツールだよ!デザイナーと開発者が「このボタン、こんな見た目ね」って共有するカタログとして使われることが多いんだ!
Storybookとは
Storybook(ストーリーブック)は、Webアプリケーションを構成するUIパーツ(コンポーネント)を、アプリ本体から独立した環境で開発・確認・テストするためのオープンソースツールです。React・Vue・Angularなど主要なフロントエンドフレームワークに対応しており、2016年の登場以来フロントエンド開発の現場に広く普及しています。
Storybookの中心的な概念は「Story(ストーリー)」です。Storyとは「このコンポーネントがこの状態のときにこう見える」というサンプル定義のこと。たとえばボタンコンポーネントなら「通常状態」「ホバー状態」「無効化状態」「ローディング中」といった複数のStorが並び、一覧から選んで確認できます。
システム発注・開発管理の観点では、Storybookはデザインと実装の認識合わせに役立つツールです。ベンダーに「どんなUIを作ってほしいか」を伝えるときや、納品物の確認時に「実際の動作をブラウザで見ながらチェック」できるため、手戻りを減らす効果があります。
Storybookの仕組みと構成
主な構成要素
| 要素 | 役割 |
|---|---|
| Story(ストーリー) | コンポーネントの特定の状態を定義したサンプル。CSF形式(JavaScriptファイル)で書く |
| Canvas(キャンバス) | Storyを実際にレンダリングして表示するプレビュー領域 |
| Controls(コントロール) | Props(パラメータ)をGUIで変更し、見た目の変化をリアルタイム確認できるパネル |
| Docs(ドキュメント) | Storyから自動生成されるコンポーネント仕様ページ |
| Addons(アドオン) | 機能を拡張するプラグイン群(アクセシビリティ検査・レスポンシブ確認など) |
Storyの書き方(イメージ)
// Button.stories.js
export default {
title: 'UI/Button',
component: Button,
};
// 「通常」のStory
export const Primary = {
args: { label: '送信', variant: 'primary' },
};
// 「無効化」のStory
export const Disabled = {
args: { label: '送信', disabled: true },
};
覚え方
「Story = コンポーネントの履歴書」と覚えよう! 履歴書に「こんな経歴(状態)があります」と書くように、Storyにコンポーネントの各パターンを記録しておくイメージ。
歴史と背景
- 2016年 — Kadira社がReact向けに「React Storybook」としてOSSリリース。コンポーネント単位での開発・確認の需要を捉えて急速に普及
- 2017年 — プロジェクト名を「Storybook」に変更し、Vue.jsサポートを追加。コミュニティ主導のプロジェクトへ移行
- 2018年 — Angular・その他フレームワークへの対応を拡大。Addonsエコシステムが整備され始める
- 2019〜2020年 — Storybook 5→6系。Controls(インタラクティブなパラメータ操作)やDocs(自動ドキュメント生成)が標準搭載。企業のデザインシステム構築ツールとして定着
- 2022年 — Storybook 7リリース。ビルドツールにViteを採用しパフォーマンスが大幅向上。CSF3(最新のStory記法)が標準化
- 2023〜現在 — Storybook 8系でサーバーコンポーネント対応など、Next.js・最新フレームワークとの統合を強化
類似ツール・開発アプローチとの比較
Storybookと類似ツールの比較
| ツール | 特徴 | 向いているケース |
|---|---|---|
| Storybook | 最も普及。Addonsが豊富。学習コストやや高め | 中〜大規模チーム、デザインシステム構築 |
| Ladle | Storybookと互換性あり・超軽量・Vite特化 | 小規模・高速起動を優先したい場合 |
| Histoire | Vue/Svelte向け。Storybook的思想をシンプルに | Vue/Svelteプロジェクト |
| Chromatic | Storybookと連携するビジュアル回帰テストSaaS | デザイン崩れの自動検知をしたい場合 |
コンポーネント駆動開発(CDD)との関係
Storybookはコンポーネント駆動開発(Component-Driven Development)を実践するための代表的なツールです。CDDとは「画面全体ではなく、再利用可能な小さなパーツ(コンポーネント)から積み上げてアプリを作る」開発スタイルで、StorybookはそのCDDを支える「作業台」の役割を担います。
発注・管理側が知っておくべき実務ポイント
Storybookがあると何が嬉しいか
| シーン | メリット |
|---|---|
| 要件定義・デザイン確認 | 「このボタン、本当にこの見た目?」をブラウザで触りながら確認できる |
| 開発進捗確認 | 画面全体が完成していなくてもパーツ単位で動作確認・レビューが可能 |
| デザインシステム構築 | ボタン・フォーム・カードなどを共通部品化してチーム全体で再利用 |
| ビジュアル回帰テスト | 変更前後のスクリーンショットを比較し、意図しないデザイン崩れを自動検出 |
| ドキュメント生成 | Storyから自動でコンポーネント仕様書が生成される |
ベンダーへの確認ポイント
✅ Storybookを採用しているか?
✅ デザインシステムにStorybookのDocsを活用しているか?
✅ ChromaticなどのビジュアルテストSaaSと連携しているか?
✅ Story数(≒コンポーネントのカバレッジ)を管理しているか?
関連する規格・RFC
※ StorybookはOSSツールであり、IETFやISOなどの国際規格は存在しません。ただし、Storyのファイル形式は CSF(Component Story Format) としてコミュニティ仕様が公開されています。
| 仕様 | 内容 |
|---|---|
| CSF(Component Story Format) | StorybookのStory記述形式の公式仕様。CSF1→CSF3と進化 |
| OpenTelemetry Storybook Addon | Addons公式ディレクトリ(公式サイト) |
関連用語
- ./130-component-driven-development.md — コンポーネント単位で積み上げるUI開発アプローチ
- ./131-react.md — FacebookがOSSとして公開したUIコンポーネントライブラリ
- ./132-design-system.md — デザインルール・UIパーツを統一管理する仕組み
- ./133-vite.md — 高速なフロントエンドビルドツール。Storybook 7以降で採用
- ./134-visual-regression-testing.md — スクリーンショット比較でデザイン崩れを自動検出するテスト手法
- ./135-chromatic.md — StorybookのビジュアルテストとUI管理に特化したSaaSサービス
- ./136-frontend-framework.md — React・Vue・Angularなどフロントエンド開発の土台となるフレームワーク