こんにちは。ミルコン です。最近は テーマレビューチームのモデレータ に就任し、テーマレビューをやっている人です。
今回は Capital P Advent Calendar 2017 の寄稿記事として、せっかくなので自分の大きく貢献しているチームであるテーマレビューチームの現在の問題点について語ってみます。
問題点1 : 自動化不足
今のテーマレビューでは、ありとあらゆるものを全部レビュアーの手作業で見ています。一応その中には手作業でしか分からないようなものや自動化する難度が高いものも含まれているのですが、簡単に自動化出来そうなものはかなり多いです。例えば関数名/クラス名のプレフィックスだとか、コピーライトの宣言とか、各カスタムクエリがリセットされているか等の単純な問題なんかです。これらは簡単に自動化できそうですが、未だに自動化ツールはありません。
今あるテーマチェック系のツールと言えば、Theme Check プラグインと Theme Sniffer の二つなのですが、Theme Check プラグインに関しては、ほんとにベーシックなもの、例えば必要な CSS とかしか見れず、エスケープ等の重要なセキュリティ問題の検出は出来ません。(ちなみに一応各カスタマイザーの設定に sanitize_callback
が設定されているかは見てくれるのですが、本当にその配列キーが存在しているかしかテストできず、どんなにめちゃくちゃな関数が指定されてようがそのキーがあるだけ通るという体たらくです。)
Theme Sniffer というのは、PHPCS の sniffer ルールを使用して作られているテストツールです。昔は NS Theme Check という名前で知られてました。
これには WordPress-Theme という WordPress Coding Standards からのフォークで作られているテーマ専用ルールセットが使われています。一応検出できる内容は先の Theme Check プラグインよりは多く、基本的なエスケープの問題 (ただし false positive な誤検出も多い) や、プラグインテリトリーに相当する機能を検出してくれたり、それなりに使えるツールであることは確かです。なんですが、なんと GitHub を見ると最終更新が半年ほど前であり、現在の Code Sniffer の最新バージョンである 3.x 系に対応していません。その為僕は仕方ないのでいつも VCCW 上で動かしてます… ちなみにですが、Theme Sniffer は将来的に Theme Check プラグインと同様、アップロードの際に組み込まれ、エラーが発生している状態ではテーマをアップロードできなくなる用になる予定らしいです。
テーマレビューチームは最終的な目標としてレビューの完全自動化を掲げてるんですが、その割には開発があまり盛んではなくて悲しいです。
ちなみに、宮内さんが作っている (いた?) 自動化ツール というものがあり、これを使うと PHP や JS のエラー、タグとテーマ機能の不一致などが検出できます。個人的にこれは普通に有用であり、特に PHP や JS のエラーという重大な問題を見逃さないようにできて良い… と思ってたのですが、宮内さんから、主にテーマがアップロードされる際に低品質なテーマを弾くためのもの、と言われ納得しました。
現状の Theme Check プラグインはただググってコピペするだけで問題解決できてしまうため大きく役に立たないのに対し、このような PHP/JS のエラーはまあ基本コピペでは直せないので、最低限の開発スキルは見れるかなぁと思いました。宮内さんはテーマレビューチームの自動化ツールの開発担当の Ulrich とツールのテストランをしたそうですが、その際にはなんと6割ほどのテーマが弾かれていたそうです。
ではなぜこのツールが未だに導入されておらず日の目を浴びることがないのかというと、GUI がないからということらしいです。僕的には、それなりにエラーを検出できており、またアップロードの際に通るテストであれば、特に GUI ツールとして提供する必然性はあまり感じなく、せっかくのツールなのにもったいないなぁ… と思ってます。何か機会があれば、導入してもらえるように何か言っておきたいです。
何はともあれ、来年はレビューの自動化にまたフォーカスが当たればいいなと思います。
問題点2 : Docs がたりない
Docs が足りないせいでテーマレビュー関連の情報を得るのがとても難しいです。いま現状ある資料として、一番取り上げられているのは、こちらの Required であり、日本語訳も作成した のですが、正直な話、これだけでは一体何が許可されされていないのかが分からないです。あまりにも抽象的すぎます。
同じ業界 (?) とも言える Themeforest の要求事項 なんかを見てみると超分かり易いです。見比べてみると一目瞭然です…。
この他にも、テーマレビューチームでは大事なことは meeting で決め、そのごとには meeting note は書かれてるんですが、まあ普通のテーマ制作者は見ないよね…
この meeting notes にはさらっとめっちゃ重要なことが書かれてて、例えば Unsplash の画像が使用できなくなった とか、3つ以上の重大な問題が見つかるだけでチケットがクローズされるようになった とかです。こういう大事なのはどこかにまとめておく必要がありますよね。
せっかくなので、有用でかついつも作者さんに見るように促している資料を載せておきます。
- レビューのはじめ方、ですが、レビュアーさんがチェックすること = 作者に要求されていること というわけですから、読んでみると色んな気付きがあるかも。
How to do a review (Draft) – Theme Review Team — WordPress - こちらも上と似たような資料です。
My theme review process – Theme Tips - サニタイズやエスケープに関するベーシックが解説されています。
Validating, Sanitizing, and Escaping – WordPress.com VIP: Enterprise content management platform - 具体的にどのようなサニタイズをすればいいのかがわからなくなったときのコードスニペットです。
code-examples/sanitization-callbacks.php at master · WPTRT/code-examples - なぜ関数名/クラス名のプレフィックスがいるの ? みたいな疑問から、プレフィックスが必要なものまで網羅している解説です。
Prefix all the things – WordPress Theme Review - テーマのコピーライト・ライセンス表記に関するサンプルの書き方と解説です。
Proper Copyright/License Attribution for Themes – Theme Review Team — WordPress
問題点3 : テーマのクオリティが低い
まあこれは先の2つとも関連する内容なのですが、見事に殆どのテーマのクオリティが酷いです…
ちなみにどれだけひどいかというと、コーディングスタンダードがどうこうとかそういう問題じゃなく、タブとスペースがしょっちゅう混ざってるとか、なぜかコアの関数が用意されているところでデータベースからデータを直接引っ張ってきていたりとか、PHP のエラーが出てテーマがインストールできないとか、まあそんなんです。作者さんのテーマへの意識が低すぎて涙出てきますね。
正直な話、具体的にどのようなことが必要かどうかが不明瞭・それをテストするツールがない状況でアップロードされるテーマというのはまあこんなものではないのかなぁという気はとてもします。こちらにも非があるとも言えるので、なんとも言えない感じはあります。
〆
ということで現在テーマレビューチームではこんな問題に対応できそうな人を募集しております !
というわけですので、まあなんやかんやで文句は言ってますが、僕はテーマレビューが好きでやってるわけですので、こんな現状も受け入れつつ改善されたらいいなぁ… 程度にレビューを続けております。
少しでもテーマレビューに関心の持つ人が増えて、レビューを始める人が増えてくれるととても嬉しいです。
ということで最後に宣伝… 程度に今まで書いたテーマレビューの参考になるような資料を載せておきます。これからテーマを作ってみたい人、今テーマがレビューを待っている人、レビュアーになりたい人、等々、上に書いた資料とともに目を通していただき、少しでも助けになればいいと願っています。
コメントを残す