no-image

【書評】Modern PHP

Modern PHP: New Features and Good Practices
Josh Lockhart
Oreilly & Associates Inc
売り上げランキング: 66,524

みんな大好きオライリーのアニマルシリーズです。出版は2015年2月とIT業界水準ですとやや古い印象を受けますが、かなりいい本だと思ったのでご紹介したいと思います。

  • 本書で扱っているPHPは5.6で7.1がリリースされている現在からするとやや古い印象があるが、未だに5.3とか使っていて追いついていない人は是非とも読んで欲しい。PHPに加えられた新機能(TraitやGeneratorなど)もがっつりと解説してくれています
  • コンポーネントについて。Components Versus Frameworksと題して、”When we chose a framework, we invest in that frameworks’s future.”(フレームワークを選択する時、私達はその未来に投資するのである)とし、将来そのフレームワークがメンテされなくなる可能性も十分に考えろよと警告し、巨大なフレームワーク使うのだったらいくつかのコンポーネントを組み合わせた方がいいとしています。特にマイクロサービスなら尚更でしょう
  • コンポーネントについてもちろんComposerについてもしっかりと解説。更に自作のコンポーネントを使ったり配布する手順なども記述あり
  • WEBアプリケーションを構築する上で必須となるセキュリティについても十分に触れられている。XSSやSQLインジェクションはもちろんであるが、自分にとって一番インプレッションになったのはNever restrict your users’ passwords.(ユーザーのパスワードは制限するな)とし、”If you require passwords to fit a particular pattern, you are effectively providing a roadmap for bad guys to hack your application. If you must restrict user passwords, I recommend you only require a minimum length.”(もしもあなたがユーザーに特定のパターンのパスワードを求めるのなら、それは悪い輩にあなたのアプリをハックする道標を与えているのです。もしユーザーのパスワードを制限するのならば、それは最小文字数のみにすべきでしょう。)とあり、今後のアプリ作りに影響を与えてくれる一言だと思います。
  • Good Practices(良い習慣)の中で。”If I persist date and time values into a database,I save them as the UTC timezone. I convert the UTC date and time values to the appropriate time zone when I display the data to application users.”(もしも私が日時をデータベースに格納するのならば、UTCタイムゾーンにして入れる。そしてそのUTC日時を適切なものに変更してユーザー側に表示する)。日本のエンジニアは文字コードについては敏感になるのに、タイムゾーンに関しては何も考えないと言われていますが、それに一石を投じる内容だと思います。
  • 同じくGood Practicesの中で良いものがあったのでご紹介。エラーと例外について、”Exceptions are used offensively to delegate responsibility when a problem occurs”(例外は問題が発生した時に、責任を戦略的に移譲するものである)とし、この間のPHPコンフェレンスでTakuto Wadaさんが言っていた事思い出しました。詳しくはPHP7 で堅牢なコードを書く – 例外処理、表明プログラミング、契約による設計をご覧ください。
  • レンサバではなくてVPSとかを使った時のインストール方法についても解説。ページ数は少ないものの、PHPのチューニングについて書かれている本は少ないので貴重かも
  • ソースコードからPHPをコンパイルする方法についての解説。いつもaptとかyumなどのパッケージ管理ツールを使ってインストールしていたので、自分にとっては新鮮だったし、”I can assure you,it’s less scary than it sounds.”(聞くほど恐ろしいものでも無いことを約束しよう)とある通り、何も恐れる必要はありませんでした(笑)

全体を通して、PHPの文法に関する細かい解説というよりかは、使うと便利な機能や周辺ツールの紹介、採用すべき習慣などに重点を置いています。タイトルの通り、「現代」的な開発をするにはどうすればよいか知りたい人向けの本という感じです。レベル的には脱中級者のはじめの一歩といったところでしょうか。

特に癖のない英語で、大学入学できる程度の英語力があればいけると思います。日本語で書かれたこの手の情報はブログとか勉強会とかでしかゲット出来ない事が多く、ある程度(本を読む程度の)まとまった時間を確保でき、体系的に近代PHPを学びたい人は是非オススメしたい一冊です。

Modern PHP: New Features and Good Practices
Josh Lockhart
Oreilly & Associates Inc
売り上げランキング: 66,524