URLはメソッドか関数か
今回はURLのつくりはメソッドみたいなヤツか関数みたいなヤツかあるけど、メソッドみたいなヤツが好きですっていう話。
URLのつくりを考えるときに毎回悩むんだけど・・・。 URLって、オブジェクトの持つメソッドみたいな設計にするのか、関数みたいな設計にするのか。いや、勝手に名前をつけただけなんで一般的にどういうのかはわかんないけど・・・。
メソッドみたいなヤツは・・・こんかなんじ。 http://hoge.com/username/profile/edit
ユーザusernameのプロフィールを編集しますよ、ってつくり。ユーザはプロフィールを持ってて、プロフィールには編集ってメソッドがありますって感じで非常にオブジェクトチックでわかりやすい。Zopeなんかはこんな感じだと思うし、TurboGearsのCherryPyもこんな感じだと思う。
関数みたいなヤツはたぶんこんなかんじ。 http://hoge.com/profile/edit/username
プロフィールを編集します、ユーザusernameの。っていう状態。何そこ倒置法なの。 RailsみたいなController/Actionのタイプだと、profileがコントローラでeditがアクションで、usernameの部分がeditに渡る引数になる。Rails, Pylons, Zend Frameworkとけっこうたくさんのフレームワークがこんな感じになってるともう。(標準ではね)
で、どっちが僕が好きかっていうと、、、メソッドみたいなやつのほうが好きかなぁ。しかし、世の中のフレームワークはけっこう関数みたいなURLを標準としてる。
前に同僚とこの話をしたことがあって、オブジェクトの持つメソッドとURLがわかりやすく連結されてるZopeとかCherryPyがわかりやすくていいなぁて言ったんだけど、Routesを使ってController/Actionにマッピングしたほうが柔軟かつ明示的でわかりやすいよ、と言われた。このへんになってくると趣味の世界だとおもうけど、マッピングでごちゃごちゃ関連付けされるんじゃなくて、オブジェクトとURLがそのまま対応付けされてるZopeの世界はシンプルできれいだなぁと今でも思う。
さっき倒置法って書いたけど、日本人にとっては同士が最後に来ない関数みたいなURLは倒置法だと思う。けど、英語圏の人にとっては動詞が先に来ているんで違和感がないのかな?
日本人の僕にとっては最後に動詞が来てくれた方がしっくりきておさまりが良く感じる。
で、何がいいたいかというと、僕はURLはメソッドみたいな奴が好きです、っていうただの告白でした。で、メソッドみたいなURLがいいから、TurboGears2.0でも使ってみようかな?っていうことか。
Trackbacks
Use the following link to trackback from your own site:
http://www.jaro68.jp/sett4/blog/trackbacks?article_id=url-design-method-vs-function&day=11&month=02&year=2008