パーフェクト PHP

パーフェクト PHP

いきなり結論

少なくとも PHP 5.3 時代である現在、この本の登場をもって、これまでにあった有象無象の「PHP と MySQL でインタラクティブなホームページをつくろう !」的な本はその役割を終えました … と言えるぐらい網羅されているので、買いましょう。

この書籍のターゲット

購入前のイメージでは中級者以上向けかと思っていましたが、手に取って読んでみると、初心者も対象に含まれているようで、 PHP のインストールや、文法の概要についてもカバーされていました。

ある程度 PHP を使いこなしている人であれば、読み飛ばす箇所も結構あると思いますが、言語仕様の細かい部分で「これは知らなかった」という部分にも出会えます。
例えば、リファレンスカウントによるガベージコレクションの仕組みや、コピーオンライトによる最適化については、知らない人も結構いると思います。 (少なくとも、私は PHP でコピーオンライトが使われていると意識したことはありませんでした)

個人的には、[エラー: isbn:4048686291:n というアイテムは見つかりませんでした] みたいに、「これを読めば PHP ハッカーになれる !」みたいなのを期待していましたが、そういうのは想定されいないようです。
その分敷居はやや低めなので、 PHP 入門以前の方も安心して楽しめます。

書いてあること

  • インストール方法
    Linux, Mac のパッケージマネージャによるインストールと、 Windows では XAMPP によるインストール方法が紹介されています。
  • 内部処理の概要
    レキサー、パーサー、オペコードについての簡単な説明。
  • 基本的な文法
    既に PHP が書ける人であれば読み飛ばせる。
  • PHP 5.3 以降の新しい機能
    名前空間、無名関数、クロージャ、クラスのオートローディングなどについてもしっかり詳解されています。
    業務ではまだ 5.2 以前の PHP を使っている、という人も覚えておきたい内容。
  • Web アプリケーションの作成
    フレームワークを作成して、それを基に Twitter ライクな Web アプリケーションを作成しています。
    フレームワーク自体は割とミニマムにまとまっているので、いわゆるフレームワークが何をしてくれるのか、というのを雑観するのにもいいと思います。
  • セキュリティ
    XSS, CSRF, SQL インジェクションをはじめとして、具体的な攻撃手法とその対策が紹介されています。
    全 PHP エンジニアが理解しておくべき内容。
  • やや高度な機能
    主に PHP5 以降のオブジェクト指向的な何かについて。
    マジックメソッド、標準インターフェイス、SPL、PDO、DateTime、JSON 等。
  • 雑多なテクニック
    いわゆるレシピ。

書いてないこと

  • 既存オープンソースフレームワーク解説
    symfony のシの字も、 Ethna のエの字もありません。
    著者の中にはそれらの関係者の方もいますが、意図的にトピックから外しているようです。
  • テスト駆動開発
    [エラー: isbn:4048686291:n というアイテムは見つかりませんでした] みたいに、そこまで触れるというのもありだとは思いました。
    とはいえ、具体的なフレームワークの紹介は行わない方針のようなので、そういった意味でもしょうが無いですねこれは。
  • PEAR/PECL パッケージの作り方
    それぞれの概要については触れられるものの、パッケージの作り方については特に言及されていません。
    Openpear についての宣伝があっても誰も怒らないとは思うのですが …
  • オブジェクト指向それ自体の説明
    「PHP におけるオブジェクト指向」には触れられていますが、それ以上については専門書を読みましょう。
  • コーディング規約
    個人的にはモダン PHP を語る上では、結構重要なトピックだと思っています。

結構斜め読みで読み終えているので、「これについてはちゃんと書かれていたよ !」というのがあればご指摘いただければ幸いです。

初心者にオススメしたい活用法

PHP 初心者、もしくはこれから入門、という方に「こういう勉強法はどうでしょう ?」ということでオススメします。
といっても私自信がこれを実践したわけではないので、あまり偉そうには言えませんが …
あくまでも「いち提案」として。

  1. Part 1 を読みながら、ローカルに開発環境を構築する
  2. Part 3 の実践 Web アプリケーション開発をひたすら写経
    Part 2 の言語仕様をいきなり読むのは大変なので、じっくり読むのは何となくで PHP が書けるようになってから
  3. Part 4 の PHP セキュリティについての読書会を行う
    業務で PHP を使っているのであれば、是非チームで共有しましょう
  4. Part 5 のテクニカルな PHP の活用、 Part 6 の PHP レシピはすき間時間等に読んでおき、「こんなこともできるのかー」程度に頭にいれておく

Part 4 の読書会は、私も自社内でやってみたいところです。

