Next.jsにstorybookをインストールする

下記の記事では、Next.jsとbunを使って環境構築をしました。

DockerでNext.js14、bunの環境構築してみた

それに引き続き、storybookをインストールしようと思ったのですが、罠があったのでその共有です。

成果物

https://github.com/takatoku23/nextjs-storybook

環境

  • Next.js v14.0.1
  • node v18.17.0
  • yarn 1.22.18
  • Docker v24.0.6
  • storybook v7.5.2

結論

Bun環境ではstorybookを運用できない

2023/11/5現在、storybookはBunをサポートしていないようです。(Denoもサポート対象外)

Javascript Engines

Javascript EnginesVersion NumberRelease DateEOLCore Storybook SupportDrop Support
Node.jsv162021-04-202023-09-11Storybook 8.0
v182022-04-192025-04-30
v202023-04-182026-04-30
Bun
Deno
https://github.com/storybookjs/storybook/issues/23279

関係ないですけど、vue2系もStorybook8.0からサポート対象外になるようです。

公式もサポート対象外になるので当たり前ですが、storybookを使っているvue2系を使用したプロダクトは早めにアップデートを検討した方がよさそうです。

解決方法

現状はNode.jsで環境構築をするしかなさそうです。

前回の記事の中では、Bunを使った環境構築をしましたが、ここでは普通にNode.jsを使って環境構築をしようと思います。

node環境でnext.jsをインストール

node.jsがインストールされたローカル環境にて下記コマンドを実行

npx create-next-app@latest --use-yarn

注意点としては、Next.js 14からはnodeがv18.17.0以上である必要がるので、インストールする環境のnodeのバージョンがv18.17.0以上であることを確認してからコマンドを実行してください

docker環境を準備

FROM node:18.17-slim as dev
ENV NODE_ENV=development
WORKDIR /app

COPY ./app/package*.json ./app/yarn.lock ./
RUN yarn install

CMD ["yarn", "run", "dev"]
version: '3'

services:
  app:
    build: 
      context: .
      target: dev
      dockerfile: docker/nextjs/Dockerfile
    volumes:
      - "./app:/app"
    command: [ "yarn", "run", "dev" ]
    ports:
      - "3000:3000"
      - "6006:6006"
    tty: true
    stdin_open: true

上記のファイルを用意した上で、以下のコマンドを実行する

// imgaeをbuildする
docker compose build app

// imageを立ち上げる
docker compose up

[+] Building 0.0s (0/0)                                                                           docker:desktop-linux
[+] Running 1/0
 ✔ Container nextjs-storybook-app-1  Created                                                                      0.0s 
Attaching to nextjs-storybook-app-1
yarn run v1.22.19
$ next dev
nextjs-storybook-app-1  |    ▲ Next.js 14.0.1
nextjs-storybook-app-1  |    - Local:        http://localhost:3000
nextjs-storybook-app-1  | 
nextjs-storybook-app-1  |  ✓ Ready in 7.4s

上記まで完了したら、http://localhost:3000にアクセスすると以下のような初期画面が表示されると思います。

Next.jsの初期画面

storybookのインストール

本題のstorybookのインストール方法です。

とは言っても公式ドキュメントに沿って以下の手順でコマンドを実行するだけですが、、、

// コンテナの中に入る
docker compose exec app bash

// storybookのinstall
npx storybook@latest init

以上でstorybookをインストールする手順は完了です。

最後に下記のコマンドを使ってstorybookを起動させてみましょう。

docker compose exec app bash -c "yarn storybook"

下記のURLにアクセスすることで、storybookのプレビュー画面が表示されるようになります。

http://localhost:6006

storybook初期画面

storybook-addon-a11yのインストール

storybookにはさまざまなaddonが用意されており、必要なものは手動で追加する必要があります。

私が実際に追加しているaddonの一つが「storybook-addon-a11y」です。

このaddonをインストールすることで、コンポーネントごとにアクセシビリティの確認をすることができます。

storybook-addon-a11yの画面

また、storybookではテストランナーを使用してアクセシビリティに関する自動テストを実行することができます。

必要な場合は設定してみてください。

最後に

storybookを運用してみて分かったのですが、細かなバグやアップデートも多く追従するのに一定の労力が必要です。

また、storybookの使用方法など新たに学ぶ必要もあるのでキャッチアップコストもかかります。

とは言いつつも、storybookはビジュアルテストやアクセシビリティのテストなど便利な機能がいくつも用意されています。

意図を持って運用すればコストに見合うリターンが得られる場合もあるので、導入を検討してみてはいかがでしょうか?

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です