これだけは気をつけたい!WordPressプラグインを選定する際の注意点3つ

皆さん、こんにちは。エウレカでPairsコラムの開発を担当しています、香取です。

 

Pairsコラムの開発を担当して1年ほど経ち、最近になって過去の自分のコードを悔いる場面が出てきました。そんな、「初めからこうしておけばよかった」という反省も込めて綴ります。

 

私が開発しているPairsコラムは、WordPressをCMSとして利用しております。
このWordPressを利用するメリットの一つに、プラグインが豊富なため開発コストを削減できるというものが挙げられます。しかし、注意して利用しなければ 多くのデメリット もあります。
今回お話するのは、そんなプラグイン利用の際に注意したいこと3つです。

  • プラグインの品質
  • 不要な演算の増加
  • 不要なDBテーブルの増加

プラグインの品質

プラグインは誰でも自由に作成・配布できるため、そのほとんどが一般ユーザーによって作成されています。こんなひよっこの私でも作成・配布できてしまいます。当然、それらに品質保証などはありません。多くのユーザーによって利用されているプラグインであれば多くのバグ報告をもとに改善が重ねられるため、ある程度安全と言えそうですが 本当に問題がないか は利用者自身で確認する必要があります。
これは当たり前ですね。

不要な演算の増加

エンジニアなら、期待動作をより少ない計算量で実現したいもので、そのためにいくつもの苦労があるはずです。が、プラグインを利用することによって不要な演算を増やし、その苦労が台無しになることもあり得ます。その原因は、プラグインの利用目的が利用者によって様々であることにあります。利用者のAさんは、Aさんが求めた条件を十分に満たすプラグインを見つけてそれを利用します。しかし、そのプラグインに備わっている機能がAさんが求めた条件のみを満たしているケースは多くありません。つまり多くの場合、そのプラグインの機能はAさんにとっては 十分過ぎる のです。

 

Pairsコラムでもこんなことがありました。ある記事に対して関連記事を5件、タイトルとカテゴリのみ表示したいときでした。利用しようとしたプラグインは関連性の高い記事を5件表示でき、その記事のタイトルとカテゴリに加えて記事に関するメタ情報も表示するというものでした。このメタ情報を取得するためには、タイトルやカテゴリとは別に約20000行に及ぶ wp_postmeta テーブルから記事IDをもとに検索する必要があり、これを表示する記事数だけ繰り返すので O(20000×5)の無駄な計算 が行われることになります。結局、この時は別のプラグインを利用して実装することになりました。

2675

 

このように、プラグインを配布されているままの状態で利用すれば、 開発コストを削減する代わりに表示速度を遅らせる可能性 があります。真にパフォーマンスを意識すれば、プラグインを利用せずに実装するか、自分の利用目的に合わせてカスタマイズしたプラグインを利用する必要があるのです。
様々な需要や環境に適応させようとするほどこのような不要な演算が増えがちになるため、多く利用されているプラグインほどこの点に注意すべきです。

不要なDBテーブルの増加

サイトの改良を重ねるうちに、今まで使用していたプラグインが不要になるということはよくあります。そのような際に、対処によってはサーバーのメモリを圧迫してしまうので注意が必要です。便利なWordPressは、ブラウザの管理画面で不要なプラグインのチェックボタンを外すだけで利用停止できます。しかし、それだけの操作ではプラグインの削除は行われません。近い将来にまた利用することが予想されるなどの場合には利用停止だけでも良いかもしれませんが、それ以外の場合には不要なプラグインは削除しておくべきでしょう。

 

プラグインによってはDBにそのプラグイン独自のテーブルを作成するものがありますが、そのようなプラグインには特に注意が必要です。プラグインのフォルダを削除するだけでは当然ながらDBのテーブルは残るので、同時にテーブル削除も行わなければ不要なテーブルが増えてしまいます。そのテーブルのサイズが大きいほどサーバーのメモリを圧迫することになるのです。インフラの山下さんに怒られます。

まとめ

以上、WordPressの便利なプラグインに関する注意点を紹介しました。
サイトの規模が小さい間は、とにかく速く機能やコンテンツを充実させるべく積極的にプラグインを利用してきましたが、現在のPairsコラムでは扱っているコンテンツや記事数が増えており、開発コストだけではなくパフォーマンスをより意識しなければならなくなっているため、慎重にプラグインの利用を見極める必要があると考えています。そのためにプラグインの仕様をある程度理解しようとすると、すぐに導入し実装できるということはなく、開発コストを削減できるというメリットすら薄れてきます。ということで、今後のPairsコラムはCO2ゼロ、プラグインゼロのサイトを目指して参ります。よろしくお願いいたします。
皆さんも、プラグイン利用の際にはそのデメリットを理解した上でご利用ください。

 

以上、香取がお送りしました。

  • このエントリーをはてなブックマークに追加

エウレカでは、一緒に働いていただける方を絶賛募集中です。募集中の職種はこちらからご確認ください!皆様のエントリーをお待ちしております!

Recommend

新卒エンジニアが心がけるべき5箇条

Golang におけるサブテストの並行処理実装について