🙅‍♂️

デザインの一貫性を保つのは難しい

2021/12/05に公開

こちらは「エンジニアリングに興味があるデザイナー、デザインに興味があるエンジニア Advent Calendar」5日目の記事です。

業務ではサービスの仕様検討からデザイン作成、フロントエンド実装まで器用貧乏にやっています。

前職も現職もデザイナー不在の組織で働いており、デザインまわりで苦い思いをすることが多々あるのですが、最近特に思うのは「デザインの一貫性を保つのは難しい」ということ。ここでは、そんな悩みの原因、そして現職での対応策を書き連ねます。

エンジニアだけで開発してると、デザインは破綻する

初期はデザイナーさんにデザインを作ってもらっていたが、保守・運用フェーズに入ったらエンジニアのみでデザインも実装も進める、みたいな現場をちょくちょく見かけます。

そんな現場で目にするのは、初期デザインにはなかった色やマージン、レイアウトのパターン。時間が経つにつれて初期デザインは崩れ、統一感のないデザインになっていきます。

デザイナーさんが「こういうデザインを作ってね!」と丁寧にドキュメントやコンポーネント集を作ったとしても、時が経つと作った人はいなくなり、ドキュメントはメンテナンスされなくなり、誰も詳細が分からず、じゃあ見なくていいや、という負のループに突入します。

自分のいた組織も例外ではなく、こんな流れの末に「デザインの一貫性を維持するのは無理」という悩みが生まれました。

デザイナーを雇う、CSSフレームワークに頼る

ここで問題となるのは、

  1. デザインの面倒を見る人が会社にいない

  2. デザイナー以外じゃメンテナンスできない

  3. エンジニアのデザイン知識の不足

それぞれ解決するには

デザインの面倒を見る人が会社にいない
→ デザイナーを雇う

デザイナー以外じゃメンテナンスできない
→ デザイナーを雇う

エンジニアのデザイン知識の不足
→ CSSフレームワークを使う

3つの問題点と対応策を考えましたが、1と2の対応策の「デザイナーを雇う」はまあそうですね、という話なので、今回は3つ目の「CSSフレームワークを使う」について。

ちなみに、デザインの勉強をするという手もありますが、時間がかかる上に習熟度の統一が難しく、とても見通しの悪い方法です。あまり考えずとも一定のデザインルールに則っているCSSフレームワークを採用するほうが効果が見込めます。その上で、デザインの勉強を並行して実施すると良さそうです。

CSSフレームワークの選定

現職でCSSフレームワークを選ぶ機会があり、候補にはMaterial UIとTailwind css、Chakra UIが上がりました。

  • Material UI
    • https://mui.com/
    • マテリアルデザインに準拠したCSSフレームワーク
    • 多彩なコンポーネントが用意されている
  • Tailwind CSS
    • https://tailwindcss.com/
    • ユーティリティファーストCSSフレームワーク
    • コンポーネントはなく、スタイルを効率的に作るためのクラスが提供されている
  • Chakra UI
    • https://chakra-ui.com/
    • 一般的に使用されるコンポーネントが用意されている
    • emotionでのスタイリングができる
    • 「NARUTO」が命名の元ネタ

現職の前提として、デザイナーを雇うかもしれないこと、エンジニアのデザイン知識にばらつきがあること、の2点が挙がったので必要な要件を以下に2つに定めました。

  1. デザイナーさんの作ったデザインも実装できること

  2. デザイナーさんがいなくても、最低限の一貫性を保てること

これらの要件をもとに、Chakra UIを選びました。

Material UIは一貫性という点ではアリですが、独自デザインの実装となるとスタイリングしづらいところがあり断念しました。

Tailwind CSSは独自デザインの実装は問題なくできますが、用意されたコンポーネントがあるわけではないので、エンジニアだけで一貫性を保つという点で断念しました。

採用したのはChakra UI。
必要最低限のコンポーネント、emotionでの柔軟なスタイリングができるという点で選びました

デザイントークンのみ死守。一貫性は最低限

実際にChakra UIを採用し、半年ほどが経ちました。

初期のプロトタイプ実装はChakra UI標準のコンポーネントで実装し、現在はデザイナーさんが業務委託で入ったので標準コンポーネントは使わずスタイリングをおこなっています。

ただ完全に独自デザインというわけでもなく、デザイナーさんにはChakra UIのデザイントークンをもとにデザインを作ってもらってます。
もしデザイナー不在になっても、Chakra UIに沿って実装すればデザイントークンに差異は生まれず、よっぽどひどいデザインにはならないだろう、と希望的観測もまじりながら考えた結果です。

もちろんデザイントークンだけ統一されても、デザインの質が保たれるわけではないので本当に最低限の保証です。

どこまで一貫性・質を担保するか、という基準は色々あると思いますが、今回はデザイントークンレベルでは一貫させる、という試みです。

デザイナーが本採用されればまた違った取り組みになると思いますが、まずは小さいことをうまくやり、クリアできたら次の基準を設けたいと思います。

Discussion