ポートフォリオサイトのデザイン基本原則|余白・フォント・配色・レイアウトを押さえてサイトを磨く


はじめに

前回の記事ではGitHub Pagesを使ってポートフォリオサイトを無料で公開する方法を解説しました。サイトを公開したら次はデザインの質を高めましょう。今回はポートフォリオサイトをより魅力的に見せるためのデザインの基本原則を解説します。コーディングのスキルがあっても、デザインの基礎を知っているかどうかでサイトの印象は大きく変わります。余白・フォント・配色・レイアウトの4つのテーマに絞って、すぐに実践できる知識をお届けします。


1. 余白(ホワイトスペース)

1.1 余白はデザインの主役

余白とは要素と要素の間の空きスペースのことです。初心者がよくやりがちな失敗は余白が少なすぎることです。情報を詰め込みすぎたデザインはごちゃごちゃして見づらく、読者が疲れてしまいます。

余白には以下の2つの役割があります。

役割内容
グループ化近い要素を近くに・遠い要素を遠くに配置することで関係性を伝える
強調余白で囲まれた要素は際立って見える

1.2 余白の基本ルール:8の倍数

余白の値に統一感を持たせるには8pxの倍数を基準にするのがおすすめです。

/* 8の倍数で余白を統一する */
:root {
    --space-xs:  4px;   /* 極小 */
    --space-sm:  8px;   /* 小 */
    --space-md:  16px;  /* 中 */
    --space-lg:  24px;  /* 大 */
    --space-xl:  40px;  /* 特大 */
    --space-2xl: 64px;  /* セクション間 */
    --space-3xl: 96px;  /* ヒーロー余白 */
}
/* 使い方 */
.section {
    padding: var(--space-2xl) 0;
}

.card {
    padding: var(--space-lg);
    margin-bottom: var(--space-md);
}

.btn {
    padding: var(--space-md) var(--space-xl);
}

1.3 セクション間の余白を大きく取る

ポートフォリオサイトでよく見られるセクション(About・Works・Contact)の間の余白は思い切って大きく取ることで、各セクションの独立性が上がり読みやすくなります。

/* セクション間の余白 */
.section {
    padding: 96px 0;     /* 上下に96px */
}

/* スマートフォンでは縮小 */
@media (max-width: 768px) {
    .section {
        padding: 56px 0;
    }
}

💡 余白が多すぎるかなと感じるくらいがちょうどいい: 初心者のうちは余白を大きく取ることへの抵抗感があります。しかし実際には「余白が多すぎる」より「余白が少なすぎる」サイトの方が圧倒的に多いです。迷ったら余白を増やす方向で調整しましょう。


2. フォント

2.1 フォントの選び方

ポートフォリオサイトで使うフォントは最大2種類までに絞りましょう。多くのフォントを使うと統一感がなくなります。

用途推奨フォントの種類
見出し(h1〜h3)サンセリフ体(ゴシック系)Noto Sans JP・Inter
本文(p)読みやすいサンセリフ体Noto Sans JP・Roboto
アクセント・ロゴセリフ体や個性的なフォントPlayfair Display

2.2 Google Fontsの導入方法

<!-- HTMLのheadに追加 -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@400;500;700&family=Inter:wght@400;600;700&display=swap" rel="stylesheet">
/* CSSで適用 */
body {
    font-family: 'Noto Sans JP', 'Inter', sans-serif;
}

h1, h2, h3 {
    font-family: 'Inter', 'Noto Sans JP', sans-serif;
    font-weight: 700;
}

2.3 フォントサイズの階層を作る

フォントサイズに明確な階層を作ることで情報の重要度が伝わりやすくなります。

:root {
    --text-xs:   12px;
    --text-sm:   14px;
    --text-base: 16px;   /* 本文の基準サイズ */
    --text-lg:   18px;
    --text-xl:   20px;
    --text-2xl:  24px;
    --text-3xl:  32px;
    --text-4xl:  48px;   /* ヒーロータイトル */
    --text-5xl:  64px;   /* 大きなキャッチコピー */
}

body {
    font-size: var(--text-base);
    line-height: 1.8;    /* 行間は1.7〜1.9が読みやすい */
}

