BLOG

WordPressプラグインを作るのが辛い話

こんにちは、代表の井村です。
この記事は「WordPress Advent Calendar 2015に参加したかった人達の Advent Calendar 2015」7日目の記事です。

※この記事は公式プラグイン登録を目指して開発中の人の心の叫びなので役に立たない可能性があります。ご了承ください。

自由であることは、自由であるべく呪われていることである。

WordPressのプラグイン制作はとても自由だ。1ファイルだけで完結するHello Dollyのようなプラグインであればフォルダ分割する必要もなく関数名にプラグインのprefixなどつけてゴリ押しすることもできるが、少し複雑なことをしようとするとそういうわけにもいかない。
油断すると、管理画面の処理とテーマ表示側の処理が同じファイルに書いてありメンテしようにもただ辛いだけ、という代物ができあがってしまう。

管理画面を作るSettings API, add_menu_pageなどの関数, Dashboard Widgets APIなどのAPIが用意されているのでまだ助かってはいるものの、プラグイン自体は公式に登録されているものでもOOPでコーディングされているもの・そうでないもの、Mustacheのようなテンプレートエンジンを組み込んでいるものなど人によって様々なスタイルで記述されている。
参考にするべきリソースを調べるにもそれなりに時間がかかるので備忘録として書いておきます。

1. ディレクトリ構成

Plugin HandbookのBest Practicesは見ておいて損はないはず。
シングルファイルのプラグインだけでなく、MVCパターンのアーキテクチャも紹介されている。(紹介先はちゃんとしたドキュメントじゃないけど…)

また、プラグインの開発の雛形であるボイラープレートもいくつか紹介されていて、私も完全に踏襲していないもののDevinVinson/WordPress-Plugin-Boilerplateは比較的最近もメンテされているようだし参考になりました。

今はWordPressのダッシュボードでKPIを管理できるWP KPI Dashboardというプラグインを開発中ですが、ディレクトリ構成についてはコードを書きながら迷走中です。
登録まで持っていけたらWordBenchかなにかで誰かに相談しにいきたいと思っています。

2. テスト

先日のWordCamp Tokyoでもプラグインのテストを書こうという動きが盛り上がっていたようですが、私もテストは書きはじめています。
テストの雛形はWP-CLIの wp scaffold plugin-tests コマンドを使う方法が簡単。
テスト用のWordPressのインストールやDB作成用のシェル、phpunitのbootstrap.php、サンプルのテストコードやTravis CIの設定ファイルもセットになっていて、すぐにテストを書き始められます。

ただ、PHPUnitはそれなりにドキュメントが充実しているものの、WordPress用に拡張されたWP_UnitTestCaseに関しては情報が非常に少なく、テストの記述例も見つけるのが結構大変。。

※ちなみにQiitaのWP_UnitTestCaseタグを見ると見事に宮さんの記事だけが並ぶ状態…(2015/12/6現在)

スクリーンショット 2015-12-06 12.59.10

3. セキュリティ

最後に軽くセキュリティに関する公式リソースについても。
先日日本語に翻訳されたと話題になったWordPress セキュリティ白書とPlugin HandbookのPlugin Securityの項目は参考になります。

余談:Calypso

Automattic社の直子さんのブログ記事「Calypso: WordPress.com の新しい方向性」によると“「WordPress コアが JavaScript で書き直される!?」という誤解をしている人もいなくはないようですが、そのような事実や計画はありません。”とのこと。

しかし仮に管理画面以外のクライアントアプリで投稿するユーザが一般化するのであれば、特に管理画面側のプラグインはあり方をだいぶ変えないと使われる環境が少なくなるのは間違い無さそう。
プラグインも今までのようにUIまで完備するのではなくAPIだけ用意するスタイルに変化していくのかなーともやもや考えております。

次のAdvent Calendarは…

BizVektorの開発者として有名で、WordCamp Tokyo 2015でも一緒にワークショップをやらせていただきました @kurudrive さんです!