ルーティング
Routing
概要(サマリー)
ルーティングとは、URLごとに、どの画面や処理を呼び出すかを対応づける仕組みのことである。
たとえば /about なら会社概要ページ、/contact ならお問い合わせページを表示する、というように、アクセス先に応じて行き先を振り分ける交通整理の役割を持つ。新しいページや機能を作ったのに画面が開かないときは、ルーティングの設定を追加し忘れていることがよくある。初心者向けには、「URLと画面を結びつける案内板」と考えるとわかりやすい。
詳細解説
ルーティングは「URLと処理の対応表」である
WebサイトやWebアプリでは、ユーザーがURLにアクセスすると、何らかの画面やデータが返される。
しかし、サーバーやアプリはURLを見ただけで自動的に意味を理解しているわけではない。
そこで必要になるのがルーティングである。
ルーティングは、「このURLにアクセスが来たら、この画面を表示する」「このURLなら、この処理を動かす」と決めておく仕組みである。
たとえば、次のような対応がある。
/→ トップページ/about→ 会社概要ページ/contact→ お問い合わせページ/products→ 商品一覧ページ
このように、URLと行き先を結びつけるのがルーティングの基本である。
なぜルーティングが必要なのか
もしルーティング設定やそれに相当する仕組みがなければ、URLにアクセスされても、どの画面や処理を返せばよいか分からない。
つまりルーティングは、Webアプリの中で「アクセスを受けたあと、どこへ案内するか」を決める土台になっている。
特にアプリでは、表示だけでなく処理の振り分けにも使われる。
- 一覧ページを表示する
- 詳細ページを表示する
- フォーム送信を受け取る
- APIのデータを返す
- ログイン処理を動かす
このように、ルーティングは単なるページ遷移ではなく、Web全体の入口整理にも関わっている。
どんなイメージで考えればよいか
初心者向けには、ルーティングを「建物の案内板」や「交通整理」として考えるとわかりやすい。
たとえば大きな施設で、
- 受付はこちら
- 会議室はこちら
- 売店はこちら
と案内板が出ていると迷いにくい。
Webアプリでも同じように、
- このURLならこのページ
- このURLならこの処理
- このURLならこのデータ
という対応関係を決めている。
つまりルーティングは、アクセスしてきた人やデータを正しい場所へ導く道案内の役割をしている。
Controller との関係
サーバーサイドのフレームワークでルーティングを説明するときは、Controller という言葉もよく出てくる。
多くの場合、ルーティングがURLを受け取り、その後にControllerへ処理を渡す流れになっている。
ざっくり言うと、次のような関係である。
- Routing
どのURLをどこへ振り分けるか決める - Controller
実際に何を表示するか、どんな処理をするかを担当する
たとえば、/contact へのアクセスが来たら、ContactController の特定メソッドを動かす、といった形で使われる。
このため、ルーティングは「道を決める係」、Controllerは「その先で実務を行う係」と考えると理解しやすい。
Request と Response の流れの中で見るとわかりやすい
ルーティングは、Request と Response の流れの中で考えると整理しやすい。
- ユーザーがURLへアクセスする
- ブラウザからRequestが送られる
- ルーティングがURLを見て行き先を判断する
- Controllerや処理に渡す
- 結果としてHTMLやJSONなどのResponseを返す
この流れの中で、ルーティングはかなり早い段階で動く。
つまり「アクセスを受け取ったあと、最初に進路を決める役目」と言える。
静的サイトとアプリでの違い
ルーティングは、静的なHTML中心のサイトと、フレームワークを使ったWebアプリで少し見え方が違う。
静的サイトの場合
about.html のように、ファイル構造がそのままURLに近いことが多い。
この場合は、見た目上あまりルーティングを意識しないこともある。
Webアプリの場合
URLと実際のファイル位置が一致しないことがある。
たとえば /products/123 というURLに対して、内部ではControllerが動いてデータベースから情報を取得し、1つのテンプレートで表示していることも多い。
この場合、どのURLでどの処理を動かすかを決めるルーティングが非常に重要になる。
よくある例
たとえば、次のようなルーティングは非常によくある。
/login→ ログイン画面/logout→ ログアウト処理/products→ 商品一覧/products/123→ 商品詳細/api/users→ ユーザー一覧のAPI
このように、ページ表示にもAPIにもルーティングは使われる。
単なる「画面切り替え」だけの話ではないところがポイントである。
新しいページが表示されない原因になりやすい理由
新しいページを作ったのに表示されないとき、ルーティング設定の不足が原因になることは多い。
たとえば次のような状態である。
- テンプレートは作った
- Controllerも作った
- でもURLとつながっていない
この場合、内部に材料はあるのに、入口が用意されていない状態になる。
そのため、アクセスしても404になったり、意図した画面が開かなかったりする。
つまり、ルーティングは「最後の配線」のような役割でもある。
Redirect や Navigation との違い
ここは混同しやすい。
- Routing
URLに来たアクセスを、どの処理や画面へ渡すか決める - Redirect
あるURLから別のURLへ転送する - Navigation
ユーザーが画面内で移動しやすくするためのメニューや導線
ルーティングはアプリ内部の振り分けルールであり、リダイレクトやナビゲーションとは役割が違う。
似た場面で出てくるが、同じ意味ではない。
AI時代にルーティングの理解が重要な理由
AIにWebアプリやサイトを作らせると、画面やコンポーネント自体はかなり速く作れる。
しかし、実際にURLで開けるようにするには、ルーティングの設定が必要になることが多い。
たとえばAIに次のような依頼をすると、ルーティングの話がよく出る。
- 新しいページを追加して
- APIエンドポイントを作って
- 管理画面を追加して
- 詳細ページを作って
このとき、ルーティングの意味が分かっていないと、
- 画面はあるのにURLで開けない
- どこに設定を書くのか分からない
- Controllerやテンプレートとの関係が見えない
- AIの説明が理解しづらい
という状態になりやすい。
逆に、「URLと処理を結びつける設定がルーティング」と分かっているだけで、AIの指示や生成コードがかなり読みやすくなる。
より詳しくAIに聞いてみよう
- ルーティングとは何かを、中学生でもわかるように具体例つきで説明してください。
- ルーティングと Controller と URL の関係を、初心者向けに整理してください。
- 新しいページを作ったのに表示されないとき、ルーティングをどう確認すればよいか教えてください。
- Routing と Redirect と Navigation の違いを、やさしく説明してください。
- AIコーディングでルーティングの理解が重要になる理由を、具体例つきで説明してください。