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

ポートフォリオサイト2024改修
制作内容: 自主制作
担当範囲: UI作成、実装
制作期間: 2024年9月-12月(Des 2週間、Cod 2ヶ月)
制作点数: 3画面(SP/PC、デザインシステム)

「デザインシステムの検証」と「作品を発信する場を整える」目的で、既存ポートフォリオサイトのデザインの改修・実装を行いました。

進め方の流れ

制作の流れ

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

現状の課題の把握

今回のポートフォリオ改修はサイトに訪れた方に「仕事のイメージがしやすい構成にする」ことを考えていました。

そのためデザインを見せるだけではなく、「思考を見せる」ことも重視していましたが、
「テキストと画像のエリアが分かれており、制作過程の説明が文字文字しくなってしまう」
という問題がありました。

作品ページ全体

サイト改修の方針

この問題を解決するために「テキストと画像が混在しているサイト」の参考を集めました。

その結果noteやzennといったブログ記事サイトのレイアウトが今回の目的とも合っていると考え、「作品ページの構成をブログ記事形式に変更する」方針でサイトを改修していくことに決めました。

01 デザイン作成

記事ページのデザイン

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

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

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

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

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

02 デザインシステム

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

カラー

定義したカラー(Pinegreen)

定義したカラー(Semantic)

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

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

タイポグラフィ

定義したタイポグラフィ

タイポグラフィは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/blogの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

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

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

bold

inverse

PrimaryAction

focused

SecondaryAction

enabled

focused

Other Works