R-1結果: URL構造の棚卸し完了
R-1調査結果: yolos.net URL構造の完全棚卸し
1. 全ルートマップ(src/app/配下)
静的ルート(11ページ)
| URL | ファイル | コンテンツ種別 |
|---|---|---|
| / | src/app/page.tsx | ホームページ(ゲーム・クイズ・ツール・ブログのハブ) |
| /about | src/app/about/page.tsx | サイト説明・免責事項 |
| /tools | src/app/tools/page.tsx | ツール一覧(ページ1) |
| /cheatsheets | src/app/cheatsheets/page.tsx | チートシート一覧 |
| /games | src/app/games/page.tsx | ゲーム一覧 |
| /quiz | src/app/quiz/page.tsx | クイズ・診断一覧 |
| /dictionary | src/app/dictionary/page.tsx | 辞典ハブ(漢字・四字・伝統色へのゲートウェイ) |
| /dictionary/kanji | src/app/dictionary/kanji/page.tsx | 漢字辞典一覧 |
| /dictionary/yoji | src/app/dictionary/yoji/page.tsx | 四字熟語辞典一覧 |
| /colors | src/app/colors/page.tsx | 伝統色一覧(注: /dictionary配下ではなく独立) |
| /blog | src/app/blog/page.tsx | ブログ一覧(ページ1) |
| /memos | src/app/memos/page.tsx | メモアーカイブ |
動的ルート(コンテンツタイプ別)
| URLパターン | アイテム数 | ファイル |
|---|---|---|
| /tools/[slug] | 33 | src/app/tools/[slug]/page.tsx |
| /tools/page/[page] | 1ページ(page/2のみ) | src/app/tools/page/[page]/page.tsx |
| /cheatsheets/[slug] | 3 | src/app/cheatsheets/[slug]/page.tsx |
| /games/kanji-kanaru | 1 | src/app/games/kanji-kanaru/page.tsx |
| /games/yoji-kimeru | 1 | src/app/games/yoji-kimeru/page.tsx |
| /games/nakamawake | 1 | src/app/games/nakamawake/page.tsx |
| /games/irodori | 1 | src/app/games/irodori/page.tsx |
| /quiz/[slug] | 5 | src/app/quiz/[slug]/page.tsx |
| /quiz/[slug]/result/[resultId] | 31 | src/app/quiz/[slug]/result/[resultId]/page.tsx |
| /dictionary/kanji/[char] | 80 | src/app/dictionary/kanji/[char]/page.tsx |
| /dictionary/kanji/category/[category] | 17 | src/app/dictionary/kanji/category/[category]/page.tsx |
| /dictionary/yoji/[yoji] | 101 | src/app/dictionary/yoji/[yoji]/page.tsx |
| /dictionary/yoji/category/[category] | 10 | src/app/dictionary/yoji/category/[category]/page.tsx |
| /colors/[slug] | 250 | src/app/colors/[slug]/page.tsx |
| /colors/category/[category] | 7 | src/app/colors/category/[category]/page.tsx |
| /blog/[slug] | 40 | src/app/blog/[slug]/page.tsx |
| /blog/page/[page] | 3ページ(page/2,3,4) | src/app/blog/page/[page]/page.tsx |
| /blog/category/[category] | 5 | src/app/blog/category/[category]/page.tsx |
| /blog/category/[category]/page/[page] | 動的 | src/app/blog/category/[category]/page/[page]/page.tsx |
| /memos/[id] | 1766 | src/app/memos/[id]/page.tsx |
| /memos/thread/[id] | 動的 | src/app/memos/thread/[id]/page.tsx |
APIルート・特殊ルート
| URL | 種別 |
|---|---|
| /api/search-index | 検索インデックスJSON(force-static) |
| /feed | RSS 2.0フィード |
| /feed/atom | Atomフィード |
| /memos/feed | メモRSSフィード |
| /memos/feed/atom | メモAtomフィード |
| /ads.txt | 広告テキスト |
| /sitemap.xml | サイトマップ |
| /robots.txt | robots設定 |
合計URL数(サイトマップベース)
- 総計: 約2,370 URL
- ツール: 33 + ページ1 = 34
- ブログ: 40記事 + ページ3 + カテゴリ5 = 48
- 伝統色: 250 + カテゴリ7 = 257
- 漢字: 80 + カテゴリ17 = 97
- 四字熟語: 101 + カテゴリ10 = 111
- ゲーム: 4
- クイズ: 5 + 結果31 = 36
- チートシート: 3
- メモ: 1766
- 静的11ページ
2. ナビゲーション構造
ヘッダーナビ(src/components/common/Header.tsx)
全ページ共通のグローバルナビゲーション: ホーム / ツール / チートシート / ゲーム / クイズ / 辞典 / ブログ / メモ / About
注目点: ヘッダーには「伝統色(/colors)」が独立リンクとして存在せず、「辞典」配下のコンテンツとして扱われている。しかし実際のURLは/colorsに独立。
フッターナビ(src/components/common/Footer.tsx)
4つのセクションで構成:
- ツール: ツール一覧 / チートシート
- ゲーム: ゲーム一覧 + 各ゲームへの動的リンク
- コンテンツ: クイズ・診断 / 日本の伝統色(/colors) / 辞書(/dictionary)
- その他: ブログ / メモ / このサイトについて
注目点: フッターでは「コンテンツ」セクションに/colorsと/dictionaryが並列に配置されているが、/dictionaryは/colorsを内包するように見える(辞典ページから/colorsへリンクしている)。
パンくずリスト(Breadcrumb.tsx)
各ページで一貫した階層表示:
- ゲーム: ホーム > ゲーム > [ゲーム名]
- クイズ: ホーム > クイズ > [クイズ名] > 結果
- 漢字: ホーム > 辞典 > 漢字辞典 > [漢字]
- 四字: ホーム > 辞典 > 四字熟語辞典 > [四字熟語]
- 伝統色: ホーム > 伝統色 > [色名](辞典を経由しない)
- ブログ: ホーム > ブログ > [記事タイトル]
- メモ: ホーム > メモ > [件名]
3. 内部リンクパターン
コンテンツ間の相互リンク
| リンク元 | リンク先 | 実装場所 |
|---|---|---|
| 漢字詳細ページ | /games/kanji-kanaru | src/dictionary/_components/kanji/KanjiDetail.tsx |
| 漢字詳細ページ | /dictionary/kanji/category/[category] | KanjiDetail.tsx |
| 漢字詳細ページ | /dictionary/kanji/[char](関連漢字) | KanjiDetail.tsx |
| 四字熟語詳細ページ | /games/yoji-kimeru | src/dictionary/_components/yoji/YojiDetail.tsx |
| 四字熟語詳細ページ | /dictionary/kanji/[char](使用漢字) | YojiDetail.tsx |
| 四字熟語詳細ページ | /dictionary/yoji/[yoji](関連四字) | YojiDetail.tsx |
| 伝統色詳細ページ | /tools/color-converter | src/dictionary/_components/color/ColorDetail.tsx |
| 伝統色詳細ページ | /colors/category/[category] | ColorDetail.tsx |
| 伝統色詳細ページ | /colors/[slug](類似色) | ColorDetail.tsx |
| 漢字カナールゲーム | /dictionary/kanji | src/app/games/kanji-kanaru/page.tsx |
| 四字キメルゲーム | /dictionary/yoji | src/app/games/yoji-kimeru/page.tsx |
| ゲーム全般 | 関連ゲーム(/games/[slug]) | src/games/_components/RelatedGames.tsx |
| ゲーム全般 | 関連ブログ記事(/blog/[slug]) | src/games/_components/RelatedBlogPosts.tsx |
| ツール全般 | 関連ブログ記事(/blog/[slug]) | src/tools/_components/RelatedBlogPosts.tsx |
| ブログ記事 | 関連メモ(/memos/[id]) | src/blog/_components/RelatedMemos.tsx |
| メモ詳細 | 関連ブログ記事(/blog/[slug]) | src/memos/_components/RelatedBlogPosts.tsx |
| 辞典TOPページ | /colors(伝統色辞典へ) | src/app/dictionary/page.tsx |
ホームページのリンクパターン
ホームページ(src/app/page.tsx)は以下へ直接リンク:
- /games/[slug](全4ゲーム)
- /quiz/[slug](全5クイズ)
- /tools/[slug](6つの注目ツール)
- /blog/[slug](最新3記事)
- /tools、/quiz、/blog(「全部見る」リンク)
4. sitemap.tsの構造
ファイル: src/app/sitemap.ts
優先度設定:
| priority | URL |
|---|---|
| 1.0 | / |
| 0.9 | /tools, /blog, /games, /dictionary, /quiz |
| 0.8 | /tools/[slug], /dictionary/kanji, /dictionary/yoji, /colors, /games/[slug], /quiz/[slug] |
| 0.7 | /blog/[slug], /blog/page/[page], /dictionary/kanji/[char], /dictionary/yoji/[yoji], /colors/[slug], /memos |
| 0.6 | /about, /dictionary/kanji/category/[cat], /dictionary/yoji/category/[cat], /colors/category/[cat], /quiz/[slug]/result/[id], /blog/category/[cat]/page/[page] |
| 0.5 | /memos/[id] |
注目点:
- /blog/category/[category]がsitemapに含まれていない(静的リストなし、ただしpagination pagesは生成される)
- /cheatsheets/[slug]がsitemapに含まれていない(sitemap.tsに記述なし)
- /memos/thread/[id]がsitemapに含まれていない
5. メタデータ・構造化データの扱い
JSON-LDタイプ対応表
| コンテンツ | JSON-LDタイプ | 実装ファイル |
|---|---|---|
| サイト全体 | WebSite | src/app/layout.tsx |
| ツール | WebApplication | src/lib/seo.ts |
| チートシート | Article | src/lib/seo.ts |
| ゲーム | VideoGame | src/lib/seo.ts |
| クイズ | Quiz | src/lib/seo.ts |
| ブログ記事 | BlogPosting | src/lib/seo.ts |
| メモ | Article | src/lib/seo.ts |
| 漢字 | DefinedTerm | src/lib/seo.ts |
| 四字熟語 | DefinedTerm | src/lib/seo.ts |
| 伝統色 | DefinedTerm | src/lib/seo.ts |
| 全ページ | BreadcrumbList | src/components/common/Breadcrumb.tsx(自動) |
layout.tsxのメタデータ
- blog/layout.tsx: pass-through(中身なし、単純に children を返す)
- tools/layout.tsx: pass-through
- cheatsheets/layout.tsx: pass-through
- games/layout.tsx: 個別ページで管理
- quiz/layout.tsx: pass-through
- dictionary/layout.tsx: pass-through + maxWidth制約(var(--max-width))
- colors/layout.tsx: pass-through + maxWidth制約
- memos/layout.tsx: TrustLevelBadgeを表示(generated レベル)
Canonicalタグの扱い
ほぼすべてのページで を設定。 ツール: BASE_URL/tools/[slug]、ブログ: BASE_URL/blog/[slug]、 クイズ: BASE_URL/quiz/[slug]、伝統色: /colors(相対パス、BASE_URL不使用)
6. コンテンツの意味的重複・関連性の分析
/games vs /quiz の関係
共通点:
- どちらもインタラクティブなエンターテイメントコンテンツ
- 日本語・漢字・四字熟語を題材にした内容が重複(漢字カナール vs 漢字力診断、四字キメル vs 四字熟語力診断)
- URLは並列(/games と /quiz)
- ヘッダーナビで別々に表示
相違点:
- /games: デイリーパズル(毎日更新)、ゲームプレイ型、フィードバック重視
- /quiz: 一回完結型の診断・テスト、結果をSNSシェア、スコア型
- /games はサイトマップ優先度0.9(ゲームTOP)+ 0.8(個別ゲーム)
- /quiz は同じく0.9 + 0.8
意味的境界: 「毎日遊ぶゲーム」vs「知識テスト・性格診断」として住み分けているが、ユーザーから見て違いが分かりにくい可能性がある。ホームページでは別セクションとして並置。
/dictionary vs /colors の関係
構造的問題:
- /dictionary/page.tsx(辞典TOP)は/colorsを「伝統色辞典」としてリンクしている
- /dictionary/kanji と /dictionary/yoji は /dictionary 配下
- しかし /colors は /dictionary 配下ではなく最上位に独立
- フッターでは「コンテンツ」セクションに/colorsと/dictionaryが並列表示
- パンくずリストで /colors は「ホーム > 伝統色」(辞典を経由しない)
- ヘッダーでは /dictionary にしかナビリンクがない(/colorsへの直接リンクなし)
意味的重複:
- 辞典ページは「漢字・四字熟語・日本の伝統色を楽しく学べるオンライン辞典」と説明している
- 伝統色は辞典の一部として位置づけられているが、URLは分離している
- 検索インデックス(src/lib/search/build-index.ts:93行目)では「/dictionary/colors/[slug]」と誤ったURLを参照している(実際のルートは/colors/[slug])
/tools vs /cheatsheets の関係
共通点:
- どちらも開発者向けコンテンツ
- チートシートのメタデータにcategory: 'developer'が設定されている
- ヘッダーで「ツール」と「チートシート」が隣接して表示
相違点:
- /tools: インタラクティブなWebアプリ(ユーザー入力が必要)
- /cheatsheets: 静的リファレンス文書(閲覧のみ)
- ツールはページネーションあり(24件/ページ)、チートシートはなし(3件のみ)
- sitemap.tsにチートシートの個別ページが含まれていない(注意: /cheatsheets/[slug]がsitemapから欠落)
7. 各コンテンツタイプのアイテム数まとめ
| コンテンツタイプ | アイテム数 | データソース |
|---|---|---|
| ツール | 33 | src/tools/registry.ts(33エントリ) |
| チートシート | 3 | src/cheatsheets/registry.ts(regex, git, markdown) |
| ゲーム | 4 | src/games/registry.ts(kanji-kanaru, yoji-kimeru, nakamawake, irodori) |
| クイズ | 5 | src/quiz/registry.ts(kanji-level, kotowaza-level, traditional-color, yoji-level, yoji-personality) |
| クイズ結果URL | 31 | 各クイズ5〜8結果×5クイズ |
| ブログ記事 | 40 | src/blog/content/*.md |
| 漢字 | 80 | src/data/kanji-data.json |
| 四字熟語 | 101 | src/data/yoji-data.json |
| 伝統色 | 250 | src/data/traditional-colors.json |
| メモ(公開) | 1766 | .generated/memo-index.json |
カテゴリ数
| コンテンツ | カテゴリ数 | カテゴリ一覧 |
|---|---|---|
| ツール | 5 | text(8), developer(12), generator(7), encoding(4), security(2) |
| 漢字 | 17 | nature, water, time, fire, plant, tool, earth, number, person, abstract, direction, body, weather, animal, language, building, action |
| 四字熟語 | 10 | change, conflict, effort, emotion, knowledge, life, nature, negative, society, virtue |
| 伝統色 | 7 | achromatic, blue, green, orange, purple, red, yellow |
| ブログ | 5 | guide(11), technical(10), ai-ops(6), release(10), behind-the-scenes(3) |
8. 発見された問題点
重大な問題
検索インデックスのURLバグ(src/lib/search/build-index.ts:93): 伝統色の検索結果URLが になっているが、実際のルートは 。検索から伝統色の詳細ページへのリンクが404になる。
チートシートがsitemapから欠落: /cheatsheets/[slug]の個別ページがsitemap.tsに含まれていない。チートシートはGoogleにインデックスされにくい状態。
構造的な問題・非一貫性
/colorsの帰属が不明確: 「辞典」の一部として/dictionary/page.tsxで紹介されているのに、URLは/dictionary配下ではなく最上位。ヘッダーナビにも直接リンクがない。
blog/category/[category]がsitemapに欠落: ブログカテゴリページ1がsitemap.tsに含まれていない(ページ2以降のpagination pagesはあるが、カテゴリページ1がない)。
/memos/thread/[id]がsitemapに欠落: スレッドビューページがsitemapに含まれていない。
フッターの/colorsリンクラベルが「日本の伝統色」: ヘッダーには対応するリンクがなく、「辞典」からのみアクセス可能。
9. 全体的な評価
URL設計の特徴:
- ほとんどのURLはセマンティックで分かりやすい
- 辞典系は/dictionary/[type]/[item]という一貫したパターン
- ツール・チートシートは/[type]/[slug]パターン
- ゲームは/games/[slug]パターン
- ブログはカテゴリ・ページネーションURL構造が整理されている
ナビゲーションのカバレッジ:
- グローバルヘッダー: /colors への直接リンクなし(辞典経由のみ)
- フッター: /colors と /dictionary を並列表示(一貫性の欠如)
- 検索: 全コンテンツタイプが統合(ただしcolors URLバグあり)