Moristapaper

WordPress

October 05, 2018

前職で WordPress を使った開発に2件関わったことがある。 WordPress を業務で使ったのはそのときが初めてで、どういうものなのかは知っていたけれど、アーキテクチャを含めほとんど何も知らない状態からのスタートだった。 それまでは WordPress は古くてダサいもので、何周か前の技術だという印象しかなかった。 WordPress の仕事をすることになったとき、正直あまり気乗りはしなかった。

WordPress はサーバーサイドのウェブアプリケーションフレームワークでよく採用される、MVC2 というアーキテクチャではない。 なのでコントローラーやモデルといったものは存在せず、データの取得もテンプレートの選択も、リクエストのパラメーターから「自動的に」決定し処理される。 「ルーティング」→「リクエスト解析」→「データ検索(WordPress ではメインクエリと言う)」→「テンプレート」の順に流れる、この既定の処理の最中に、フックとして処理を差し込んでいって変更する。 jQuery を使った、あるイベントの発火にフックして DOM を操作する処理に似ていると思う。

また、コア部分のメインクエリの実装は、 WP_Query という神クラスで4000行以上(3分の1くらいはコメントと改行だがそれでもデカい)あり、そのインスタンスがグローバル変数に格納されている。 データ取得系の関数はほとんどこのグローバル変数を利用しているし、この他にも合わせて20個ほどグローバル変数が定義されていてコードの見通しが悪い。

ここまで悪いところを挙げたが、この記事の趣旨は WordPress は良いものなので今後も使っていきたいということだ。 以下は WordPress の良い点について。

1つ目は、利用者が多いところ。 世界のウェブサイトの約30%は WordPress でできているらしい。 それだけ多くの人に信頼されて使われているプロダクトは本当にすごい。

2つ目は、エコシステムが成熟しているところ。 ドキュメントが整備されていることはもちろんとして、WordPress には先述したフックによる処理をプラグインとして公開することができる。 wordpress.org に公開されているものだけでも、56000個以上のプラグインが存在し、それらを利用するだけでもある程度のカスタマイズをすることができる。 wp-cli というツールもあり、プラグインのインストールや有効化、ユーザーの追加や権限の変更を CLI から行うこともできる。

また、Gutenberg という WYSIWYG エディタのプラグインもあり、これは React で書かれている。 次期メジャーバージョンの 5.0 では Gutenberg がデフォルトのエディタとなることになっている。 WordPress 本体もモダンな作りになっていくと嬉しい。 プラグインは便利なのだが、WordPress が PHP 5.2 をサポートしているので、(公開する)プラグインで名前空間を使えないのはとても残念。

3つ目は、1つ目とも関係しているが、案件が多いところ。 信頼されて認知度も高いので、「とりあえず WordPress で」と思っている人は一定数いる。 静的なウェブサイトを作る案件であっても、管理画面からコンテンツを編集できるようにカスタムフィールドを用意することは少なくないと思う。 キャッシュフローが不安定になりがちなフリーランスにとっては、飯の種となりやすいのが良いことだ。

あとオマケとしては、ポータビリティが高いところ。 開発環境で用意したサーバー構成とは異なる構成の、例えば PHP が動くレンタルサーバーとかでも wordpress ディレクトリを設置するだけで動いてくれる。


初めは「古くてダサい」と思っていたが、多くの人に愛されていて、使ってみると便利なところがあることもわかった。 他の技術や道具に対しても同じような気持ちを持つこともあると思うので、まずは毛嫌いせず、調査し使ってみると良いと思う。

以上、現状の WordPress の所感。


morishitter

プログラミングもするデザイナー / StylefmtPicostyle の作者 / CSS チョットデキル