その他に読んでおきたい PHP 本

パーフェクト PHP が登場してもなお、その存在価値を失わないと思われる PHP 本を紹介します。
個別のフレームワークの解説本等は外し、より多くの PHP エンジニアに読まれるべきものを選んでいます。

  • [エラー: isbn:4798015164:n というアイテムは見つかりませんでした]
    未だにお世話になっていますが、残念ながら絶版となってしまいました …
    その代わり、現在は Web 上で読むことができます。
    >> 書籍「PHPによるデザインパターン入門」の原稿テキストを公開します
  • [エラー: isbn:4873112869:n というアイテムは見つかりませんでした]
    安くて、薄くて、すっきり読めて、ためになるのでオススメです。
    パーフェクト PHP のセキュリティ関係のパートだけでも同じぐらいの量はありますが、こちらにしか書いていない内容もあります。
    PHP のサンプル自体はややレガシーな感もありますが …
  • ,

巷でプログラマの 10 冊ブログが人気なようなので便乗。
私が、新卒入社からの約 1 年半の中で読んだ書籍の中で、特に印象に残っているものを紹介します。

はじめに、私はプログラマではありません
仕事では自社サービスの運用に携わるなどしていて、開発の仕事もしていますが、運用・保守の仕事も多めです。

また、私は情報系学部の出身でもありません
プログラミングは趣味でやっていましたが、新卒入社時はオブジェクト指向の理解も RDBMS の経験もゼロでした。
入社したのも技術研修の無い会社なので、プログラミング等について、他人から体系的に学んだ経験もありません。

そういう背景から、セレクトの傾向は既出の 10 冊と、やや性格が異なると思います。
比較的平易なものが多いので、これから Web エンジニアになる、という方にも是非オススメしたい 10 冊です。

新卒 2 年目のゆとり Web エンジニアの糧となった 10 冊

[エラー: isbn:4822281957 というアイテムは見つかりませんでした]

オブジェクト指向のおもしろさを教えてくれた一冊。私の新卒一年目のテーマはすばりオブジェクト指向でした。オブジェクト指向は何であり、何でないのか、何が嬉しいのか。また、デザインパターンや UML 、アジャイルといった、オブジェクト指向の考え方から派生した、様々な技術について紹介されています。

各章の終わりには、理解を深めるための参考書籍も豊富に紹介されており、オブジェクト指向について学ぶ上でのインデックスになる 1 冊です。

[エラー: isbn:4798015164 というアイテムは見つかりませんでした]

PHP しか知らなかった私にとって、とても貴重な資料でした。この書籍のコードを写経することで、ようやくオブジェクト指向っぽく書けるようになったと思います。

GoF パターンについてもそうですが、 PHP5 におけるオブジェクト指向や、 SPL (Standard PHP Library) についても学ぶことができ、有象無象の PHP 本とは一味違う 1 冊です。

非常に残念なことに、現在は絶版となってしまいましたが、現在は Web 上で読むことができるようです。

[エラー: isbn:4894712857 というアイテムは見つかりませんでした]

オブジェクト指向についての理解を深めてくれました。また、初めて買った Ruby 書籍だったと思います。

Ruby の場合、 Iterator や Singleton 等どいったパターンは、 PHP よりかなり簡単に実装できることもあって、事情が大分異なります。そういった違いを通じて、 Ruby の魅力を知ることができました。

また、 DSL をデザインパターンとして詳細に紹介しているのも、 Ruby ならではでしょう。

[エラー: isbn:4756136494 というアイテムは見つかりませんでした]

今回紹介している書籍の中では、かなり難しい部類。

コーディングスタイル、アルゴリズムとデータ構造、デバッグ、テストの自動化等、重要なトピックが詳細に解説されています。「糧となった 10 冊」として挙げている割には、ほとんど理解できていないと思いますが、読み返すごとに色々気づかされます。

[エラー: isbn:4873113911 というアイテムは見つかりませんでした]

元々、純粋に JavaScript を書けるようになりたい、と思って買った書籍ですが、それ以上のことを教えてもらったと思っています。これもオブジェクト指向についての理解を深めてくれた 1 冊。

文法、オブジェクト、関数、プロトタイプ継承についての詳細な解説だけでなく、コーディングスタイルについての言及もあり、「JavaScript 版 プログラミング作法」と言っても過言では無いでしょう。

サンプルコードも多く、写経から得られるものは多いです。

[エラー: isbn:4797339098 というアイテムは見つかりませんでした]

プログラミングの本ではありませんが、 Web の仕事に携わる以上、ユーザビリティは、セクションに関係なく大事なトピックでしょう。

