WordPress5.0を機にWordPressの善し悪しを考える

WordPress5.0が出て編集画面のUIがGutenbergにより大幅に変わった。
これを機に今後もWordPressを選択するべきなのかちょっと考えてしまったので、WordPressの良いところとそうでないところを整理してみる。

主にプログラマ目線のものだが。

良いところ

  • 大量のテーマ
  • 大量のプラグイン
  • 運用実績が多い
  • 編集の操作に慣れているユーザーが多い
  • 安定性が高い
  • バージョンアップ時の後方互換性が高い
  • コンテンツ生成の待ち時間がない(静的CMSとの比較)
  • カスタム投稿タイプ、カスタムフィールド、細かいフックポイントなど、大幅な機能カスタマイズに耐える点

まず玉石混淆ではあるが大量のテーマとプラグイン。
最近は有料で高機能なテーマが増えていて、良いテーマをベースに子テーマを作る、という形で進めていけば少しのカスタマイズで望む結果が得られる。
プラグインも求めている機能ドンピシャのものがあれば開発の手間が大幅に減る。

次に運用実績の多さ。これはユーザーの多さにつながり、教育コストの低減に繋がる。ユーザーから見た場合も学習コストが少なく済む。
また安定性の高さ、バージョンアップ時の後方互換性の高さは長期の運用を見込むと重要な部分。

コンテンツ生成の待ち時間がない、というのは静的CMSとの比較で有利な点。
一般的に静的CMSの待ち時間はコンテンツが増えてくるほど厳しくなっていくということもあり。

カスタム投稿タイプ、カスタムフィールド、細かいフックポイントなど、大幅な機能カスタマイズに耐える点。
管理画面に独自のUIを作ることも簡単なので、作ろうと思えばリッチなUIも作れる。
開発する側にとってはもはやひとつのフレームワークに等しい。
ただあんまりやり過ぎてCMSの域から外れているような例を見ると、他のフレームワーク使った方がいいんじゃね?と思うケースもあるが。

悪いところ

  • 大量のテーマ
  • 大量のプラグイン
  • 重い
  • 関数の一貫性のなさ

これもまずは大量のテーマとプラグイン。玉石混淆なので良いものを探すのが大変という意味で。
探した方が速いか、作った方が速いか、いつも悩みどころである。

次に重さ。不用意に構築すると重くなりやすい。
ただ注意して構築すれば問題になるほど重くはならない。鍵はDBアクセスが増えすぎないようにすること。
またCloudFrontなどのCDNを前段に立てることで大量アクセスにも容易に対処できるため、悪いところに上げてみたもののそんなに問題とは思っていない。

関数(またはテンプレートタグ)の一貫性のなさはプログラマとして予想を裏切られるのが割とストレス。
プログラマがWordPressの裏側を触って呪いの言葉を吐いているのを見かけるが、まったくもっともなことだと思う。経験のあるプログラマほどおそらく辛い。

例えばタイトルに関してはそのまま表示するthe_titleに対して値として取得するget_the_titleがあり、そしてパーマリンクに関してはそのまま表示するthe_permalinkがある。さて当然パーマリンクを値を取得するのはget_the_permalinkだなと思うでしょう。残念。get_permalinkなのだ。
えー。

慣れれば苦にはならないが、と言う以上の擁護はできない。慣れるまではけっこう胃に来た。最近追加された関数はマシになっていると言う気はする。

今後の選択はどうする

Gutenbergの新しいUI対するユーザーの拒否反応は大きくやや混乱している状況。
Classic Editorで従来の表示と使い勝手を維持できるとは言え、公式が舵を切った以上Gutenbergが本流になっていくと思われる。

そうなっていくとまたユーザー教育しんどいなと言うのが今後どうするか、ということを考えただいたいの理由。

ただそれ以外の良い部分は変わらないし、悪い部分にも対処はできるので今後も選択肢としては有力だろうなと言うのが結論。

Gutenbergもけっこうよくできていると思う。
従来は定型の複雑なHTMLを書くか対応するカスタムフィールドを用意して表示していたような箇所も、そういうフォーマットを持ったカスタムブロックを作って対応できるので編集が直感的でやりやすくなる。ユーザーが慣れていくにつれGutenbergの方が快適になるだろう。なるんじゃないだろうか。
あとMarkdownコピペするとそれがちゃんとパースされてブロックができたりして面白いし。最終手段としてはこれまで通りソースで書くこともできるしね。

静的CMSという選択

個人的には静的CMSと言うか静的サイトジェネレータの方が好きなんですけどね。
長く運用していると構築時間すごく長くなるんで困るわけですよ。

ただ静的サイトジェネレータで各ページのヘッダやメニュー、フッタなどの共通部分をReactのようにコンポーネントで管理できるものがあれば、ひとつ記事を追加した拍子に全ページリビルドとかする必要がなくなる(リビルドが必要かどうかの判定の必要すら無くなる)ので、その問題は解決するかもしれない、と最近Reactを使って思った次第で。

Gatsbyとかまさにそれっぽい。他の何かを組み合わせないとダメみたいだけど。と言うかWordPressのAPIとの組み合わせがありなのか。

とにかく高速な静的構築&ユーザー向けにわかりやすい編集画面が準備できればってところかなあ。