h1 { font-size: var(--text-4xl); line-height: 1.2; }
h2 { font-size: var(--text-3xl); line-height: 1.3; }
h3 { font-size: var(--text-2xl); line-height: 1.4; }
p  { font-size: var(--text-base); line-height: 1.8; }

2.4 行の長さを制限する

1行の文字数が多すぎると読みにくくなります。本文の最大幅を制限しましょう。

/* 本文の最大幅を制限する(65〜75文字が読みやすい) */
.text-content {
    max-width: 680px;
    margin: 0 auto;
}

p {
    max-width: 65ch;   /* ch単位は「0」の文字幅を基準にした相対単位 */
}

💡 ch 単位を使うと文字数で幅を指定できます: 65ch は「65文字分の幅」という意味です。フォントが変わっても自動的に調整されるため便利な単位です。


3. 配色

3.1 配色の基本:3色ルール

ポートフォリオサイトの配色は3色を基本にすると迷わなくなります。

役割割合内容
ベースカラー約70%背景色(白・オフホワイト・ダークなど)
メインカラー約25%テキスト・UI要素の主要な色
アクセントカラー約5%ボタン・リンク・強調要素
:root {
    /* ベースカラー */
    --color-bg:         #ffffff;
    --color-bg-sub:     #f8f9fa;

    /* メインカラー(テキスト系) */
    --color-text:       #1a1a1a;
    --color-text-sub:   #666666;
    --color-text-muted: #999999;

    /* アクセントカラー */
    --color-accent:     #1A5FC0;
    --color-accent-hover: #0D3A7A;

    /* ボーダー */
    --color-border:     #e0e0e0;
}

3.2 配色ツールを活用する

自分でゼロから配色を考えるのは難しいです。以下のツールを使いましょう。

ツールURL特徴
Coolorscoolors.coランダムでおしゃれな配色を生成
Adobe Colorcolor.adobe.com色相環から配色を作成
Palettapaletta.io有名サイトの配色を参考にできる
Tailwind CSS Colorstailwindcss.com/docs/customizing-colors実績のある配色パレット

3.3 コントラスト比を確認する

文字と背景のコントラスト比が低いと読みにくくなります。アクセシビリティの観点からもコントラスト比は4.5:1以上を目標にしましょう。

コントラスト比評価
7:1以上AAA(最高水準)
4.5:1以上AA(一般的なテキストの最低基準)
3:1以上AA Large(大きなテキストの最低基準)
3:1未満❌ 不十分

確認ツール:WebAIM Contrast Checker(webaim.org/resources/contrastchecker/)

3.4 ダークモードを意識した配色

最近のサイトではダークモードに対応するものが増えています。CSSのメディアクエリで対応できます。

/* ライトモード(デフォルト) */
:root {
    --color-bg:   #ffffff;
    --color-text: #1a1a1a;
}

/* OS設定がダークモードの場合 */
@media (prefers-color-scheme: dark) {
    :root {
        --color-bg:   #0d1117;
        --color-text: #e6edf3;
    }
}

4. レイアウト

4.1 視線の流れを意識する

ユーザーの視線はZ字型またはF字型に動くと言われています。重要な情報は左上・中央に配置し、視線の流れに沿ってコンテンツを並べることが基本です。

パターン向いているレイアウト
Z字型ランディングページ・ポートフォリオのヒーロー
F字型ブログ記事・一覧ページ

4.2 コンテナ幅を統一する

サイト全体で一貫したコンテナ幅を設定しましょう。

/* コンテナの設定 */
.container {
    width: 100%;
    max-width: 1200px;   /* サイト全体の最大幅 */
    margin: 0 auto;
    padding: 0 40px;     /* 左右の余白 */
}

/* 文章コンテンツ用(読みやすい幅) */
.container--narrow {
    max-width: 720px;
}

/* スマートフォン */
@media (max-width: 768px) {
    .container {
        padding: 0 20px;
    }
}

4.3 グリッドレイアウトで整列させる

作品一覧などのカード型レイアウトにはCSS Gridが便利です。

/* 作品一覧のグリッドレイアウト */
.works-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);   /* 3列 */
    gap: 32px;
}

