岩本隆史の日記帳(アーカイブ)

はてなダイアリーのサービス終了をうけて移行したものです。更新はしません。

『WEB+DB PRESS vol.44』を読んだ

WEB+DB PRESS Vol.44

WEB+DB PRESS Vol.44

定期購読している『WEB+DB PRESS』の最新号が届いたので読んだ。おもしろかった部分をいくつか。

PHPのarray関数はウザい?

3ページの脚注より。

「たいていの言語は配列を [1, 2] などと記述できるのに対し、PHPは array(1, 2) とわざわざ "array" を書かなければいけない」

私は「わざわざ」なんて思ったことがなかったので、新鮮に感じた。「わざわざ」と思っている人が多ければ、id:rskyさんのパッチもすんなり受け入れられそうなものだが、そんな単純な話でもないのかな。

MVCそれぞれの役割

86ページより。

Viewの変更は画面の変更ですので、Webデザイナが行えるのがベストです。Controllerの変更は業務処理の変更ですので、業務処理を理解している人がアプリケーションの制御を変更します。Modelはシステムで取り扱うデータ属性の変更・追加ですので、データベース構造を理解している人が行うのがベストです。

そして174ページより。

  • Modelはアプリケーションの処理の中心。ドメインロジックを実装するところ。
  • Controllerは仲介者
  • Viewは見た目

両者の説明がずれている。私は後者、id:naoyaさんの説明のほうがしっくりくる。

さらに176ページより。

Modelを、さらに三層に分ける考え方もあります。

  • Modelが実際に扱う生のデータとのやりとりをするデータソース層
  • ドメインロジックを実装するドメインロジック層
  • Controllerなど外部の世界のインタフェースを果たすアプリケーションモデル層

id:dannさんが「CatalystでのMVCの私的まとめ - dann@catalyst - Catalystグループ」で書かれているServiceクラスは、これの2番目と3番目がまとまったものだろう。私は今、このMVC+Serviceというアーキテクチャスタイル(呼び名あるのかな?)に強く惹かれている。MとCの役割がより明確になるので。

必須パラメータが抜けていたら「400 Bad Request」を返す

最後に165ページより。

検索結果リソースは必ずqというパラメータを指定することになっています。クライアント側の何らかのミスでこのパラメータが抜けてしまった場合は、400 Bad Requestを返すこととします。

いわれてみれば当たり前の挙動なのだが、実装から漏れやすそう。Controllerでのバリデーション時に必須パラメータの抜けを検出したら「400 Bad Request」を返すような仕組がフレームワークにあるとよいかな。