プラグイン開発ならこの一冊!「Professional WordPress Plugin Development」書評
こんにちは!
WordPressのカスタマイズは多少は判るけど、自信ないな〜。そんなあなたに送ります。今日はしずかなかずしブログでは珍しく書評記事です。
扱うのは以下の本。
「Professional WordPress Plugin Development」(著: Brad Williams, Justin Tadlock, Johan James Jacoby)
英語の本です。その名の通り、WordPressでプラグイン開発をする為の技術本です。
この本を手に取った理由
私は、職業としてWordPressを使っているわけではありません。このブログの読者ならご存知の通り(?!)、DIYの日曜大工よろしく週末に主にJavaScriptプログラミングを勤しむ、技術マニアです。最近、訳あってWordPressのプラグインを作りたくなり、週末にいくつかコードを書き始めました。
ネットの情報を頼りにWordPressのプラグインを書いてみたのですが、なにしろ初心者です。WordPress開発におけるPHPのお作法や、一般的なカスタマイズのためのWordPress自体の仕様など、知識が不足しています。
一つ一つやりたいことをネットで検索すれば、それなりに動くものは作れます。しかし、効率は良くないです。なぜなら、WordPressやPHPは日々は進化しています。なにしろ、世界のWebサイトの4割以上はWordPressというデータあります。しかも、その割合の増加は顕著です。WordPressのバージョンアップも頻繁で、数年前の情報ですらすぐに古くなるという状況なのです。したがって、ネット検索でたどり着いたページで使われているコードがどのバージョンのWordPressで使えるのかわからないこともしばしば。そんな断片的な情報では、何が最新で、何が「今どき、正しい」コーディングなのか、理解するのが難しいのです。
そんな昨今、最新技術を網羅的に学ぶ必要性を感じていたところ、この本に目が留まったという訳です。ちょっと値段も高いし、英語なので読むのが大変かなと思いましたが、結果的には買って大正解。
よかったところを挙げてみると、
- 単なるハウツー本ではなく、仕組みや仕様の背景が書かれている
- プラグインだけではなく、WordPress開発全体が広く知れる
- 最新のWordPressのバージョンをカバーしている
- プロフェッショナルとして知っているべき「マナー」が知れる
といったところでしょうか。
単なるハウツー本ではない
この本は、単なるハウツー本ではないです。Web開発の書籍をながめてみると、よくあるのが「作りながら学べる」的なハウツーを中心にしたものです。その手の本は、初心者が本に沿ってステップ・バイ・ステップでコーディングすると、本で定義された作品が完成できるので、一見手っ取り早く学べるように思えます。
しかし、読者が、著者の意図とは違った課題を解決したい場合、何から手をつければよいのかわかわからなくなります。
プラグインは、WordPressの機能を拡張するもの。拡張すべき機能は多岐にわたるのは当然です。読者のニーズにあった課題であればハウツー本もよいでしょうが、世のなさまざまな技術をカバーできるとはとても思えません。
「Professional WordPress Plugin Development」は、そういったハウツー本とは一線を画す内容となっています。Amazonの試し読みで目次をながめてみましょう。必要な技術要素が整然と並んでおり、自分が作りたいプラグインに必要な技術要素に応じて辞書のように読み進めることができます。
以下、目次を転記します。
- CHAPTER 1 An Introduction to Plugins
- CHAPTER 2 Plugin Framework
- CHAPTER 3 Dashboard and Settings
- CHAPTER 4 Security and Performance
- CHAPTER 5 Hooks
- CHAPTER 6 JavaScript
- CHAPTER 7 Blocks and Gutenberg
- CHAPTER 8 Content
- CHAPTER 9 Users and User Data
- CHAPTER 10 Scheduled Tasks
- CHAPTER 11 Internationalization
- CHAPTER 12 REST API
- CHAPTER 13 Multisite
- CHAPTER 14 The Kitchen Sink
- CHAPTER 15 Debugging
- CHAPTER 16 The Developer Toolbox
WordPressのサーバー開発やプラグイン開発を少しかじった方は、この一覧を見ただけで、全体感が理解できるのではないでしょうか。
WordPress開発全体が知れる
私はWordPressのPHPの開発にそれ程詳しい訳では無いですが、PHPでコードを追加する際に必要になるHookの仕組みなどはある程度理解しているつもりです。しかし、JavaScriptのコードをどのように拡張するか、とか、多言語対応をどうするか、といった細かい仕組みまでは知りませんでした。
Chapter 6 JavaScriptでは、必要なJavaScriptのコードをブラウザに教える為のWordPressのenqueueのしくみが丁寧に説明されています。Chapter 11 Internationalizationも、言語の語順違いによるパラメータの扱い方と使用すべき関数がわかりやすく解説されています。
Chapter 1 An Introduction to Plugins では、プラグインとテーマの使い分けやその理由なども丁寧に解説されており、単にプラグイン開発だけではなく、一般的なWordPress PHP開発の全体像を理解するにも役立ちます。
最新のバージョンをカバーしている
「Professional WordPress Plugin Development」は最新のWordPressのバージョンに即しています。特に、WordPressの編集画面、エディタは、WordPressは5.0でエディタの仕様が大きく変わりました。ご存知のように、5.0から標準になったGutenbergと呼ばれるエディタです。
Gutenberg エディタは、15世紀にドイツで印刷技術を発明したとされるヨハネス・グーテンベルグから取った名前をもつWordPressの重要な機能です。編集画面を「ブロック」とよばれる単位に分割した上で、ブロック単位でテキストや画像を入れ込みレイアウトしていく、という記事作成の体験。それ以前のエディタとは全く違ったものです。
あまりの変更の大きさに、それまで使っていた古いエディタ(クラッシク・エディタ)に戻すプラグインをわざわざインストールして、Gutenbergを避けた経験がある方もいるでしょう。印刷技術の革命とおなじくらい、WordPressにとってはインパクトのある変更だった、ということですね。
このブロックエディタは、多くの機能がJavaScript+Reactで実現されており、エディタの拡張にはPHPによる機能拡張とはちょっと違った知識が必要になります。
Chapter 7 Blocks and Gutenbergでは、しっかり最新の開発手法がカバーされており、初めてブロックエディタの拡張もスムーズに進められます。
特に興味深いかったのは、Chapter 14 The Kitchen Sinkです。この章は、以前のWordPressバージョンでは、重要な要素であったため、1st editionでは章立てを分けていたような技術(例えば、Shortcode)に関して書かれています。このような章立ての配慮は、Web検索による学習より明らかに有用です。Web検索だと、サーチ結果が断片的な知識になり、何が新しくて何が古いのか、理解しにくいのです。このように整理されているのは書籍ならでは。久々に書籍のメリットを感じました。
マナーも大事だ
いわゆる、プログラミング「マナー」や、こうすべきといったテクニックなども解説が豊富です。理由も含めて納得の説明です。
例えば、Chapter 12 REST APIに HTTP プロトコルを使った他サーバーからの情報取得に関する解説があります。ちょうど私が作ろうとしているプラグインは、WordPressサーバーから他のサービスのREST APIをコールする仕組みが必要です。このパートは非常に有用でした。
というのも、PHPはHTTPリクエストを作成して他のサーバーからJSONなどのデータを取得するのに複数のやり方があります。Chapter 12では、HTTPの仕組みから入り、PHPプログラムでのHTTPリクエストの出し方を複数のやり方で解説を加えます。
fopen()を使うケース(streamとfreadの両方)、および、fsockopen()を使うケース、また、CURL extensionを使うケース、などのようにPHPの場合の複数のやり方を解説しています。しかし、WordPressのやり方はそれらとは異なるものです。wp_remote_get(), wp_remote_post()など、WordPressの標準的なやり方があるのです。そして、著者はWordPressプラグインを作るなら、標準機能を使うようにと説きます。
理由は、PHPの標準の方法では、OSとしてのサーバーのコンフィギュレーションに依存してしまうからです。プラグインのように世界中のユーザーがインストールして使う可能性があるコードを特定の環境に依存するように作るべきではない、という考え方です。なるほど、納得の解説です。私の実装中のプラグインは、さらに別のやり方(file_get_contents)で実装しようとしていましたが、この解説を読んで、wp_remote_*()に書き換えることにしました。
まとめ
「Professional WordPress Plugin Development」の書評をしてみました。この本は、全体を通して買ってよかった本です。単なるハウツー本ではなく、WordPressのサーバー開発を網羅的に解説している技術書。最新のWordPressをキャッチアップしつつ、古い技術もそれとわかるように記載されているのがありがたいです。
英語だからとっつくにくいと思われるかも知れませんが、シンプルな文章でわかりやすいです。
プラグインやPHPがどういうものかはある程度知っているが、WordPressカスタマイズの全体的な知識が不足している、と感じる方には非常にオススメの本です。