「効率的なWebアプリケーションの作り方」を読んだ

Posted by hiroki.kana on October 13, 2012
このエントリーをはてなブックマークに追加

本屋で立ち読みをしていて見つけたのですが、わかりやすくて良い本だと思ったので「効率的なWebアプリケーションの作り方 -PHPによるモダン開発入門-」という本を紹介します。

主な内容としてはPHPのSymfonyというMVCフレームワークを利用してWebアプリを開発するための手法が書いてあるのですが、特に好印象だったのは前半の理論的な部分が簡潔にまとまっていて、とても理解しやすかったというところです。
Webアプリの開発の方法はわかったけどもなぜそうすべきなのかがわからない本だったり、理論的な部分はわかったんだけど実際に実践で利用してみたけどこれ使い方合ってるのかな…みたいなことが私はよくあったのですが、この本は非常にバランスが良いと思います。

まず、Part1〜Par2では考え方的な話が書かれています。
Part1では主にオブジェクト指向の特長がPHPのコードを利用して説明されています。
オブジェクト指向をPHPで書くという意味でも非常に読みやすかったのですが、ポリモーフィズム、カプセル化、継承などをよくある変な動物に例えているものよりあとの実装例でも利用できるような流れで説明されているのがとても良かったです。
オブジェクト指向の細かい部分というより実際にコードを書くうえで原則として理解しなければいけない部分をうまくとらえていたのではないかと思いました。
これを読んだあとにより詳細に理論が書かれている本などはとても読みやすくなるのではないでしょうか。

Part2からはPHPでよくあるレガシーコードをリファクタリングする方法や、簡単なデザインパターンの紹介、またフレームワークを利用するにあたり、必要な周辺知識を抑える内容が書いてあります。
レガシーなPHPからどのようにして改善していくかという部分や簡単なリファクタリングの方法、利用しやすい一部のデザインパターンが紹介されています。

ファウラーのリファクタリング本を読んだ際も思ったのですが、正直なところどこに適用して良いか迷うというか、よくわからないというのがあると思うのです。
オープンソースで公開されているものは比較的きれいだし、自分で書いたコードはリファクタリングを適用するようなほど量もないし…という人もいると思います。
そのため、ファウラーのリファクタリング本を全部読む力がわかない…という人にはこの本を読むことをおすすめします。
この本で紹介されているリファクタリング手法は簡単で理解しやすく、かつ利用頻度が高い(と思う)ものにしぼって説明されています。
デザインパターンについては同様のことが言えると思います。

Part3以降は実践編という感じで、実際にPHPのMVCフレームワークであるSymfonyを利用してレンタカー予約アプリを作成する方法が書かれています。
ここからは写経して実際に動かして楽しむ部分だと思います。
git-flowを利用してアプリの機能ごとの開発を行っているのは新鮮だと思いました。
実際にサーバーからcloneしてきたりpush/pullしたりという部分については特に説明はないので調べる必要はありますが、「Webアプリに機能を追加する流れ」という部分ではgit-flowを使って作業者はこのように作業すれば良いのかという指針を示せていると思います。
14章、15章では単体テスト・機能テストの基本的な部分に言及されてました。
できればTDDを取り入れてサンプルアプリの開発が紹介されていればすごくよかったと思うのですが、実際は紙面の量やその他の都合の面で難しかったのかなぁと思いました。

本書の中でも書かれていますが、PHPで書いてはありますが、この知識自体は他の言語であってもいかせる内容だと思います。
私は別にPHPが好きというわけではないのですが、ただ、昨今はPHPで書くことも多いかと思いますので、まず入りとしてPHPで知識を入れておくというのもアリではないかと…。
「PHPはまだ触ったこともなくて…」という方はパーフェクトPHPあたりも一緒に読まれると理解が早まると思います。
私が読む中で、本書で取り入れられているドメインという考え方に対する理解が浅かったので「エリック・エヴァンスのドメイン駆動設計」を読んで理解を深めようと思いました。
本書はこれからWebアプリを開発していく方には理解しておいて絶対に損のない内容だと思うので、おすすめの1冊です。

このエントリーをはてなブックマークに追加