コンテンツにスキップ

🚀 GitHub Pages × MkDocs 完全自動化ガイド - CI/CDからデプロイまでワンストップ構築

🎯 この記事の目標

検索意図: github pages mkdocs で検索するユーザーに対し、MkDocsでGitHub Pagesサイトを構築し、GitHub Actionsで完全自動化する方法を実装レベルで解説します。

こんな方におすすめ

  • MkDocsでドキュメントサイトを作りたい
  • GitHub Pagesで無料ホスティングしたい
  • GitHub Actionsで自動デプロイを実現したい
  • 技術ブログやポートフォリオサイトを構築したい

📋 実装ロードマップ

Phase 1: 基本環境構築

  1. リポジトリ準備 - GitHub Pages対応リポジトリ作成
  2. MkDocs初期設定 - 設定ファイルとディレクトリ構造
  3. ローカル開発環境 - 即座に確認できる開発フロー

Phase 2: GitHub Actions自動化

  1. CI/CDワークフロー - 自動ビルド・デプロイ設定
  2. 高度な設定 - カスタムテーマとプラグイン統合
  3. 運用最適化 - パフォーマンスとSEO対策

🛠️ Phase 1: 基本環境構築

1.1 GitHubリポジトリセットアップ

# 新規リポジトリ作成(GitHubで作成済みの場合)
git clone https://github.com/your-username/your-docs-site.git
cd your-docs-site

# 既存プロジェクトの場合
mkdir docs-site && cd docs-site
git init

重要: リポジトリ名の注意事項

  • 個人サイト: username.github.iohttps://username.github.io/
  • プロジェクトサイト: project-namehttps://username.github.io/project-name/

1.2 MkDocs環境構築

# Python仮想環境作成
python -m venv mkdocs-env
source mkdocs-env/bin/activate  # Windows: mkdocs-env\Scripts\activate

# MkDocs関連パッケージインストール
pip install mkdocs mkdocs-material mkdocs-git-revision-date-localized-plugin

# 依存関係ファイル作成
pip freeze > requirements.txt

1.3 基本的なmkdocs.yml設定

site_name: あなたのサイト名
site_url: https://your-username.github.io/your-repo-name/
site_description: MkDocsで構築した技術ドキュメントサイト

# テーマ設定
theme:
  name: material
  palette:
    # ライトモード
    - scheme: default
      primary: indigo
      accent: indigo
      toggle:
        icon: material/brightness-7
        name: ダークモードに切り替え
    # ダークモード
    - scheme: slate
      primary: indigo
      accent: indigo
      toggle:
        icon: material/brightness-4
        name: ライトモードに切り替え

  features:
    - navigation.tabs
    - navigation.top
    - search.highlight
    - search.share
    - content.code.copy

# プラグイン
plugins:
  - search:
      lang: ja
  - git-revision-date-localized:
      type: datetime
      timezone: Asia/Tokyo

# マークダウン拡張
markdown_extensions:
  - admonition
  - pymdownx.details
  - pymdownx.superfences
  - pymdownx.highlight:
      anchor_linenums: true
  - pymdownx.inlinehilite
  - pymdownx.snippets
  - pymdownx.tabbed:
      alternate_style: true

# ナビゲーション
nav:
  - ホーム: index.md
  - ガイド:
    - 始め方: guides/getting-started.md
    - 設定: guides/configuration.md
  - API: api/
  - ブログ: blog/

# 追加設定
extra:
  social:
    - icon: fontawesome/brands/github
      link: https://github.com/your-username
    - icon: fontawesome/brands/twitter
      link: https://twitter.com/your-username

1.4 初期コンテンツ作成

# ディレクトリ構造作成
mkdir -p docs/{guides,api,blog}

# メインページ作成
cat > docs/index.md << 'EOF'
# Welcome to Your Documentation

## 🎯 このサイトについて

MkDocsとGitHub Pagesで構築した技術ドキュメントサイトです。

### 🚀 特徴

- **自動デプロイ**: GitHub Actionsで完全自動化
- **レスポンシブ**: モバイル対応のMaterial Design
- **高速検索**: 内蔵検索機能で即座にコンテンツ発見
- **SEO最適化**: 構造化データとサイトマップ自動生成

## 📚 コンテンツ

- [ガイド](/ai-development/guides/getting-started/) - 基本的な使い方
- [API](/ai-development/api/) - APIリファレンス
- [ブログ](/ai-development/blog/) - 技術記事

EOF

# サンプルガイド作成
cat > docs/guides/getting-started.md << 'EOF'
# 🚀 Getting Started

## インストール

