本書の想定読者は以下のような人です。
  • Webアプリ開発を業務として初めて手がけようとするエンジニアの方
  • Webアプリ開発の全体像を知りたい方
  • Web開発の全体的な知識を初学者に学ばせたい方
  • スタートアップ系企業の方からWeb系企業の新人エンジニアの方まで
こういった初心者の人はもちろんですが、「実業務の経験はあるけど、現場がいまいちモダンじゃない…」というPHPerの人にもピッタリな内容だと思います。


第1章「Web技術オーバービュー」は、初心者でなければ読み飛ばしても良いと思います。逆に初心者は、分からないことがあっても気にせず進みましょう。


第2章「Webアプリケーション実践入門」は、本書のハイライト。

PHP編は「初心者向けだから名前空間は使わないように」といった妥協がなく、モダンなスタイルを貫いている点には好感が持てます(遅延静的束縛やトレイトといった機能をさらっと使ってるのもポイントが高い)。

ただ、対象読者がイマイチわからないですね。PHPのオブジェクト指向構文と名前空間を理解していないとついていけない内容なので、PHP初心者向けとは言いがたい。『パーフェクトPHP』のPart2くらいまでは読んでいないと、「動かす」ことはできても、「なぜそう書くのか理解する」ことはできないでしょう。

初心者よりはむしろ、実務でPHP5.3以前のフレームワーク(CakePHP2/CodeIgniter/symfony等)やSmarty+生PHPなどと格闘している人が、PHP5.5時代のモダンな開発スタイルにキャッチアップするのに向いている、という印象です。

PHP編について、誤記と思われる箇所をリストしておきます(書籍内容に関するお問い合わせでも報告済み)。

p.34 12行目
× # apt-get php5-cli
○ # apt-get install php5-cli

p.40
×リスト4 showメソッド(lib/Base/Controller/TimeLine.php)
○リスト4 showメソッド(lib/Controller/TimeLine.php)

p. 47
×リスト22では、クラス定義の前にuse演算子を用いて〜
○リスト6では、クラス定義の前にuse演算子を用いて〜


ついでに、TinitterをMySQLで動かしたい人向けの設定(Ubuntu12.04/MySQL5.5を想定):

sudo apt-get install mysql-server でインストール。

/etc/mysql/my.cnf を編集して以下の設定を追加。
# [client]の下
default-character-set = utf8

# [mysqld]の下
character-set-server = utf8

設定できたら sudo /etc/init.d/mysql restart でMySQL再起動。

あとは適当にテーブルを作って、サンプルコードに含まれるスキーマファイルを読み込み

mysql -u root -p -e 'CREATE DATABASE tinitter;'
mysql -u root -p tinitter < schema.mysql.sql

config.phpの$db_settingsは以下のような感じで。
$db_settings = [
    'driver'    => 'mysql',
    'host'      => 'localhost',
    'database'  => 'tinitter',
    'username'  => 'root',
    'password'  => '',
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci'
];

PHP編を最後までやった感想としては、レイアウトが酷い。これにつきます。ある部分で説明しているコードの実体が次のページにある、といった現象が頻繁に発生しており、読みづらいことこの上ない。Ruby編はまともなレイアウトです。何故PHP編はこんなに混乱したレイアウトなんでしょう。。。

PHP編までで、結構長くなってしまったので、Ruby編とインフラ編の感想はまた今度。