3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Storybookの始め方、UIコンポーネント管理のやり方

Posted at

はじめに

フロントエンド開発において、UIコンポーネントの効率的な管理とチーム間での共有は、開発スピードやコードの品質に大きく影響します。
Storybookは、この課題を解決するための強力なツールで、コンポーネントの開発、ドキュメント化、テストを効率化できます。

実際弊社でも、Storybook導入前ではあるメンバーが作成したコンポーネントの使い方がよくわかっていなかったり、誰がどのコンポーネントを作ったか整理できていない状態でした。
ですが、導入してからはチーム間での開発が効率化されていったのが目に見えてわかりました。同じようなコンポーネントを重複して作成することがなくなったり、何より他の人が作ったコンポーネントのキャッチアップが格段に早くなりました。

この記事では、Storybookの基本、実際の導入・活用方法までを備忘として記載していこうかと思います!

ちなみに、、

弊社では、フリーランスエンジニアの方を募集しており、
フロントエンド、サーバーサイド、ネイティブアプリ等、それぞれの領域で活躍できるプロジェクトがあります!
フロントエンドのプロジェクトでも対応言語・FWや案件種類も様々です。
(案件種類の例:toB向けの業務システムの画面構築、ECサイトの画面構築、クリエイティブ性の強いHP・LP等の制作など)

興味がある方は、ぜひ下記フォームに回答いただけますと幸いです。
👉 フォームはこちら

Storybookとは?

Storybookは、UIコンポーネントを独立して開発・テスト・ドキュメント化するためのツールです。

主な特徴

  1. 独立したコンポーネント開発
    • アプリケーション全体から切り離してコンポーネントを開発
  2. リアルタイムプレビュー
    • 変更内容を即座に確認可能
  3. ドキュメント生成
    • 自動生成されるインタラクティブなドキュメントでコンポーネントを共
  4. テストの統合
    • UIのスナップショットテストやアクセシビリティテストをサポート
  5. フレームワーク対応
    • React、Vue.js、Angular、Svelteなど、主要なフロントエンドフレームワークに対応

Storybookのセットアップ

以下では、Reactプロジェクトを例にStorybookをセットアップする方法を解説します。

前提

  • React + TypeScrptのプロジェクト
  • 既にプロジェクトが作成済

1. Storybookをインストール

以下のコマンドでStorybookをプロジェクトに追加します:

npx storybook init

これにより、Storybookの基本設定が自動的に行われ、以下のフォルダが作成されます:

  • .storybook/:Storybookの設定ファイル
  • src/stories/:サンプルのコンポーネントとストーリーファイル

2. Storybookを起動

以下のコマンドでStorybookを起動します:

npm run storybook

ブラウザでhttp://localhost:6006を開くと、Storybookのインターフェースが表示されます。

コンポーネント作成とストーリー定義

以下では、独自のコンポーネントをStorybookに追加する手順を説明します。
(説明のために、ここでは直接styleを記載してしまいます。)

1. ボタンコンポーネントの作成

src/components/Button.tsxに以下のコードを記述します。

src/components/Button.tsx
import React from 'react';

export interface ButtonProps {
  label: string;
  onClick: () => void;
  variant?: 'primary' | 'secondary';
}

const Button: React.FC<ButtonProps> = ({ label, onClick, variant = 'primary' }) => {
  return (
    <button
      onClick={onClick}
      style={{
        padding: '10px 20px',
        fontSize: '16px',
        backgroundColor: variant === 'primary' ? '#007bff' : '#6c757d',
        color: '#fff',
        border: 'none',
        borderRadius: '4px',
        cursor: 'pointer',
      }}
    >
      {label}
    </button>
  );
};

export default Button;

2. ストーリーの作成

src/stories/Button.stories.tsxを作成し、以下のコードを記述します。

src/stories/Button.stories.tsx
import React from 'react';
import { Meta, Story } from '@storybook/react';
import Button, { ButtonProps } from '../components/Button';

export default {
  title: 'Components/Button',
  component: Button,
  argTypes: {
    onClick: { action: 'clicked' },
    variant: {
      control: { type: 'select' },
      options: ['primary', 'secondary'],
    },
  },
} as Meta;

const Template: Story<ButtonProps> = (args) => <Button {...args} />;

export const Primary = Template.bind({});
Primary.args = {
  label: 'Primary Button',
  variant: 'primary',
};

export const Secondary = Template.bind({});
Secondary.args = {
  label: 'Secondary Button',
  variant: 'secondary',
};

これで、Storybookを再起動すると、ブラウザに新しいボタンコンポーネントのストーリーが表示されます。

Storybookの+αの機能

ドキュメント生成

Storybookでは、コンポーネントのプロパティをドキュメントとして自動生成できます。

Button.stories.tsxでargTypesを追加することで、各プロパティの説明を設定できます。

argTypes: {
  label: {
    description: 'ボタンに表示されるテキスト',
  },
  variant: {
    description: 'ボタンのスタイル',
    control: { type: 'select' },
    options: ['primary', 'secondary'],
  },
  onClick: {
    description: 'ボタンがクリックされたときのイベントハンドラー',
  },
},

アクセシビリティテスト

Storybookでは、アクセシビリティチェックを行うことができます。以下のコマンドでアドオンを追加します。

npm install @storybook/addon-a11y --save-dev

.storybook/main.jsに以下を追加:

module.exports = {
  addons: ['@storybook/addon-a11y'],
};

まとめ

Storybookは、UIコンポーネントを効率的に管理し、開発プロセスを大幅に向上させるツールです。特に、チームでのフロントエンド開発において、その真価を発揮すると思います!
この記事を参考に、フロントエンド開発がより効率的にできるようになると幸いです。

おわりに

繰り返しになりますが、弊社では、フリーランスエンジニアの方を募集しております!

熱意を持って新しいプロジェクトに挑戦したい方、様々な大規模開発プロジェクトに興味のある方は、下記フォームにてあなたの経歴をご回答ください!

👉 フォームはこちら

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?