『パーフェクトPHP』――disられないPHPを書くためのパーフェクトな指南
パーフェクトPHP 小川雄大、柄沢聡太郎、橋口誠(著) 技術評論社 2010年11月 ISBN-10: 4774144371 ISBN-13: 978-4774144375 3780円(税込) |
■「例えば、PHPを避ける」の衝撃
Webプログラミングの分野で大きなシェアを持つスクリプト言語、PHP。しかし、プログラマのコミュニティ界隈では「PHPをdisる」ことが、風物詩のように行われている。
原因の一端は、おそらくIPAの「セキュア・プログラミング講座」というコンテンツだろう。『より良いWebアプリケーション設計のヒント』というページには、公開当時『例えば、PHPを避ける』というかなりショッキングな記述がされていた(現在は修正されて『プログラマが脆弱性をつくり易い環境を避ける』という表現になっている)。
当時の記述については、こちらのブログ記事が引用して紹介している。安全なプログラミングについての考察もされているので、PHPでプログラミングをしている人にはぜひ一読をお勧めしたい。
■なぜPHPを避けるのか
さまざまな理由と視点から、PHPはdisられ続けてきた。PHPをdisるブログエントリをまとめた記事を見つけたので、興味のある人は読んでみてほしい。
私も理由を考えて(そして書いて)みたのだが、あまりにも多すぎて本題から逸脱しすぎたので、割愛することにした。1つだけ書いておくと……
% php -r 'print_r(unpack("c*", "hoge")) ;' Array ( [1] => 104 [2] => 111 [3] => 103 [4] => 101 )
なぜ1から始まるのかと。
私が見聞きした中で一番腑に落ちたのが、「PHPはジャンクフード」という批判である。安価かつ短時間で手軽に空腹を満たせるが、将来に自分の健康へしっぺ返しがあるのは間違いない。
■とはいっても、避けてばかりもいられない
とはいえ、Web開発の現場でPHPが占めている割合を考えると、到底避けてばかりはいられない。TIOBE SOFTWAREという会社が発表したプログラミング言語の人気ランキング(複数の検索エンジンの検索結果から算出したもの)で、PHPは2010年2月で3位、2011年2月で6位にランクインしている。
検索エンジンから収集したデータなので明確な根拠にはならないが、このデータは「もはや無視できない量のPHPコードやプロダクトが、すでに存在している」ということを示唆している。
■ジャンクフード・プログラミングから抜け出す
PHPを使うと、手早く安価な「ジャンクフード的に」Webアプリケーションを構築すること“も”できる。しかし、将来の自分の健康を考えると、メンテナンスしやすく、堅牢で、きれいなコードで構築したほうがいいのは自明である。ジャンクフードを食べ過ぎて健康を損なうのは勝手だが、ジャンクフード・プログラミングで生み出された不健康なコードは、やがてチームに、会社に、そして社会にも大きな損失を与えてしまう……かもしれないのだ。
つまり、ジャンクフード・プログラミングから抜け出し、プロフェッショナルなソフトウェア職人を目指すのであれば、本書のような「健康的なプログラミング」を教えてくる本を読む必要がある。
■「パーフェクトなPHP」を目指せ
本書『パーフェクトPHP』からは、「健康的なプログラミング」ができるプログラマを増やそう、という決意のようなものが伝わってくる。
基本的な言語仕様や、PHPの主な用途であるWebアプリケーションの作成、よく遭遇する問題への実践的なレシピなど、初学者にも現場でバリバリコードを書いているプログラマにも役に立つ内容が、高い密度でまとめられている。
それだけでも十分役に立つ本なのだが、さらに「決意を感じさせる」2つの特徴がある。
1つは、Webアプリケーションのセキュリティへの言及だ。9章、10章を割いて、Webアプリケーションにはどのような攻撃が行われ、それにどう対処していくべきかが広く、そして深く解説している。健康的な(=脆弱性のない)Webアプリケーションを作り出すためには、必須の知識と言えるだろう。
もう1つは、随所に挟まれる「コラム」である。現場の最前線でPHPを使っている著者陣によって、ジャンクではない“健康的な”プログラミングをするために必要な知識や心掛けが散りばめられている。知らなくても動くが、「健康的なプログラミングができるプログラマ」になるための重要な知識について触れられているので、これらのコラムにも注目しながら読み進めてほしい。
■まとめ:健康を守って、PHPを書く
PHPが好きであれば、健康的なコードを書くべきである。PHPが仕事の道具であるならば、やはり健康的なコードを書くべきである。ジャンクフード・プログラミングから脱却し、ちゃんとした「プロの仕事」をするために、本書は強力なガイドになるだろう。
不摂生はいつか、手痛いしっぺ返しとなって戻ってくる。痛い目にあわないためにも、社会に迷惑をかけないためにも、PHPプログラマであるならば健康的なPHPプログラミング、つまり「パーフェクトPHP」を目指そう。
ちなみに、本書で紹介されているCSRF対策には徳丸浩さんからツッコミが入っている。セキュリティの章を読み終えたら、併せて参照していただきたい。
■Links
- IPA セキュア・プログラミング講座:Webアプリケーション編
- 「例えば、PHPを避ける」ってなぁにその曖昧な書き方?
- PHPをDisってるブログエントリを集めてみた - kなんとかの日記
- TIOBE Software: Tiobe Index
- CSRF対策のトークンをワンタイムにしたら意図に反して脆弱になった実装例 - 徳丸浩の日記
(『Wife Hacks ~仕事と家族とコミュニティと~』
コラムニスト kwappa)