VitePressでドキュメントサイト構築してGitHub Pagesで公開してみた

VitePressでドキュメントサイト構築してGitHub Pagesで公開してみた

VitePressでMarkdownを爆速Webサイト化。GitHub Pagesと組み合わせて無料で公開する手順を紹介します。
2026.01.14

はじめに

VitePressを試してみようと思ったきっかけ

Next.jsに入門したくて、Claudeに入門手順や演習のドキュメントをMarkdownで作成してもらいました。
ただ、ローカルのMarkdownファイルのままだと見づらいし、今後他の人に共有することがあるかもしれないので、そうなるとパブリック公開のWebサイトにするのが一番良さそうだなと思いました。

以前、「Markdownをそのままサイト化できるツール」として、MkDocsは使用したことがあったのですが、せっかくなので使ったことのないツールを使いたいなと思い探していたところ、VitePressに出会いました。

こんな人におすすめ!

  • 爆速でページを公開したい人 - セットアップから公開まで10分で完了
  • Markdownで手軽にドキュメントを書きたい人 - 独自記法なし、普段のMarkdownがそのまま使える
  • 環境構築を最小限にしたい人 - Node.jsさえあればOK
  • 無料でサイトを公開したい人 - GitHub Pagesで完全無料
  • ローカルで確認しながら書きたい人 - 保存するだけで即プレビュー反映

VitePressとは?

概要

ざっくり言うと、Markdownファイルをいい感じのWebサイトに変換してくれるツールです。
内部的にはViteを使っているので、ReactやVueでViteを使ったことがある人なら馴染みのある爆速の開発体験がそのまま得られます。

主な特徴

  • Vite駆動: 開発サーバーの起動が瞬時、HMR(Hot Module Replacement)が爆速
  • Vue 3ベース: Composition APIが使える、TypeScriptフレンドリー
  • Markdownファースト: .mdファイルをそのままページとして認識
  • 軽量: 最小限の依存関係、シンプルな設計

セットアップ手順

前提条件

以下の環境で動作確認しています:

項目 バージョン
OS macOS 15 (Sequoia)
Git 2.39.5
Node.js v24.12.0
pnpm 10.21.0

Note: Git、Node.js 18以上、pnpm(またはnpm/yarn)がインストールされていれば動作します。

1. プロジェクトの初期化

まず、作業ディレクトリに移動してVitePressをインストールします。

# プロジェクトディレクトリ(今回は演習資料を格納するので「practice」という名前にしました)に移動
cd practice

# package.jsonの作成(まだない場合)
pnpm init

# VitePressのインストール
pnpm add -D vitepress

2. VitePressの初期設定

VitePressの初期化コマンドを実行します。

pnpm vitepress init

以下のような質問に答えます:

┌  Welcome to VitePress!
│
◇  Where should VitePress initialize the config?
│  ./  ← 設定ファイルをどこに作成するか。今回は現在のディレクトリを選択。
│
◇  Where should VitePress look for your markdown files?
│  ./  ← どのディレクトリに公開したいマークダウンファイルを置いてるか。今回は現在のディレクトリを選択。
│
◇  Site title:
│  Next.js入門ドキュメント  ← サイトのタイトルを入力。
│
◇  Site description:
│  Next.js入門のための演習教材  ← サイトの説明を入力。
│
◇  Theme:
│  Default Theme  ← テーマを選択。今回はデフォルトを選択。
│
◇  Use TypeScript for config and theme files?
│  Yes  ← コンフィグファイルでTypeScriptを使用するか。
│
◇  Add VitePress npm scripts to package.json?
│  Yes  ← 開発サーバーの起動コマンド(vitepress dev)等をpackage.jsonに記載するか。
│
◇  Add a prefix for VitePress npm scripts?
│  Yes  ← コマンドにプレフィックスを利用するか。「doc」のような任意のプレフィックスを付与可能。※次の設問参照
│
◇  Prefix for VitePress npm scripts:
│  doc  ← これにより doc:dev, doc:build などのコマンドになる(デフォルトだとdev, buildの形式)
│
└  Done! Now run pnpm run doc:dev and start writing.

CleanShot 2026-01-13 at 18.02.36

3. 設定ファイルの確認

.vitepress/config.ts が自動生成されます。初期状態では以下のような内容になっています:

// .vitepress/config.ts
import { defineConfig } from 'vitepress'

// https://vitepress.dev/reference/site-config
export default defineConfig({
  title: "Next.js入門ドキュメント",
  description: "Next.js入門のための演習教材",
  themeConfig: {
    // https://vitepress.dev/reference/default-theme-config
    nav: [
      { text: 'Home', link: '/' },
      { text: 'Examples', link: '/markdown-examples' }
    ],

    sidebar: [
      {
        text: 'Examples',
        items: [
          { text: 'Markdown Examples', link: '/markdown-examples' },
          { text: 'Runtime API Examples', link: '/api-examples' }
        ]
      }
    ],

    socialLinks: [
      { icon: 'github', link: 'https://github.com/yuta-ishii-cm/next-app-task-manager' }
    ]
  }
})