\`\`\`bash
pip install mkdocs mkdocs-material
\`\`\`

## 基本コマンド

\`\`\`bash
# 開発サーバー起動
mkdocs serve

# サイトビルド
mkdocs build
\`\`\`
EOF

1.5 ローカル開発フロー

# 開発サーバー起動
mkdocs serve

# カスタムポート指定
mkdocs serve --dev-addr 127.0.0.1:8001

# ライブリロード確認
# ブラウザで http://127.0.0.1:8000 を開く

開発効率化のコツ

  • ライブリロード: ファイル保存で即座に反映
  • 検索テスト: ローカルでも検索機能が動作
  • レスポンシブ確認: DevToolsでモバイル表示チェック

⚡ Phase 2: GitHub Actions自動化

2.1 GitHub Pages設定

  1. リポジトリ設定:

    Settings → Pages → Source → GitHub Actions
    

  2. ブランチ戦略:

  3. mainブランチ: ソースコード
  4. gh-pagesブランチ: 自動生成(触らない)

2.2 GitHub Actionsワークフロー

.github/workflows/deploy.yml:

name: Deploy MkDocs to GitHub Pages

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

permissions:
  contents: read
  pages: write
  id-token: write

concurrency:
  group: "pages"
  cancel-in-progress: false

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout
      uses: actions/checkout@v4
      with:
        fetch-depth: 0  # git-revision-date-localized-plugin用

    - name: Setup Python
      uses: actions/setup-python@v4
      with:
        python-version: '3.11'
        cache: 'pip'

    - name: Install dependencies
      run: |
        pip install -r requirements.txt

    - name: Build MkDocs
      run: |
        mkdocs build --verbose --clean

    - name: Upload Pages artifact
      uses: actions/upload-pages-artifact@v2
      with:
        path: ./site

  deploy:
    if: github.ref == 'refs/heads/main'
    needs: build
    runs-on: ubuntu-latest

    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }}

    steps:
    - name: Deploy to GitHub Pages
      id: deployment
      uses: actions/deploy-pages@v2

2.3 高度なワークフロー設定

プルリクエスト用プレビュー:

# .github/workflows/preview.yml
name: Build PR Preview

on:
  pull_request:
    branches: [ main ]

jobs:
  build-preview:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4

    - name: Setup Python
      uses: actions/setup-python@v4
      with:
        python-version: '3.11'
        cache: 'pip'

    - name: Install dependencies
      run: pip install -r requirements.txt

    - name: Build site
      run: mkdocs build

    - name: Comment PR
      uses: actions/github-script@v6
      with:
        script: |
          github.rest.issues.createComment({
            issue_number: context.issue.number,
            owner: context.repo.owner,
            repo: context.repo.repo,
            body: '🚀 Preview build completed! Check the build artifacts.'
          })

🎨 Phase 3: 高度なカスタマイズ

3.1 カスタムテーマとスタイル

カスタムCSS (docs/stylesheets/extra.css):

/* カスタムブランドカラー */
:root {
  --md-primary-fg-color: #2563eb;
  --md-accent-fg-color: #3b82f6;
}

/* コードブロックの改善 */
.highlight {
  border-radius: 8px;
  box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}

/* ナビゲーションの強化 */
.md-nav__item--active > .md-nav__link {
  font-weight: 600;
  color: var(--md-primary-fg-color);
}

/* レスポンシブ画像 */
.md-content img {
  max-width: 100%;
  height: auto;
  border-radius: 4px;
  box-shadow: 0 2px 8px rgba(0,0,0,0.1);
}

mkdocs.yml追加設定:

extra_css:
  - stylesheets/extra.css

extra_javascript:
  - javascripts/extra.js

3.2 プラグイン統合

高度なプラグイン設定:

plugins:
  - search:
      lang: ja
  - git-revision-date-localized:
      type: datetime
      timezone: Asia/Tokyo
      locale: ja
  - minify:
      minify_html: true
      minify_css: true
      minify_js: true
  - social:
      cards_layout_options:
        background_color: "#2563eb"
  - tags:
      tags_file: tags.md

3.3 SEO最適化とパフォーマンス

構造化データ設定:

# mkdocs.yml
extra:
  analytics:
    provider: google
    property: G-XXXXXXXXXX

  schema:
    type: WebSite
    name: Your Site Name
    description: Your site description
    url: https://your-username.github.io/

  social:
    - icon: fontawesome/brands/github
      link: https://github.com/your-username
      name: GitHub

サイトマップとrobots.txt:

# mkdocs.yml
plugins:
  - sitemap:
      changefreq: daily
      priority: 1.0

site_url: https://your-username.github.io/your-repo/

🔧 運用とトラブルシューティング

4.1 よくある問題と解決法

デプロイ失敗の対処法

Problem: GitHub Actions が失敗する

# ローカルでビルドテスト
mkdocs build --verbose

# 依存関係確認
pip check

Solution: - requirements.txt のバージョン固定 - プラグインの互換性確認 - Python バージョン統一

パフォーマンス最適化

画像最適化:

# WebP変換自動化
find docs -name "*.png" -exec cwebp {} -o {}.webp \;

ビルド高速化:

plugins:
  - optimize:
      enabled: !ENV [CI, false]

4.2 メンテナンスとアップデート

依存関係更新ワークフロー:

# .github/workflows/update-deps.yml
name: Update Dependencies

on:
  schedule:
    - cron: '0 9 * * 1'  # 毎週月曜日 9時
  workflow_dispatch:

jobs:
  update:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4

    - name: Update pip packages
      run: |
        pip install --upgrade pip
        pip install -U mkdocs mkdocs-material
        pip freeze > requirements.txt

    - name: Create PR
      uses: peter-evans/create-pull-request@v5
      with:
        title: "📦 Update dependencies"
        body: "Automated dependency update"
        branch: update-deps

🎯 成功指標とKPI

実装完了チェックリスト

  • 基本機能: MkDocs サイトがローカルで正常動作
  • 自動デプロイ: GitHub Actions でエラーなくデプロイ完了
  • レスポンシブ: モバイル・デスクトップで正常表示
  • SEO対策: サイトマップ生成とメタデータ設定
  • 検索機能: サイト内検索が正常に動作
  • パフォーマンス: PageSpeed Insights スコア 90点以上

継続的改善ポイント

  1. コンテンツ品質: 検索クエリに対する完全な回答提供
  2. ユーザビリティ: ナビゲーションの使いやすさ向上
  3. SEO最適化: 継続的なキーワード分析と改善
  4. 技術的負債: 定期的なライブラリアップデート

🔗 関連記事


🎯 この記事で解決する検索意図: github pages mkdocs で検索するユーザーが、MkDocsでGitHub Pagesサイトを構築し、完全自動化する方法を段階的に習得できます。実装からデプロイまでワンストップで完結する実践ガイドです。