/* タブレット:2列 */
@media (max-width: 1024px) {
    .works-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

/* スマートフォン:1列 */
@media (max-width: 640px) {
    .works-grid {
        grid-template-columns: 1fr;
        gap: 20px;
    }
}

4.4 視覚的な重みを揃える

要素の大きさ・色の濃さ・配置のバランスが揃っているとデザインが安定して見えます。

/* カードの高さを揃える */
.works-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 32px;
    align-items: start;   /* カードの高さが違っても上揃えに */
}

.card {
    display: flex;
    flex-direction: column;
    height: 100%;   /* カードの高さをグリッドセルいっぱいに */
}

.card-body {
    flex: 1;   /* カード内のコンテンツエリアを伸縮させる */
}

.card-footer {
    margin-top: auto;   /* フッターを常に下端に配置 */
}

5. ポートフォリオサイトでよく使うデザインパターン

5.1 ヒーローセクション

.hero {
    display: flex;
    align-items: center;
    min-height: 100vh;   /* 画面の高さいっぱい */
    padding: 80px 0;
    background-color: var(--color-bg);
}

.hero-inner {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 60px;
    align-items: center;
}

.hero-title {
    font-size: clamp(32px, 5vw, 64px);   /* 画面幅に応じてフォントサイズが変化 */
    font-weight: 700;
    line-height: 1.2;
    margin-bottom: 24px;
}

@media (max-width: 768px) {
    .hero-inner {
        grid-template-columns: 1fr;
        text-align: center;
    }
}

💡 clamp() でレスポンシブなフォントサイズを実現できます: clamp(最小値, 推奨値, 最大値) の形式で書くと、画面幅に応じて滑らかにフォントサイズが変化します。メディアクエリなしでレスポンシブなタイポグラフィが実現できます。

5.2 プロフィールカード

.profile-card {
    display: flex;
    align-items: center;
    gap: 40px;
    padding: 48px;
    background: var(--color-bg-sub);
    border-radius: 16px;
}

.profile-avatar {
    width: 120px;
    height: 120px;
    border-radius: 50%;
    object-fit: cover;
    flex-shrink: 0;
    border: 3px solid var(--color-border);
}

.profile-name {
    font-size: 28px;
    font-weight: 700;
    margin-bottom: 8px;
}

.profile-bio {
    color: var(--color-text-sub);
    line-height: 1.8;
    max-width: 500px;
}

@media (max-width: 640px) {
    .profile-card {
        flex-direction: column;
        text-align: center;
        padding: 32px 24px;
    }
}

5.3 スキルバッジ

.skill-list {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
}

.skill-badge {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 6px 16px;
    background: var(--color-bg-sub);
    border: 1px solid var(--color-border);
    border-radius: 100px;   /* 丸いピル型バッジ */
    font-size: 14px;
    font-weight: 500;
    color: var(--color-text);
    transition: all 0.2s ease;
}

.skill-badge:hover {
    background: var(--color-accent);
    color: white;
    border-color: var(--color-accent);
}

6. デザインセルフチェックリスト

余白は8pxの倍数で統一されているか

セクション間の余白は十分に取れているか(最低56px以上)

フォントは2種類以内に絞られているか

本文のfont-sizeは16px以上か

行間(line-height)は1.7〜1.9に設定されているか

配色は3色ルール(ベース・メイン・アクセント)に沿っているか

テキストと背景のコントラスト比は4.5:1以上か

コンテナ幅が全セクションで統一されているか

カードやリストの要素が整列されているか

スマートフォンで見たときに崩れていないか


まとめ

今回はポートフォリオサイトをより魅力的に見せるためのデザインの基本原則を解説しました。ポイントをまとめると:

  • 余白は8pxの倍数で統一して迷ったら増やす方向で調整する
  • フォントは最大2種類まで・本文は16px以上・行間は1.7〜1.9に設定する
  • 配色は「ベースカラー70%・メインカラー25%・アクセントカラー5%」の3色ルールで考える
  • コントラスト比は4.5:1以上を目標にアクセシビリティを意識する
  • コンテナ幅をサイト全体で統一してグリッドレイアウトで要素を整列させる
  • clamp() を使うとメディアクエリなしでレスポンシブなフォントサイズが実現できる

次の記事では、ポートフォリオサイトにGoogleアナリティクスを導入してアクセス解析を始める方法を解説します。どのページが読まれているか・どこからユーザーが来ているかを把握して、サイトの改善に役立てましょう。お楽しみに!

コメント

タイトルとURLをコピーしました