対象読者
- 再利用可能なHTMLやCSSを整備したいJavaScriptエンジニア
前提環境
筆者の検証環境は以下の通りです。
- macOS Ventura 13.0.1
- Google Chrome 110.0.5481.100
- @ionic/core 6.5.4
Web Componentsとデザインシステム
これまでの連載で、Web Componentsの仕組みを使うことで、再利用可能、かつスタイルや振る舞いを内包したHTML要素(カスタム要素)を自作できることがわかりました。Web Components技術を組み合わせながらWebサイトやWebアプリケーションを開発するイメージも、しやすくなってきたのではないでしょうか。
さて、技術的な要素としてはWeb Componentsという強力な武器を手に入れましたが、これで美しいUIを作れるかと言うと話は別です。今度はデザインの話になっていきますね。どんな色の組み合わせで作るかを定義したカラーパレットや、ボタンなどの大きさ・余白の付け方のための長さのルールづくり、画面内で使ってもいいフォントサイズやフォントウェイトのルールづくりなど、統一感のあるページを作るためには、考えるべきデザイン仕様がたくさんあります。
デザイナーの方々は、Figmaのようなデザインツールでそういったデザイン仕様を管理し、UIデザインの基礎となる画面部品をデザインツールの中に用意していることがあります。こういった画面部品を、デザイナーが扱う粒度をそのままに、実装の段階でも利用できたら便利そうです。
Web Componentsを使うだけで綺麗なUIを作ることはできませんが、そういった画面部品のデザイン仕様をUIへ落とし込むための道具として、Web Componentsはとても役に立ちます。デザイン仕様を忠実にスタイルや振る舞いへ落とし込んだ画面部品を事前に作っておくことで、それらを組み合わせる形でUIを構築できるようになります。そうして作られたUIは、自然とデザイン仕様が反映されたものになるのです。
統一感を持たせるためのデザイン仕様と、デザインツール上でデザイナーが適切な粒度に切り分けた画面部品、そして、その粒度に沿ってWeb Componentsなどの技術で作られた実装用の画面部品。これらを整備することで、デザインと実装という二つの作業は柔軟かつ効率よく進められるようになるといわれています。このような取り組みのことを、本連載では「デザインシステム」と定義します。
デザインシステムを自分で作るのは大変
これまで学んできたWeb Componentsは、デザインシステムの一要素を構築する上で役に立ちそうです。とはいっても、デザインシステムを自力で構築するには、かなりの労力が必要になります。独自性が高いデザインの、中〜大規模なシステムを構築するのであれば、デザインシステムを完全に自作する旨みもあるのかもしれませんが、多くの場合はそこまでの労力を払う価値はありません。
自分のプロジェクトを効率化するためにデザインシステムを活用する手法としては、既存のデザインシステムを拝借して、そのまま使ったり、簡単にカスタマイズして使ったりするのが一般的です。一般公開されているデザインシステムが提供しているUIライブラリの多くは、カラーパレットの変更などのカスタマイズにも対応しているため、ある程度の独自性を出すこともできます。
本記事では、Web Componentsの知識を活かして、既存のデザインシステムを活用する方法を学んでみましょう。
Web Componentsで提供されているデザインシステム
デザインシステムのUIライブラリは、ReactやVue、Angularといった流行りのフレームワーク向けに提供されている場合がほとんどで、Web Components向けに提供されているものは多くはありません。選択肢の多さを求めるのであれば、ReactなどのフレームワークでUIを作成する必要がありますが、その一方で、Web Componentsで利用する分には最低限のセットアップに必要な知識が比較的少ないというメリットもあります。
デザインシステムのUIライブラリがWeb Components形式でも配布されているものは、次のようなものがあります。
Ionic Frameworkは同名のデザインシステムのUIライブラリです。モバイル向けのUI構築に特に強みがあります。Material Webは、Google製デザインシステムであるマテリアルデザインのUIライブラリで、GoogleのサービスっぽいUIが作れますが、本記事の執筆時点ではインストールのためにNPMが必須です。Spectrum Web Componentsは、Adobe製デザインシステムであるSpectrumのUIライブラリです。こちらもAdobeのWebサイトっぽいUIが作れます。
本記事では、この中でも特に活発に開発されているIonic Frameworkを紹介します。