2024年9月-2024年12月

ポートフォリオサイト2024改修

ポートフォリオサイト2024改修

Summary

「思考を見せるポートフォリオ」への転換を目指し、作品ページをブログ記事形式に刷新。デザインシステムの設計からStyle Dictionary→Tailwind CSSへのトークン連携・Astroでの実装まで一貫して担当した。

Before

テキストと画像のエリアが分かれており、制作過程の説明が文字文字しくなってしまう。仕事のイメージが伝わりにくい構成だった。

After

ブログ記事形式に変更し、画像とテキストが混在した「思考が伝わる」レイアウトに刷新。Figma Variables → Style Dictionary → Tailwind CSSのパイプラインでデザイントークンをコードに自動連携する仕組みを構築した。

Key Decisions

  1. 1
    ブログ記事形式を参考にした構成変更

    noteやzennのレイアウトが「テキストと画像が混在して制作過程を伝える」今回の目的と合致すると判断し、作品単体ページの構成をブログ記事形式に変更した。

  2. 2
    デザイントークンのコード自動連携パイプラインの構築

    Figma VariablesをExport Filtered VariablesでJSONに出力し、Style Dictionary経由でCSSに変換、TailwindにユーティリティクラスとしてのDesign Token登録する仕組みを構築。デザインと実装の乖離を防いだ。

進め方の流れ

制作の流れ

始めに現状の課題を把握して解決策を洗い出し、その解決策を元にFigmaでデザインとして具体化し、実装していきました。

現状の課題の把握

作品ページ全体

01 デザイン作成

記事ページのデザイン

作品単体ページをブログ記事形式のレイアウトにする方針に決まり、「ユーザー体験の向上に寄与するか?」を軸にコンポーネントを精査しました。

再利用するコンポーネント

  • パンくずリスト
  • ヘッダー
  • サジェスト(ページ下部)

新たに制作するコンポーネント

  • 作品詳細説明ボックス
  • Figmaリンクカード
  • 画像キャプションセット
  • 目次

02 デザインシステム

進め方については「Figma for デザインシステム デザインを中心としたプロダクト開発の仕組み作り」という書籍を参考にさせていただきました。

カラー

定義したカラー(Pinegreen)

定義したカラー(Semantic)

アクセントカラーはサイトの印象に関わる重要な色です。

そのためデザイナーとして大事にしてきた「シンプル、共感、継続」という信念から「植物」を着想し、それを想起させるグリーン(PineGreen)を選定しました。

