2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

旅行・観光サイトで学ぶ!URL設計入門

2
Last updated at Posted at 2025-12-16

少年_カエル_ツアー01.png

プロジェクト始動!

ある日、あなたは新しいWebプロジェクトの開発担当に任命されました。
テーマは「旅行・観光情報サイト」。世界中の観光地を紹介し、ユーザーが旅の計画を立てられるようにするのが目的です。

設計に取りかかろうとしたあなたは、ふと立ち止まります。

「このサイト、どのようなURL構成にすればいいんだろう?」

学ぶこと:階層構造とフラット構造

今回は、階層構造とフラット構造を学びましょう。

  • 階層構造:文脈が明確、整理しやすい。ただし、URLが長くなりやすい。
  • フラット構造:短くてシンプル。文脈が失われ、衝突しやすい。

概要は以上!このあともう少し説明します!

国→都市→観光地:階層構造で考える

まずは基本の構造を整理しましょう。
旅行サイトでは、地理的な階層が自然に存在します。

<モデル構造>

  • 国(country)
  • 都市(city)
  • 観光地(spot)

図a_階層構造.png

この関係をURLで表すと、以下のようになります。

/countries/japan/cities/kyoto/spots/fushimi-inari-taisha

※japan、kyoto、fushimi-inari-taishaの部分は可変です。

なぜこの順番?

  • 地理的な包含関係(国→都市→観光地)
  • ユーザーの探索順序と一致
  • URLを見ただけで「どこにある何なのか」がわかる
  • ログ解析やアクセス制御にも便利

観光地の画面を設計する

京都市にある観光地の一覧を表示する画面がほしい。
伏見稲荷大社の紹介ページもほしい。
管理者が観光地情報を編集する機能も必要だ。

以下にしました。

<一覧画面(都市内の観光地)>
/countries/japan/cities/kyoto/spots

<詳細画面(選択された観光地の紹介)>
/countries/japan/cities/kyoto/spots/fushimi-inari-taisha

<編集画面(管理者用)>
/countries/japan/cities/kyoto/spots/fushimi-inari-taisha/edit

企画部門から新たな要望が!「ツアー機能を追加したい!」

数週間後、企画部門から新たな要望が届きました。

「複数の観光地をまとめて紹介する“ツアー”機能を追加したい!」

ツアーのURL:フラット構造で考える

ツアーは、京都・奈良・大阪の名所をまとめたような「横断的な構造」です。
階層構造に組み込むと複雑になるため、フラット構造で検討します。

図b_フラット構造.png

ゴールデンルート(東京→京都→大阪)のツアー紹介ページ!

/tours/golden-route

関連ページのリンクも考える

ツアーに含まれる観光地のページやレビューページも必要そうだ。

<関連リンク>
/tours/golden-route/spots/tokyo-tower
/tours/golden-route/spots/kinkakuji
/tours/golden-route/spots/osaka-castle

<レビューページ>
/tours/golden-route/reviews

補足

どうやら無事、設計が進んでいるようですね。
補足事項を記載します。

・スラッグとIDの使い分け
スラッグとは、URLの一部として使われる「人間が読める識別子」のことです。
通常は英数字で構成され、スペースや記号を含まず、リソースの名前やタイトルを簡潔に表します。

リソース スラッグ例 ID例 選び方
japan JP スラッグで十分
都市 kyoto city-123 スラッグでSEO・可読性向上
観光地 fushimi-inari-taisha spot-456 スラッグ推奨、ただし重複注意
ツアー golden-route tour-001 スラッグでブランディング効果あり

・拡張性を考える
将来的にレビュー機能やタグ機能を追加するなら、リソース単位で拡張できる設計が理想です。

/spots/fushimi-inari-taisha/reviews
/tours/golden-route/tags/spring

まとめ

  • 階層構造は「文脈」を伝える
  • ツアーのような横断的リソースはフラット構造が適している

おや?次はフロントエンドとAPIに分割して、より利用者に訴求する画面や構成を検討しているようです。
それはまた今度、一緒に考えましょう!

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?