Standing on the Shoulder of Linus

Home / 2014 / 8月 / 01 / 書評: サイトの拡張性を飛躍的に高める WordPressプラグイン開発のバイブル

書評: サイトの拡張性を飛躍的に高める WordPressプラグイン開発のバイブル

サイトの拡張性を飛躍的に高める 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)時点でのプラグイン開発について知る、という点では、買って損はないと思います。

関連

Posted in bookreview | Tagged WordPress, プラグイン
← ブロガーに朗報!アマゾンアソシエイトの報酬率改定でキンドルの紹介料率8%(2014年12月末まで) Custom Contact Form プラグインのリモート脆弱性をWordPressセキュリティチームが修正 →

アーカイブ

人気の投稿とページ

  • キンドル本を印刷する(PDFに変換する)方法
  • 名古屋駅から国際センターまでの道のり(徒歩)
  • AGPL ライセンス(GPLとは似ているが違いもある)
  • 6年使ったイーモバイル(Y!mobile)を解約手続。店頭でSIM返却
  • JP-Secure SiteGuard WP Pluginは不正ログイン防止に役立つか

プロフィール

水野史土:月70万PVホームページ制作会社のレスキューワーク株式会社で、PHPソフトウェアのサポートを行っている。concrete5コミュニティリーダー、Novius OSコアコード貢献者でもある。 詳しくは管理者詳細参照。
大好評WordPress書籍「WordPressユーザーのためのPHP入門 はじめから、ていねいに。」サポートページ

Copyright © 2015 Standing on the Shoulder of Linus.