twitterで散々呟いているとおり、私はphpが大好きだ。Webだけでなく、CLIスクリプトとしても大いに使っている。
phpは、pythonと同じぐらい好き嫌いが分かれる言語ではないかと思う。まず、その普及率の高さ、そして、良くも悪くも「C言語とシェルスクリプトといった、多くの人が知っている知ってる構文で書ける」タイプのインタプリタだからだ(こう言いきってしまうと各所よりマサカリが飛んできそうだが)。誰でも簡単に書けるが故に、私のようなにわかプログラマーがクソコードを量産したせいで、少なくないプログラマーから敬遠される言語の一つになってしまったが、これはphpが悪いのではなく私たちクソプログラマーのせいである。(一方、pythonは、逆の意味で好みが分かれそうだ。)
そんなことはさておき、本書を語る上で最も象徴的だった部分を紹介する。なお、このレビューを読んでいるという事は、phpを多少なりとも(たとえば、バーション 5.4あたりで)使ったことがあると思う。以下のコードを見て欲しい。
$bool = ( ‘X’ == 0 ); // true or false?
この条件式はどうなるだろうか。実はこの「==」演算子の挙動は、php7.4で変更されている。
php7.4やphp8で追加されたり変更されたりした箇所は多く、こうしたエッセンシャルな部分にも及んでいる(このあたりが第4版での主たる加筆分のようだ)。本書は、こうした「最新のphp」を、入門書よりも深く学べるように書いてある。
phpは公式リファレンスが充実しており、また、構文も非常にわかりやすい(と思う)ので、このような本は必要無いと思う方も多いかもしれない。実を言うと、私もこの本を手にするまで、自分のphpの知識では、この本から学ぶことはそう多くはないのではないかと高をくくっていた。本書を手に取ってパラパラとめくった感じでは、その予感は的中したかに思われた。しかし、一から読んでいくうちに、その認識は変わっていった。php7.4やphp8で、結構、知らない拡張や変更が多く成されていたのだ。
phpはハードルが低い反面、なかなか綺麗なコードが書きにくいという裏の面もあるため、本書が紹介する「最新のphp」を学び直し、よりコンパクトで安全なコーディングができるようになると素晴らしい。特にphp8はJITを搭載して実行速度が一段と速くなっており、最新のphpを知る事で「速い・短い・わかりやすい」プログラムが書けるようになる。
もちろん、プログラムは、コンパクトに書けば良いというものではなく、これは本書でも「こうも書けるがオススメはしない」という紹介の仕方もされている。人によっては二項演算子の使用すら拒む人も居るので、どこまでコンパクトに書けば分かりやすいかはその時々で変わるが、私は標準的な記法内であればコンパクトな書き方が好みである。ただ、このあたりは参加するプロジェクトによっても基準が異なるため、実践では色々な書き方を熟知しておけば、どんなプロジェクトに参加しても困らないようになる。
「phpを書ける」から「phpを仕事に使える」までステップアップされてくれるのが、この「独習php 第4版」だ。本書の導入部分にはモダンな環境構築にページが割かれており、標準クラスライブラリでは、豊富なライブラリをきちんと管理する方法も紹介されている。また、データベース連携の章ではMySQL(MariaDB)の基本的な知識を、RESTクエリの章ではHTTP通信の基本的な知識を紹介するなど、入門書よりはより実務レベルの知識を教えてくれる。もちろんこれだけで幅広いphpの周辺技術を理解することはできないが、phpから使う上で必要な仕組みは理解できるレベルで書かれている。より深く学びたい場合は、本書で得た知識をとっかかりに専門書を揃えたら良い。
「オブジェクト指向」の章では「phpは必ずしもオブジェクト指向で書かなくても良い」としながら、多くのページを割いて説明しており、これも実務レベルで非常に役に立つ知識であった。phpのクラスはC++のそれと似通った構造をしているが、phpならではの部分を詳細に紹介してあるので、他の言語でclassの使い方を覚えて、phpでもなんとなくでclassを使えてる人には、特に得るものが大きい。
他方、各章のおわりに「練習問題」があるのだが、資格試験の勉強ならまだしも、実務レベルを目指す本書にはややそぐわない印象を受けた。もちろん邪魔になるわけではないので、好みに合う人は確認がてら解いてみるのも良いかもしれない。私は、この本は入門書ではないので、一度読んだ後、自分なりに実務レベルを想定したコードを書きながら、リファレンスとして必要な箇所を読み返す使い方のほうが、より強力なバイブルとなる。
総じて、本書は650ページ近くあり、かなり分量が多い。しかし、読みやすくわかりやすい文章で、意外とさらさらと読める。ところが、サンプルコードから学べることも多く、サンプルコードもしっかり読み解きながらとなると、それなりにまとまった時間が必要だ。冒頭に挙げたようにphpはクソコードでも動いてしまう柔軟性があるため、綺麗なコードをじっくり見ることも実務レベルにステップアップするためには重要だ。命名や記法など、本書のサンプルコードは公式規約に則って書かれているため、これを真似て自分のコードバリエーションの幅を広くし、現場で活躍する基礎知識として欲しい。本書は、それを「独習」できる良書だ。