Skip to main content

MDX Error Prevention Guide

概要

このドキュメントは、Docusaurus WIKIでMDXコンパイルエラーを防ぐための包括的なガイドです。日本語技術文書、パフォーマンス仕様、優先度表記などでよく発生するエラーパターンと対策を網羅します。

🚨 よく発生するMDXエラーパターン

1. 文字制限エラー(最も頻繁)

エラーメッセージ例

Unexpected character `1` (U+0031) before name, expected a character that can start a name, such as a letter, `, or `_`

原因:MDXでは < の後に数字が来ると、JSXタグの開始と誤認識される

問題のあるパターン

❌ NG: - UID埋め込み処理: <10ms/写真
❌ NG: - 応答時間: <50ms以下
❌ NG: - 成功率: <99.9%達成
❌ NG: - パフォーマンス: <10ms/リクエスト

正しい書き方

✅ OK: - UID埋め込み処理: 10ms未満/写真
✅ OK: - 応答時間: 50ms以下
✅ OK: - 成功率: 99.9%未満を達成
✅ OK: - パフォーマンス: 10ms未満/リクエスト
✅ OK: - UID埋め込み処理: `<10ms`/写真(バッククォートで囲む)

2. 優先度表記エラー

問題のあるパターン

❌ NG: 1. **P0**: <重要機能> (数字の後の<が問題)
NG: - **P1**: <機能名>実装

正しい書き方

✅ OK: 1. **P0**: 重要機能
✅ OK: 1. **P0**: `<重要機能>`(バッククォートで囲む)
✅ OK: - **P1**: 機能名実装

3. HTMLタグの誤認識

問題のあるパターン

❌ NG: コスト: <$0.03以下
❌ NG: 処理時間: <100ms
❌ NG: データ: <1GB

正しい書き方

✅ OK: コスト: 0.03ドル未満
✅ OK: 処理時間: 100ms未満
✅ OK: データ: 1GB未満
✅ OK: コスト: `<$0.03`以下(バッククォート使用)

🛡️ 文字制限とMDX安全ルール

危険な文字組み合わせ

  1. <数字: 最も危険。JSXタグと誤認識
  2. <英字: HTMLタグと誤認識される可能性
  3. {数字 または {英字: JSX式と誤認識
  4. </: 終了タグと誤認識

安全な表記方法

パフォーマンス仕様の書き方

✅ 推奨方法:
- 応答時間: 10ms以内
- 処理速度: 50ms以下
- 成功率: 99.9%以上
- メモリ使用量: 1GB未満

✅ バッククォート使用:
- 応答時間: `<10ms`
- 処理速度: `<50ms`
- 成功率: `>99.9%`
- メモリ使用量: `<1GB`

優先度とコストの書き方

✅ 推奨方法:
1. **P0優先**: Order ID統一(1週間)
2. **P1対応**: ハッシュ検証(3日)
- 月額コスト: 0.03ドル以下
- 実装期間: 1週間以内

✅ コードブロック使用:
1. **P0**: `<重要機能>`実装
- コスト: `<$0.03`/月

⚡ 即効性のある修正方法

一括置換パターン

プロジェクト全体で以下の置換を実行:

# 危険パターンの一括修正
find wiki/docs -name "*.md" -exec sed -i '' 's/<\([0-9]\)/\1未満/g' {} \;
find wiki/docs -name "*.md" -exec sed -i '' 's/<\$\([0-9.]*\)/\1ドル未満/g' {} \;
find wiki/docs -name "*.md" -exec sed -i '' 's/<\([0-9.]*\)ms/\1ms未満/g' {} \;

手動修正チェックリスト

ファイル編集時に以下をチェック:

  • < + 数字 の組み合わせがないか
  • < + アルファベット が意図しないHTMLタグになっていないか
  • パフォーマンス仕様で < を使用していないか
  • 優先度表記で < が混入していないか

🔍 テスト戦略

ローカルテスト

# MDXエラーをローカルで事前検出
cd wiki
npm start

# ビルドテストでエラー検出
npm run build

CI/CDでの自動検出

# ビルド前の事前チェック
npm run build --silent
if [ $? -ne 0 ]; then
echo "MDXエラーを検出しました"
exit 1
fi

問題行の特定方法

エラーメッセージから問題箇所を特定:

Line: 364, Column: 15
# 特定行の確認
sed -n '364p' problematic-file.md
# 前後5行の確認
sed -n '359,369p' problematic-file.md

📋 安全な書式設定ルール

技術仕様の記述

✅ 安全な書式:

## パフォーマンス目標
- UID埋め込み処理: 10ms以内/写真
- 三点照合: 50ms以内/注文
- 全写真検証: 500ms以内/注文(10枚想定)
- 月額コスト増: 0.03ドル以下

## 実装優先順位
1. **P0優先**: Order ID統一 + D1ステータス管理(1週間)
2. **P0優先**: Firebase UID埋め込み + 三点チェック(1週間)
3. **P1対応**: SHA-256ハッシュ記録・検証(3日)
4. **P1対応**: 工場での全写真UID照合(1週間)

数値とパーセンテージ

✅ 安全な数値表記:
- 成功率: 99.9%以上
- エラー率: 0.1%以下
- 可用性: 99.99%
- レスポンス時間: 100ms以内
- スループット: 1000req/sec以上

コードブロックの使用

技術的な表記が複雑な場合はコードブロックを活用:

```
パフォーマンス仕様:
- 処理時間: <10ms
- メモリ使用量: <1GB
- CPU使用率: <50%
```

🚨 緊急時の対応

エラー発生時の対応手順

  1. エラー行の特定

    # エラーメッセージから行番号を確認
    sed -n '[行番号]p' [ファイル名]
  2. 問題文字の特定

    # < + 数字 パターンを検索
    grep -n '<[0-9]' [ファイル名]
  3. 即座修正

    # 緊急時の一時修正(バッククォート追加)
    sed -i '' 's/<\([0-9]\)/`<\1`/g' [ファイル名]
  4. ビルド確認

    cd wiki && npm run build

よくある緊急修正パターン

# パターン1: パフォーマンス仕様
sed -i '' 's/<\([0-9.]*\)ms/\1ms未満/g' file.md

# パターン2: コスト表記
sed -i '' 's/<\$\([0-9.]*\)/\1ドル未満/g' file.md

# パターン3: パーセンテージ
sed -i '' 's/<\([0-9.]*\)%/\1%未満/g' file.md

📊 品質保証チェックリスト

編集前チェック

  • 既存ファイルのMDX構文エラーがないか確認
  • ローカルでnpm startでプレビュー確認

編集中チェック

  • <記号を使用する際はバッククォートで囲む
  • 数値 + 単位の表記で<を避ける
  • HTMLタグと誤認識される表記を避ける

編集後チェック

  • npm run buildでエラーがないか確認
  • デプロイ前にローカルプレビューで確認
  • 本番デプロイ後の動作確認

🔧 自動化ツール

pre-commit hook設定

#!/bin/sh
# .git/hooks/pre-commit
find wiki/docs -name "*.md" -exec grep -l '<[0-9]' {} \; > /tmp/mdx_errors
if [ -s /tmp/mdx_errors ]; then
echo "MDXエラーの可能性があるファイル:"
cat /tmp/mdx_errors
echo "修正してからコミットしてください"
exit 1
fi

VS Code設定

// .vscode/settings.json
{
"editor.rulers": [80],
"editor.renderWhitespace": "all",
"files.trimTrailingWhitespace": true,
"markdown.validate.enabled": true
}

🎯 ベストプラクティス

1. 予防的記述

  • 数値比較では「以内」「以下」「未満」を使用
  • < > 記号は原則としてコードブロック内でのみ使用

2. 一貫した表記

  • プロジェクト全体で統一した数値表記ルールを採用
  • スタイルガイドに従った記述を心がける

3. 段階的確認

  • ローカル確認 → ビルドテスト → デプロイ
  • 各段階でエラーチェックを実施

4. チーム共有

  • このガイドをチーム全体で共有
  • エラーパターンを発見したら随時更新

最終更新: 2025-08-23
対象: Docusaurus v3.x + MDX
言語: 日本語技術文書対応