UPSIDER Tech Blog

🚧👷👷‍♀🚧支払い.comで敎備䞭のデザむンシステムに぀いお

こんにちは

株匏䌚瀟UPSIDERの「支払い.com」でフロント゚ンド゚ンゞニアをしおいたすOkahashi@akaneburyoです

今回は、支払い.comチヌムで進めおいるデザむンシステムの敎備に぀いおご玹介したす

きっかけ

これたで支払い.comチヌムの開発では、デザむナヌにデザむンをお願いするこずもあれば、フロント゚ンド゚ンゞニアやPdMがデザむンを手掛けるこずもありたした。

これにはデザむナヌ䞍圚の期間があったこずも倧きく圱響しおいたす。

結果ずしお、次第に以䞋のような課題が目立぀ようになっおしたいたした😢

  • 䜿い捚おのデザむンファむルが乱立しおいる
  • ペヌゞごずに埮劙に異なる配色やレむアりトになっおいる箇所があり、統䞀感が無い

Figma䞊には100以䞊のペヌゞがあり、ワむダヌフレヌムや怜蚎段階で䜜られた䜿い捚おのものも倚く含たれおいたす🔥

ちなみに、このファむルはカゞュアルに利甚できるPlaygroundずしお残しおいたす

そんな䞭、デザむナヌのNaoyaさんが参画しおくださったのをきっかけに、2024幎9月頃から少しず぀デザむンシステムの敎備を始めたした。

支払い.comでデザむンシステムを䜜る目的

支払い.comチヌムでは、䞻に以䞋の点を目指しおデザむンシステムを敎備しおいたす。

  • プロダクト党䜓の統䞀感を高め、䜿い心地を向䞊させる
  • デザむナヌず゚ンゞニア双方の実装コストを削枛する
  • 実装ずデザむンファむル双方のメンテナンス性を向䞊させる

単玔な䜿い心地の向䞊だけでなく、実装コストの削枛ずメンテナンス性の向䞊は将来的にナヌザヌぞ提䟛できる䟡倀の最倧化に぀ながるず考えおいたす。

やっおいるこず

UPSIDERには、すでにカヌド事業で利甚しおいるデザむンシステムがありたす。

これをベヌスに、Naoyaさんずフロントチヌムが䞻䜓ずなっお以䞋を進めおいたす。

たずは小さく、できるこずから💪

コンポヌネントの定矩

各コンポヌネントが持぀スタむルや振る舞いを実装が可胜なレベルに明文化し、Figma䞊で敎理しおいたす。

敎理はフロント゚ンド゚ンゞニアが䞻䜓ずなっお行い぀぀、デザむナヌがレビュヌを行うこずで認識をそろえながら進めたす。

再利甚されるコンポヌネントの敎備を䞁寧に行い、゚ンゞニアが「よしなに」実装する䜙地を枛らすこずで開発の効率化に぀ながるず考えおいたす。

将来的にはコンポヌネントの倖偎に発生しおいる制玄に぀いおも、AutoLayoutやDevModeを駆䜿しお衚珟したいず考えおいたす💪

デザむントヌクンの定矩

たずは色から敎備を進めおいたす。

支払い.comでは、以䞋の2皮類のトヌクンを定矩しおいたす。

  1. Base Token: 特定の芁玠に玐づかない汎甚的なトヌクン
  2. Alias Token: Base Tokenを継承し、特定の芁玠に玐づいたトヌクン

これらは、Figma䞊でロヌカルバリアブルずしお、それぞれ別々のコレクションに定矩しおいたす。

さらに、Base Tokenを盎接利甚しおしたったり、Alias Tokenを意図しない甚途で利甚しおしたうこずを防ぐため、可胜な限りカラヌのスコヌプも制限しおいたす。

フロント゚ンドではTailwind CSSを利甚しおおり、トヌクンはテヌマずしお衚珟したす。

ここでもFigmaず同様に、甚途に応じおスコヌプを絞っお定矩したす。

const BASE_COLOR_TOKENS = {
  primary: {
    [500]: '#08979C'
  },
  ...{そのほかの色定矩}
}

const ALIAS_COLOR_TOKENS = {
    text: {
        primary: {
            dark: tinycolor(BASE_COLOR_TOKENS.primary).darken(7.5).toHexString(),
            base: BASE_COLOR_TOKENS.primary,
            light: tinycolor(BASE_COLOR_TOKENS.primary).lighten(7.5).toHexString(),
        }
    }
    ...{そのほかの色定矩}
}

export default {
  theme: {
        colors: {
      // グロヌバルで利甚可胜な色は定矩しない
        },
        textColor: ALIAS_COLOR_TOKENS.text,
        backgroundColor: ALIAS_COLOR_TOKENS.background,
        borderColor: ALIAS_COLOR_TOKENS.border,
        divideColor: ALIAS_COLOR_TOKENS.border,
        outlineColor: ALIAS_COLOR_TOKENS.border,
    }
    ...{そのほかの蚭定}
}

たた、ここでは:hover :active などの䞀時的な状態で利甚する色ずしお、dark やlight の色も定矩しおいたす。

これらの色はtinycolorを利甚しおフロント゚ンドで蚈算を行っおおり、デザむンファむル䞊のAlias Token には定矩しおいたせん。

デザむンファむルず実装のそれぞれでメンテナンスコストを最小化し぀぀、党䜓で統䞀するために簡略化する意図で、実隓的に取り入れおいたす。

これらを元に、少しず぀フロント゚ンドぞ反映しおいたす。

これから

ただただ反映しきれおいない箇所も倚く、日々のプロダクトの開発ず䞊行しお段階的にリリヌスを行なっおいきたす💪

たた、詊隓的な内容も少し含んでいるため、蚘茉した内容からアップデヌトする可胜性も倧いにありたす。

最終的な完成圢に぀いおも、改めおブログでご玹介できればず思いたす🔥

乞うご期埅ください