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

Storybook 勉強会

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

Storybook 勉強会

Avatar for wakamsha

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