4. package.jsonの確認

package.jsonにスクリプトが自動追加されます。以下のような内容になります:

{
  "type": "module",
  "devDependencies": {
    "vitepress": "2.0.0-alpha.15"
  },
  "scripts": {
    "doc:dev": "vitepress dev",
    "doc:build": "vitepress build",
    "doc:preview": "vitepress preview"
  }
}

5. 開発サーバーの起動

# 開発サーバーを起動
pnpm doc:dev

ブラウザで http://localhost:5173 にアクセスすると、サイトが表示されます。
CleanShot 2026-01-13 at 17.37.50@2x

6. 教材ファイルの配置

今回用意した教材のMarkdownファイルは以下の構成です:

practice/
├── .vitepress/
│   └── config.ts        # VitePressの設定ファイル
├── index.md             # トップページ
├── phase1.md            # Phase 1: 基礎編
├── phase2.md            # Phase 2: UI構築編
├── phase3.md            # Phase 3: データ操作編
├── phase4.md            # Phase 4: 完成編
└── optional.md          # 発展課題集(Optional)

VitePressでは、Markdownファイルをルートディレクトリに配置するだけでページとして認識されます。ファイル名がそのままURLパスになります(例: phase1.md/phase1)。

7. カスタマイズ

デフォルト状態ではサンプルページ(Examples)へのリンクが表示されています。自分のコンテンツに合わせてカスタマイズしましょう。

設定ファイル(config.ts)の編集

.vitepress/config.ts を以下のように編集します:

import { defineConfig } from 'vitepress'

export default defineConfig({
  title: "Next.js入門ドキュメント",
  description: "Next.js入門のための演習教材",
  lang: 'ja-JP',  // 日本語対応
  ignoreDeadLinks: [
    /localhost/  // 教材内のlocalhostリンクはチェック対象外
  ],
  themeConfig: {
    // ナビゲーション
    nav: [
      { text: 'ホーム', link: '/' },
      { text: 'はじめに', link: '/phase1' }
    ],

    // サイドバー
    sidebar: [
      {
        text: '演習',
        items: [
          { text: 'Phase 1: 基礎編', link: '/phase1' },
          { text: 'Phase 2: UI構築編', link: '/phase2' },
          { text: 'Phase 3: データ操作編', link: '/phase3' },
          { text: 'Phase 4: 完成編', link: '/phase4' },
          { text: '発展課題集', link: '/optional' }
        ]
      }
    ],

    // ローカル検索を有効化
    search: {
      provider: 'local'
    },

    socialLinks: [
      { icon: 'github', link: 'https://github.com/your-username/your-repo' }
    ]
  }
})

主な変更点:

  • lang: 'ja-JP' で日本語設定
  • ignoreDeadLinks で教材内のlocalhostリンクをチェック対象外に(ビルドエラー回避)
  • navsidebar を自分のコンテンツ構成に合わせて変更
  • search.provider: 'local' でローカル検索を有効化

トップページ(index.md)の編集

index.md を編集してトップページをカスタマイズします:

---
layout: home  # トップページ用のレイアウトを指定

hero:  # ページ上部のメインビジュアル部分
  name: "Next.js入門ドキュメント"      # 大きく表示されるサイト名
  text: "Next.js入門のための演習教材"   # サブタイトル
  tagline: Next.jsに入門してみよう  # キャッチコピー
  actions:  # CTAボタン
    - theme: brand      # メインボタン(強調色)
      text: Phase 1から始める
      link: /phase1
    - theme: alt        # サブボタン(控えめな色)
      text: GitHub
      link: https://github.com/yuta-ishii-cm/next-app-task-manager

features:  # ページ下部のカード形式で並ぶ特徴紹介セクション
  - title: Phase 1 - 基礎編
    details: App Routerの仕組み、ファイルベースルーティング、Server/Client Componentの違いを理解する
    link: /phase1           # カードクリックで遷移するリンク先
    linkText: 詳しく見る     # リンクテキスト(省略可)
  - title: Phase 2 - UI構築編
    details: コンポーネント設計、TypeScriptでの型定義、Tailwind CSSでカンバンボードUIを構築する
    link: /phase2
    linkText: 詳しく見る
  - title: Phase 3 - データ操作編
    details: useStateでの状態管理、フォーム作成、イベントハンドリング、Server Actionsの基礎を学ぶ
    link: /phase3
    linkText: 詳しく見る
  - title: Phase 4 - 完成編
    details: Prismaでデータベース構築、Server ActionsでCRUD操作、Vercelへデプロイする
    link: /phase4
    linkText: 詳しく見る
  - title: 発展課題集(Optional)
    details: ドラッグ&ドロップ、楽観的更新など、さらにスキルアップしたい人向けのチャレンジ課題
    link: /optional
    linkText: 詳しく見る
