【Vue.js v-tokyo Meetup #17】 https://vuejs-meetup.connpass.com/event/279254/
デザイナーと協業しているNuxtプロジェクトを、ChromaticによるVRTでさらに改善した話Vue.js v-tokyo Meetup #17もず(@mozu1206)
View Slide
⾃⼰紹介職歴ASP事業会社 - バックエンドエンジニア(2021/04 ~ 2022/03 )株式会社HRBrain - デザインエンジニア(2022/04 ~ 現在)現在の技術スタックVue.js/Nuxt, React/Next, TypeScript, Storybook, Chromatic趣味コーヒー
アジェンダ- Nuxtプロジェクトについての現状- 現状の問題点- 解決⽅針- 解決⽅法- やってみた結果- まとめ- 今後やりたいこと
Nuxtプロジェクトについての現状 役割:サービスサイト(https://www.hrbrain.jp/)デザイン:Figma使⽤技術:Vue.js/Nuxt, Storybook, Chromatic, Contentfulデプロイ:Netlify
Nuxtプロジェクトについての現状Vue.js / Nuxt それぞれを絶賛バージョンアップ中!ついでにコンポーネントも整理しようと思いきや、新旧3つの流派のコンポーネントが存在していて絶望
現状の問題点プロジェクト内のコンポーネントと、Figmaのコンポーネントで同期しきれていない部分がある - 同じような部品が複数存在しており、共通化されていない部分がある
現状の問題点Figmaに登録されていないFigmaに登録されている
現状の問題点ジョインしたてのデザイナー‧エンジニアが困るFigmaに登録されていないFigmaに登録されている
現状の問題点● ジョインしたてのエンジニアがコンポーネント探しに時間がかかる● サイト内で微妙なデザインの差異が発⽣しやすい状態のため、統⼀感を維持するための確認コストが余計にかかる● 無駄なコミュニケーションコストがかかる- 「ここのボタンを変えると別のここのボタンも変わるけど⼤丈夫?」- 「そもそもこのボタンってどのボタン?」
● ジョインしたてのエンジニアがコンポーネント探しに時間がかかる● サイト内で微妙なデザインの差異が発⽣しやすい状態のため、統⼀感を維持するための確認コストが余計にかかる● 無駄なコミュニケーションコストがかかる- 「ここのボタンを変えると別のここのボタンも変わるけど⼤丈夫?」- 「そもそもこのボタンってどのボタン?」現状の問題点プロジェクトとFigmaを同期するルールを作って解決しよう!(当たり前のことを⼀つずつ)
解決⽅針エンジニア側で定義したルールに従ってコンポーネント作成し、それをデザイナーが後追いでFigmaに反映する動きで合意をとった
解決⽅針エンジニア側で定義したルールに従ってコンポーネント作成し、それをデザイナーが後追いでFigmaに反映する動きで合意をとったエンジニアが新規で登録した or 変更したコンポーネントをデザイナー側で検知できない新たな問題が発⽣
ChromaticのVRT(Visual Regression Test)をコンポーネントをFigmaに反映する必要があるかを判断するフラグのような使い⽅で利⽤できるのでは?解決⽅針
Storybook- コンポーネントを独⽴して開発することを⽀援するツールChromatic- Storybookの公開‧テスト‧議論活性化を⽀援するツールVRT(Visual Regression Test)- 変更前後のスクリーンショットを⽐較し、意図せぬ変更が⽣じていないか確認するテスト登場⼈物の補⾜
解決⽅法Chromatic の VRT でコードの差分を検知させ、デザイナーがその差分を確認し、必要があればFigmaに反映する運⽤にしてみた(反映したらAcceptedにする)反映done→
やってみた結果● 現在使われていない古いコンポーネントの存在をお互いに認識できた● ジョインしたてのエンジニアがコンポーネントを探す⼯数を削減できた● デザイナーとコンポーネントを中⼼にした会話をしやすくなった
やってみた結果コミュニケーションコスト削減と、サイト全体の統⼀感を持たせやすくなった● 現在使われていない古いコンポーネントの存在をお互いに認識できた● ジョインしたてのエンジニアがコンポーネントを探す⼯数を削減できた● デザイナーとコンポーネントを中⼼にした会話をしやすくなった
やってみた結果
まとめ● エンジニア側のコンポーネントの変更をFigmaに同期させるタスクリストの様な役割で運⽤しても、フェーズによってはワークしそう。● Chromatic の導⼊⾃体は Storybook の公式ドキュメントにも記載があるため、⽐較的簡単に⾏える。● Figmaと同期させることで、様々な無駄なコストの削減に繋がる。
今後やりたいこと● 単純なUIのVRTはできるようになったが、複雑なUIやページ単位でのテストはまだできていないので、ここのVRTも今後やっていきたい。