Rebooting Ubie Vitals Design Systems
デザインシステム Advent Calendar 2023 25日めの記事です。
Ubieでデザインエンジニアをしているtakanoripです。
この度UbieのデザインシステムであるUbie Vitalsのウェブサイトを公開しました。
またUbie Vitalsを構成するUIコンポーネントライブラリであるUbie UIをOSSとして公開しました。(こちらはまだWIP)
ウェブサイトやコンポーネントライブラリ公開に至った過程を振り返ります。
Ubie Vitalsの出現と失敗
Ubie Vitalsはデザインに関するガイドラインなどをまとめる箱として作られました。
Ubieではデザイン生産基盤の構築を2022年から進めていましたが、当初はデザインシステムという箱をつくらず必要なツールやドキュメントを必要に応じて作っていました。
箱を作らないことで目先の課題を解決することに集中し、できるだけ低コストで基盤構築を進めていきたいという狙いもありました。
しかしツールやドキュメントが増えた結果、何がどこにあるかわからない、新しいメンバーへのオンボに困るなどの問題が出てきました。そこでそれらをまとめて格納し使いやすくするための箱として、Ubie Vitalsが作られました。
Ubie Vitalsが立ち上がった当初はNotionにページをつくり諸々を管理していましたが、組織の統廃合にあわせてNotionの設計や権限管理などが複雑になってしまい運用が難しくなっていきました。またNotionだとコードや実際に動いているコンポーネントを載せることも難しく、エンジニア向けのドキュメントを別途つくらないといけないという問題もありました。
そしてそうした問題を放置してしまったため、どこに何があるか誰がメンテナンスしているかが明瞭でなく、デザインシステムの運用は停滞しメンバーへの周知も進まず、中途半端で形だけのドキュメントが残される結果となりました。
再生と公開
放置されてしまっていたUbie Vitalsですが、プロダクトの機能やエンジニアの数が増えてきたことでデザインシステムへの期待が大きくなってきたため、再始動することを決定しました。
再始動にあたってやったことは大きく3つあります。
- ドキュメントサイトの構築と公開
- コンポーネントライブラリのOSS化および開発環境のアップデート
- コンポーネントライブラリのアクセシビリティ改善
また失敗の反省を生かして、ある程度作り込んでプロダクト開発で使うための要件を満たしてからプロダクトに適用していくという方針で進めています。
ドキュメントサイトの公開
もともとNotionでドキュメント管理していましたが、
- 検索しにくい、場所がわかりにくい
- コードやサンプルを載せにくい
- 一覧性が悪い
などの問題がありました。
それらの問題を解決するためにドキュメントサイトを自分たちで構築することにしました。
公開できるものは公開していくことで運用することへの意識を高める狙いもあります。
コンポーネントライブラリのOSS化および開発環境のアップデート
もともとコンポーネントライブラリはプライベートリポジトリに作っていたのですが、プライベートリポジトリであるがゆえにプロダクトのドメインを含んだコンポーネントを含めたいという要望も出てきたり外部の方の意見を集めにくいなどの問題がありました。
そこで汎用的なコンポーネントはOSSとして別途切り出し、プライベートなほうがドメインを含んだコンポーネントを配信するものとして切り分けることにしました。
コンポーネントライブラリのアクセシビリティ改善
デザインシステム構築再始動の大きな目的の一つに、アクセシビリティの担保があります。
アクセシビリティを主語にしてしまうと動きにくい場面もあったので、現状はデザインシステムを使うとアクセシビリティに十分配慮したプロダクトが作れます、という状態を目指しています。
Ubie Vitals Websiteの技術構成
Ubie Vitals WebsiteはAstroを使用して作られています。
コンテンツはmdx+通常のMarkdownで管理しています。コンポーネントのプレビューやトークンをコピーできる機能などを載せたかったのでベースはmdxでつくり、テキスト部分は適宜Markdownに切り出しています。
特筆する点はないかなと思いますが、興味あればリポジトリのぞいてみてください。
課題と展望
2024年は次のことに取り組んでいく予定です。
- デザインシステムの浸透
- デザインシステムが自律的にメンテナンスされていく仕組みづくり
デザインシステムやそれを活用したプロダクト開発に興味ある人、ぜひカジュアル面談しましょう!
お待ちしてます!
Discussion