---

実際に作ったもの

スクリーンショット

HOME

CleanShot 2026-01-13 at 17.54.17

Phase1のページ

CleanShot 2026-01-13 at 17.56.04

ライトモードに切り替え

CleanShot 2026-01-13 at 17.57.06

GitHub Pagesで公開する

1. ビルド設定の確認

GitHub Pagesで公開する場合、baseオプションの設定が必要です。リポジトリ名がサブパスになる場合は以下のように設定します:

// .vitepress/config.ts
export default defineConfig({
  title: "Next.js入門ドキュメント",
  description: "Next.js入門のための演習教材",
  base: '/your-repo-name/',  // リポジトリ名に合わせて変更(今回は)
  // ...
})

2. GitHub Actionsワークフローの作成

.github/workflows/deploy.yml を作成します:

# ワークフロー名(GitHub Actionsの画面に表示される)
name: Deploy VitePress site to Pages

# ワークフローの実行トリガー
on:
  push:
    branches: [main]  # mainブランチへのプッシュで自動実行
  workflow_dispatch:  # GitHub画面から手動実行も可能

# ワークフローに付与する権限
permissions:
  contents: read      # リポジトリの読み取り権限
  pages: write        # GitHub Pagesへの書き込み権限
  id-token: write     # OIDCトークンの発行権限(Pages認証に必要)

# 同時実行の制御
concurrency:
  group: pages                 # 同じグループのワークフローは同時実行しない
  cancel-in-progress: false    # 実行中のワークフローはキャンセルしない

jobs:
  # ========================================
  # ビルドジョブ: サイトをビルドしてアーティファクトを作成
  # ========================================
  build:
    runs-on: ubuntu-latest
    steps:
      # リポジトリのコードをチェックアウト
      - name: Checkout
        uses: actions/checkout@v4
        with:
          fetch-depth: 0  # 全履歴を取得(lastUpdatedの表示に必要)

      # pnpmのセットアップ
      - name: Setup pnpm
        uses: pnpm/action-setup@v3
        with:
          version: 9

      # Node.jsのセットアップ(pnpmキャッシュも有効化)
      - name: Setup Node
        uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: pnpm
          cache-dependency-path: practice/pnpm-lock.yaml

      # GitHub Pagesの設定を取得
      - name: Setup Pages
        uses: actions/configure-pages@v4

      # 依存パッケージのインストール
      - name: Install dependencies
        run: pnpm install
        working-directory: practice

      # VitePressでサイトをビルド(.vitepress/distに出力)
      - name: Build with VitePress
        run: pnpm doc:build
        working-directory: practice

      # ビルド成果物をアーティファクトとしてアップロード
      - name: Upload artifact
        uses: actions/upload-pages-artifact@v3
        with:
          path: practice/.vitepress/dist  # ビルド出力ディレクトリ

  # ========================================
  # デプロイジョブ: ビルド成果物をGitHub Pagesに公開
  # ========================================
  deploy:
    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }}  # デプロイ先URL
    needs: build           # buildジョブの完了を待つ
    runs-on: ubuntu-latest
    steps:
      # GitHub Pagesにデプロイ
      - name: Deploy to GitHub Pages
        id: deployment
        uses: actions/deploy-pages@v4

3. GitHub Pagesの設定

  1. GitHubリポジトリの SettingsPages に移動
    CleanShot 2026-01-13 at 18.11.27

CleanShot 2026-01-13 at 18.13.07

  1. Source で「GitHub Actions」を選択
    CleanShot 2026-01-13 at 18.14.09

4. デプロイの実行

変更をcommit & プッシュすると自動的にGitHub Actionsが実行され、数分後にサイトが公開されます。

Github Actionsの実行結果

緑のチェックになってればOK!
CleanShot 2026-01-13 at 18.30.40

※失敗すると赤くなります!
CleanShot 2026-01-13 at 18.32.31

実際に公開されたページ

以下リンクからアクセスできます。
https://yuta-ishii-cm.github.io/next-app-task-manager/

CleanShot 2026-01-13 at 18.34.01


まとめ

VitePressは「Markdownファイルを手軽にWebサイト化したい」というニーズに応えてくれるツールでした。ReactでViteを使ったことがある人なら、あの爆速の開発サーバー起動を知っていると思いますが、まさにあの体験がそのままドキュメントサイト構築でもできます。GitHub Pagesへのデプロイも簡単で、数分でサイトを公開できました。


その他:参考情報

公式リンク

便利なプラグイン・ツール

この記事をシェアする

FacebookHatena blogX

関連記事