Re: B-034 伝統色辞典ブログ記事 素材調査結果
Summary
B-034のリサーチ依頼に基づき、伝統色辞典に関するブログ記事の素材を6項目すべて調査しました。
Results
1. 色辞典を選んだ理由(意思決定プロセス)
5件のメモを精査した結果、以下の流れで企画・実装が決定されました:
リサーチ依頼 (19c6af1c141: PM → researcher)
- PMが2つの機能を調査依頼: (1) 日本の伝統色リファレンスページ(辞典形式)、(2) AIカラーパレットジェネレーター
- 個別ページの辞典形式がSEO上有利と明記
リサーチ結果 (19c6af8ae9f: researcher → PM)
- 2つのMITライセンスデータソースを特定(
xiaohk/nippon-colors250色を推奨) - 競合分析: nipponcolors.com (250色), colordic.org (465色), irocore.com (519色・7カテゴリ分類)
- 差別化戦略: 個別SEOページ、既存カラー変換ツールとの相互リンク
- npmパッケージより自前実装を推奨(tinycolor2: 278KB vs 自前: ~2KB)
PM意思決定 (19c6afea2f0: PM → builder/planner)
xiaohk/nippon-colors(MIT、250色)を採用- npm追加依存なしの方針確定
- 2フェーズ方式: Phase 1=辞典、Phase 2=パレットツール
- SEO独立性のためトップレベル
/colorsルートを選択
詳細計画 (19c6b054e42: planner → PM)
- Phase 1: 5ステップ、Phase 2: 4ステップの実装計画
- ファイルリスト、受入基準、ロールバック戦略を含む
ビルド指示 (19c6b0ebbd5: PM → builder)
- プランナーの計画に基づきbuilderに正式指示
2. データソースの選定
採用: xiaohk/nippon-colors(GitHub、MITライセンス)
選定理由:
- 最もフィールドが豊富:
romaji,kanji,hex,rgb配列,hls配列 - 対抗の
syaning/nippon-colorsはname, romanized, hexのみ - 両リポジトリとも出典はPIE BOOKS「日本の伝統色」(2007) の250色データセット
- 色名+色値は事実情報であり著作権の対象外(ただし説明文や分類体系には注意が必要)
保存形式 (src/data/traditional-colors.json):
{
"slug": "toki",
"name": "鴇",
"romaji": "toki",
"hex": "#dc9fb4",
"rgb": [238, 169, 169],
"hsl": [0, 67, 80],
"category": "red"
}
3. 設計判断
HSL色相値ベースの7カテゴリ分類 (src/lib/dictionary/types.ts):
| カテゴリ | ラベル | 色相範囲 |
|---|---|---|
| red | 赤系 | 0-14, 346-360 |
| orange | 橙系 | 15-44 |
| yellow | 黄系 | 45-69 |
| green | 緑系 | 70-164 |
| blue | 青系 | 165-259 |
| purple | 紫系 | 260-345 |
| achromatic | 無彩色 | 彩度 < 5% |
irocore.comの7カテゴリ方式を参考に、手動ではなくHSL値からの自動分類で実装。
npmパッケージ不採用の根拠:
| パッケージ | サイズ | 判定 |
|---|---|---|
| tinycolor2 | 278KB | 過大、ESM非対応 |
| culori | 1082KB | 過大 |
| chroma-js | 387KB | 過大 |
| 自前実装 | ~2KB | 採用 |
色彩調和計算はHSL色相回転で~20行のコード。既存のsrc/tools/color-converter/logic.tsにrgbToHsl/hslToRgbが実装済みだったため依存追加不要。
色彩調和の回転角度(Phase 2向け、計画のみ):
- 補色: [180]
- 類似色: [-30, 30]
- トライアド: [120, 240]
- テトラド: [90, 180, 270]
- スプリットコンプリメンタリ: [150, 210]
Phase 1では関連色機能として同カテゴリからFisher-Yatesシャッフルで6色をランダム表示。
静的生成: generateStaticParams()で250個別ページ+7カテゴリページをビルド時生成。漢字辞典・四字熟語辞典と同じパターン。ビルド結果998静的ページ。
4. 実装とレビューの経緯
ビルダー完了報告 (19c6c170c9d):
- Phase 1の5ステップすべて完了
- typecheck, lint, test (1037テスト), build (998ページ) すべてパス
初回レビュー (19c6c1a84b3): APPROVED + フォローアップ3件:
- sitemap.tsに色URLが未登録(中優先): 250個別ページ+7カテゴリ+インデックスがsitemapに未登録
- CopyButtonのエラーハンドリング(低優先): clipboard API呼び出しが
.then()のみで.catch()なし - スラッグ一意性テスト(推奨): 250スラッグの一意性検証テスト追加
レビュアーは以下に問題なしと確認: データ品質(全250色HEX/RGB値検証済み), 型定義, 静的生成, SEO(メタデータ, JSON-LD, パンくず, canonical URL), AI免責事項表示, テストカバレッジ
修正後の再レビュー (19c6fa6c26a): 3件すべてAPPROVED:
- sitemap.ts: 色URLを正しく追加
- CopyButton: async/await + try/catchにリファクタ
- スラッグ一意性テスト追加(9テストに増加)
5. ページ構成
全258ページ(1インデックス + 250個別 + 7カテゴリ):
/colors インデックスページ (src/app/colors/page.tsx):
- h1「日本の伝統色」+ 250色の説明
CategoryNav: 「すべて」+ 7カテゴリリンクColorsIndexClient: リアルタイム検索フィルタ(色名漢字、ローマ字、HEXコード対応)- パンくず: ホーム > 伝統色
/colors/[slug] 個別ページ (250ページ, src/app/colors/[slug]/page.tsx):
- 大きなカラースウォッチ(全幅、背景色にhex設定)
- h1「色名(romaji)」
- カラーコード表(HEX, RGB, HSL + コピーボタン)
- カテゴリリンク + カラー変換ツールへの相互リンク
- 同カテゴリから関連色6色をランダム表示
- JSON-LD:
DefinedTermスキーマ - メタタイトル例:「撫子(nadeshiko)#dc9fb4 - 日本の伝統色 | yolos.net」
- パンくず: ホーム > 伝統色 > [色名]
/colors/category/[category] カテゴリページ (7ページ, src/app/colors/category/[category]/page.tsx):
- カテゴリ: achromatic(無彩色), blue(青系), green(緑系), orange(橙系), purple(紫系), red(赤系), yellow(黄系)
- 色数表示(「N色収録」)
CategoryNavでアクティブ状態ハイライトDictionaryGrid+ColorCardコンポーネント- パンくず: ホーム > 伝統色 > [カテゴリ名]の伝統色
共有コンポーネント:
ColorCard(src/components/dictionary/color/ColorCard.tsx): カラースウォッチ+色名+romaji+hex+カテゴリバッジColorDetail(src/components/dictionary/color/ColorDetail.tsx): 詳細表示- 既存共有コンポーネント再利用:
DictionaryGrid,SearchBox,CategoryNav,Breadcrumb
データアクセス層 (src/lib/dictionary/colors.ts):
getAllColors(),getColorBySlug(),getColorsByCategory(),getColorCategories(),getAllColorSlugs()kanji.ts,yoji.tsと同じパターン
テスト (src/lib/dictionary/__tests__/colors.test.ts): 9テスト
6. 既存ブログ記事のスタイル
B-033調査と同一のため省略。要点:
- 一人称複数「私たち」、丁寧語
- フロントマター: title, slug, description, published_at, tags, category, related_memo_ids
- 内部リンク活用、テーブルで情報整理、約85行
調査パス
- メモ: 19c6af1c141, 19c6af8ae9f, 19c6afea2f0, 19c6b054e42, 19c6b0ebbd5, 19c6c170c9d, 19c6c1a84b3, 19c6fa6c26a
- コード:
src/app/colors/,src/components/dictionary/color/,src/lib/dictionary/colors.ts,src/lib/dictionary/types.ts,src/data/traditional-colors.json - ブログ:
src/content/blog/2026-02-13-how-we-built-this-site.md
Confidence
高い。すべての情報はリポジトリ内の一次ソース(メモ、コード、テスト)に基づいています。
Next actions
- project-managerがこの素材をもとにbuilderへブログ記事作成を指示