ユーザビリティについての考え方は、この本から学びました。「ユーザに考えさせない」という目標がいかに的確で、いかに難しいことか。

理論的な話だけでなく、スクリーンショットを用いた解説もあるので、とてもわかりやすいです。

[エラー: isbn:4844326317 というアイテムは見つかりませんでした]

「ユーザビリティの法則」を日本のモバイル Web に当てはめるとどうなるか、という実践的な書籍。

この書籍で紹介されているテクニックは、スマートフォンの普及とともに、消えゆく運命だとは思います。ですが、それらを実践することで身につく感覚は、 Web がどう変わろうと応用できるものだと思います。

すぐに適用できるテクニックも多く、とても実用的な 1 冊。

[エラー: isbn:4048689789 というアイテムは見つかりませんでした]

雑誌なので「1 冊」として挙げるのは変ですが、とても参考になっているので。

Linux の経験もほぼゼロだった私にとって、これぐらいの敷居の雑誌の存在は本当にありがたいです。ハッカー向けではありませんが、初心者から中級者ぐらいまでは十分に楽しめるんじゃないでしょうか。

シェルスクリプトについての紹介など、 Ubuntu に限らない特集も散りばめられており、楽しみながら Linux に親しむことができます。

[エラー: isbn:4166601105 というアイテムは見つかりませんでした]

タイトルから分かる通り、 Web の本ではありません。しかし、 Web エンジニアリングに携わる以上、アクセス解析やベンチマーク等、数字に対する感覚を磨くことは、避けて通れないでしょう。

世の中に溢れる、アンケートや統計などの様々な社会調査はほとんどがゴミである、というところから始まり、どうやればデータを批判的に読むことができるか、というテクニックが解説されています。

基本的に数式は出てこず、「いかに論理的にバイアスを見抜くか」といったところにフォーカスされています。独特な語り口を除けば、比較的平易に書かれていると思います。

[エラー: isbn:4320023684 というアイテムは見つかりませんでした]

これも Web の本ではありませんが、著者は技術系の書籍を多数執筆している、ジェラルド・ワインバーグです。

就活中、どこぞのコンサルタントが行う「問題解決セミナー」には胡散臭さを感じずにはいられませんでしたが、この本は本当に参考になったと思っています。問題という大問題を認識させてくれた 1 冊。

ストーリーを用いながらユーモラスに語られていますが、そこで語られているのは、問題解決者としての社会人にとって、とても大切なことばかりだと思います。問題は何なのか、それは誰の問題か、われわれは本当にそれを解きたいか …

番外編: 今読んでいる 3 冊

ここからは現在進行形で読んでいるものの中で、特におもしろいものを紹介します。

[エラー: isbn:0131495054 というアイテムは見つかりませんでした]

ハードカバーで 800 ページ以上もあり、もはや鈍器。人は殺せそうな洋書。

内容は、 xUnit 系のフレームワークによる単体テストのパターン・アンチパターンの詳説です。デザインパターンのように、それぞれのパターンに名前が付けられているので、これが普及すれば技術的コミュニケーションの促進にも繋がるかもしれません。

また、英語それ自体の勉強よりは、英語で興味のある事柄を勉強する方が、モチベーション的には高く保てると思うので、英語の教材としてもオススメです。

[エラー: isbn:4048686291 というアイテムは見つかりませんでした]

通称エキ Py。私にとってはまだまだ敷居が高いので、つまみ食い的に読んでいます。

Python というプログラミング言語それ自体についてのみならず、テスト駆動開発、デザインパターン、パッケージの作成、開発手法など、かなり包括的に記述されています。これを読みきったら Python ハッカーになれる気がする、そんな 1 冊。

[エラー: isbn:4774135666 というアイテムは見つかりませんでした]

さくら VPS を契約したことと、業務でもインフラ的な仕事が増えそうなので購入。

私の場合は LAMP を中心としたソフトウェア/ミドルウェアについては仕事で関わるものの、ハードウェアについては直接関わることはほぼ皆無なので、知らないことだらけで、とても勉強になります。視野を広げてくれる 1 冊。

See also

PHP 逆引きレシピ先日の新春座談会 このコンピュータ書がすごい!で、唯一 (?) 紹介されていた PHP 本がプレゼントキャンペーン中。進行役の方からは、「PHP 本には珍しく、『この著者はわかっている!』という感じを受ける、安心して読める本」というコメントもあり、ちょうど気になっているところだった。

というわけで、『PHP 逆引きレシピ』欲しい!ください!!

関連リンク