Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Storybook 勉強会

Storybook 勉強会

wakamsha

May 09, 2024
Tweet

More Decks by wakamsha

Other Decks in Technology

Transcript

  1. Agenda 1. コンポーネントカタログとは 2. なぜコンポーネントカタログを導⼊するのか 3. Storybook とは 4. Story

    とは 5. Story を書いてみる 6. Q&A 7. 補⾜: コンポーネントを作る際に意識すべきこと 8. Q&A
  2. なぜコンポーネントカタログを導⼊するのか 現代の web フロントエンド開発はコンポーネント駆動開発が主流 • React, Vue, Angular, Svelte, etc…

    全てコンポーネントを積み上げてアプリを 構築するスタイル。 • ならばそれらコンポーネント(部品)を個別に管理できた⽅が良い。 個別に管理できればデバッグやテストも個別に実施可能となる。 • カタログ化することで個々の関⼼領域が明確となり、不⽤意に本来の関⼼を 超越した機能追加を予防しやすくなる。
  3. Storybook とは Visual Regression Test (VRT) をサポート。 • v7 までは

    Chromatic という SaaS にデプロイして実⾏する仕様だったが、 v8 からローカルマシン上でも実⾏可能となった。
  4. Story とは Story を定義するには、シミュレートしたい状態ごとに Story を⽣成する関数を エクスポートする。 Story とは特定の状態で描画された要素 (※)

    を返す関数であり、React の状態を 持たない関数コンポーネントのようなものである。 ※ 例えば、プロパティを指定したコンポーネントなど
  5. Story を書いてみる Component Story Format (CSF) という仕様に沿って書く • 2024年5⽉現在は Ver.3

    が主流 • eslint-plugin-storybook を導⼊すれば⾃然とこの書き⽅に矯正される
  6. Q&A

  7. 補⾜: コンポーネントを作る際に意識すべきこと 1. 再利⽤するため Button、Popover、Modal といったアプリケーション特有のドメインを持たない ものはこれに該当する。つまり MUI や ChakraUI

    といった汎⽤的な UI ライブラ リーと同じ性質を持つもの。 これらライブラリーの各 UI は “御社のアプリケーション” という 特定ドメインへの関⼼を持たない。だからいくらでも再利⽤できる。
  8. 2. ⼤きく複雑な機能を責務ごとに切り分け整理するため 可読性‧保守性を担保するために切り出されるものであり、基本的に再利⽤することを ⽬的としない。 UI コンポーネントの最も⼤きな単位は Page であり、原則これはアプリケーション特有 のドメインを持つ。Page によっては複数の機能を持つものもあり、それらのコードが1

    つのファイルにすべて記述されると当然ながら可読性‧保守性は下がる。 これを回避するために1つの Page ファイルに書かれたコードを機能ごとに分類しコン ポーネントとして切り出すことで、コードが整理され可読性‧保守性が担保される。 補⾜: コンポーネントを作る際に意識すべきこと
  9. Q&A

  10. 参考⽂献 1. Component Driven User Interfaces 2. Storybook: Frontend workshop

    for UI development a. Why Storybook? • Storybook docs b. What's a story? • Storybook docs c. Browse Stories • Storybook docs 3. What is Visual Regression Testing: Technique, Importance | BrowserStack 4. Visual testing & review for web user interfaces • Chromatic 5. Passing Props to a Component ‒ React 6. Component Story Format (CSF) • Storybook docs