2026年3月 追記: その後、サイトのビジュアル言語が「水・光・プリズムの屈折」へと深化したため、アクセントカラーを見直しました。ポートフォリオサイトそのものを作品を映し出す水槽・水という空間と捉え直したとき、特定の生き物(水草)に色を紐付けるより、水そのものの色を軸にする方が一貫性があると判断。プライマリカラーは PineGreen(#197B4D)から Aqua(#1F7A88)に移行しています。

タイポグラフィ

定義したタイポグラフィ

タイポグラフィはTypescalesを使用して比率を決め、行間や字間についてはプロトタイプでバランスを検証して決めました。

特に本文サイズはベンチマークとしているサイトを参考に大きく、行間は広めにとって可読性が向上するように工夫しました。

角丸、余白、ボーダー、不透明度、エレベーション

定義したトークン達

コンポーネント

コンポーネントの画像

コンポーネントを整理し、「EightShapes Specs」というプラグインを使用してドキュメント化しました。

データを作る際にはレイヤー名の命名規則を統一し、オートレイアウトの設定やコンポーネントのプロパティ設定をするようにしました。

03 実装

実装の説明

実装するにあたり、sdenv(フロントエンド開発スターターキット)を使用させていただきました。

現行のポートフォリオサイトをベースとしつつも、コードの再利用性や可読性、保守性を意識して実装を行いました。

フレームワークは以下を使用しました。

  • Astro: ウェブサイト構築のためのフレームワーク
  • Tailwind CSS: ユーティリティファーストCSSフレームワーク
  • Alpine.js: HTMLに直接振る舞いを記述できるようにするJavaScriptフレームワーク

Tailwind CSSやAlpine.jsを使用してHTML上でスタイル・機能を適用しつつ、AstroでWebサイト構築のために最適化(SSRとJSの軽量化)する構成となっています。

デザインシステムの登録

デザインシステムの反映方法

Figmaでバリアブルズを登録したあとはプラグイン「Export Filtered Variables」を使用してjson形式に出力しました。

このjsonファイルを「Style Dictionary」を通してcssに変換し、tailwindの設定ファイルにユーティリティクラスとして登録しました。

記事コンテンツ作成の仕組み

コーディングデータの階層構造

作品単体ページは複数存在するため、content/worksのmdxファイルを[…slug].astroで読み込んで動的にルーティングしています。

一方aboutページでは、作品単体ページとは違い読み込むファイルが単一のページのため、about.mdx自体をページとして作成するようにしています。

store

storeでのステータス管理

Alpine.jsを使用して動的な処理をしているため、DOM生成前にコンポーネントで使用するプロパティが存在している必要がある場面がありました。

そこで上図のようにstoreを使い、グローバルで関数を登録することで、いずれのページでもAlpineのロードと同時にプロパティがされるような仕様に変更しました。

04 終わりに

今回はデザイナーという枠にとどまらず実装も行ったことで、サイト設計をする上での新たな気づきが得られました。

デザインシステムは作って終わりではなく組織の成長と同様に成長していきます。定期的に見直しをしてアップデートを行なっていきます。

最後に反省と今回の学びについてまとめます。

  • 反省点
    • デザインシステムが更新された際に、自動でtailwind.config.jsに反映するような仕組みにできなかった
    • プログラミングにブランクがあり、想定よりも時間がかかった
  • 学び
    • デザインシステムの決め方、活用方法
    • github copiotの使い方、汎用性
    • デザインシステムとtailwind cssを紐付ける方法

おまけ

タイポグラフィ

Title

title-lg

風が運ぶ季節の音に
耳を澄ます。

title-md

風が運ぶ季節の音に
耳を澄ます。

title-sm

風が運ぶ季節の音に
耳を澄ます。

Heading

heading-lg

風が運ぶ季節の音に
耳を澄ます。

heading-md

風が運ぶ季節の音に
耳を澄ます。

heading-sm

風が運ぶ季節の音に
耳を澄ます。

heading-xs

風が運ぶ季節の音に
耳を澄ます。

Body

Normal

body-lg

風が運ぶ季節の音に
耳を澄ます。

body-md

風が運ぶ季節の音に
耳を澄ます。

body-sm

風が運ぶ季節の音に
耳を澄ます。

body-xs

風が運ぶ季節の音に
耳を澄ます。

Bold

body-bold-lg

風が運ぶ季節の音に
耳を澄ます。

body-bold-md

風が運ぶ季節の音に
耳を澄ます。

body-bold-sm

風が運ぶ季節の音に
耳を澄ます。

body-bold-xs

風が運ぶ季節の音に
耳を澄ます。

Label

label-md

風が運ぶ季節の音に
耳を澄ます。

label-sm

風が運ぶ季節の音に
耳を澄ます。

label-xs

風が運ぶ季節の音に
耳を澄ます。

Caption

caption-md

風が運ぶ季節の音に
耳を澄ます。

caption-sm

風が運ぶ季節の音に
耳を澄ます。

カラーシステム

Body

default

description

placeholder

onfill

Link

default

hovered

Icon

default

subtle

Background

Normal

default

subtle

subtler

inverse

PrimaryAction

enabled

hovered

pressed

SecondaryAction

enabled

hovered

pressed

Border

Normal

default

subtle

subtler

bold

inverse

PrimaryAction

focused

SecondaryAction

enabled

focused

自主制作UI作成実装Webサイトデザインシステム実装

Other Works