ビューティフルWebコード

美しいWebサイトのコーディングについて説明をしていきます。

URL設計 画面のURLの命名規則を決めよう Controller名は名詞!で、単数形?複数形?

MVCフレームワークを使ったURL設計についてです。

Controller名は主語!

Controllerが主語、Actionが動詞であればそのURLは
/Controller名 / Action名 は S(主語)V(動詞)の関係になります。

オブジェクト指向プログラミングでいうところのクラス名、メソッド名も主語、動詞の関係ですよね。

実際に、MVCフレームワークではController名はクラス名、Action名はメソッド名になるので、やはり主語、動詞の関係であるべきです。

Action名については別記事で考察します。

Controller名は主語なんだから名詞!

はい、名詞を使ってください。

  • /beatiful(形容詞)/web
  • /directly(副詞)/access
  • /go(動詞)/home

おかしいですよね。

Controller名は単数形なの?複数形なの?

名詞の集合は単数形か複数形か、DB設計でも議論になります。
同じように、URL設計でもよく議論になります。

今の流行に乗るならば複数形がいいと思います。

理由としては下の二つのURLを考えてみてください。

  • /users
  • /users/1234 (/users?id=1234)

/usersの方はaction名ユーザ一覧を表すとします。
/users/1234はユーザ一覧にて、ユーザIDが指定されたと考えることができます。

DBのテーブルに置き換えてみてください。
usersはテーブルです。つまり集合です。

  • /users は select * from users; を表します。
  • /users/1234 (/users?id=1234) は select * from users where id=1234 を表します。

※DBのテーブルの複数形についてはORMとの相性などもあり、単数形が好まれることもあります。

結局、単数形、複数形どっちなの

Webサイトとしての要件を満たせるのか満たせないのか、という観点でいうと、どっちでもいいです。

DBのテーブル名のルールと統一すると分かりやすくなるでしょう。DBが複数形ならURLも複数形!

命名規則なんて宗教論争です。
宗教論争は無駄です。(絶対に結論が出ない)
無駄な宗教論争を回避するためにルールを決めるのです!

開発あるある(勝手にルールを変える)

立ち上げの初代エンジニアは単数形で設計しました。規約にも単数形にしてます。と明記していました。
それを引き継いだ2代目エンジニアが、
「なんで単数形なの?普通複数形だろ。。。。」
とぼやき始めます。単数形の規約を削除しました。
複数形2代目が追加したURLはすべて複数形になってしまいました。
それを引き継いだ3代目エンジニア
「なんで統一されてないんじゃーーー!!!」

                                                          • -

ルールを決めたら守りましょう。