サイトの拡張性を飛躍的に高める WordPressプラグイン開発のバイブルを読みました。
GPLについて
開発者向けの本ということで、ライセンスの話が詳しく載っています。開発者視点でGPLのメリットをきちんと解説してある書籍は、これまで無かったと思います。またビジネスモデルについても取り上げているのは興味深いですね。ビジネスモデルの部分はWordPressに直接関わっている人以外にも薦められると思います。
コーディング基準について
WordPressでは独自のコーディング基準を設けています。PHPやCSSの書き方が掲載されています。なお、この本を読むと誤解しそうな気がしますが、あくまでWordPressでの基準です。
PHPでは、2012年頃からPSRと呼ばれるコーディング基準を策定しており、多くの開発フレームワークが、PSRに準拠する形に移りつつあります。WordPressがPSR準拠しないのは仕方が無いかもしれませんが、PHP標準とは異なることに言及が無いのが気になりました。
疑問の残るCSRF対策
p158では、クロスサイトリクエストフォージェリ対策が書かれています。しかし、WordPressに用意されているSettings APIを使っていません。nonceを自分で埋め込む、という方法を紹介しています。この方法だと、開発者が毎回CSRF対策を気にかけなければなりません。私は、対策漏れやミスが生じやすい方法だと思います。なお、WordPress Codex Creating Options Pages では、Settings APIを使って管理画面を作成しています。当ブログでも、2012年の記事でこの方法を紹介しています。
少しCSRFを離れて、「検索キーワードをブログに表示する」を考えて見ましょう。以下の2通りを比較してみます。
(A) the_search_query() を使う
(B) echo esc_attr($_GET[‘s’]) を使う
どちらもエスケープして出力しているではないか、と思うかもしれません。でもこの2つには違いがあります。(A)はWordPressにバグが無ければ安全、(B)は開発者がエスケープ作業をミスすれば脆弱性、となります。
CSRF対策も同じですね。
(C) Settings APIを使う
(D) 自前でnonceを発行する
どちらでも対策になるかもしれませんが、(C)はWordPressにバグが無ければ安全、(D)は開発者が対策作業をミスすれば脆弱性、となります。
ユニットテスト
WordPressプラグインの中には、ユニットテストが書いていないものが多くあります。テストコードは公開していない、という開発者もいるかもしれませんが、それを考慮しても、ユニットテストの無いプラグインは多いです。(開発者ならテストについて知ってて当たり前という前提ではなく)ユニットテストについても一章を当てているのは非常に良かったと思います。
国際化対応
WordPressのプラグインとして公開することで、世界中の人に使ってもらうことができます。そのためには国際化対応処理が必要となりますが、本書では国際化対応にも一章を当てています。
APIリファレンス
リファレンスがかなり充実しています。データベースへのクエリと実行結果が記載されているのは、大掛かりなプラグインを開発したい人には手助けになるのではないでしょうか。
買うべきかどうか
WordPressプラグイン開発本としてはProfessional WordPress Plugin Developmentがあるのですが、この本は2011年発行と古いです(settings APIは説明されています)。なので、2014年(WordPress 3.9)時点でのプラグイン開発について知る、という点では、買って損はないと思います。