Toro_Unit

フリーランスのフロントエンドエンジニア、WordPress エンジニアです

結局 WordPress のメジャーアップデートをいつ実施するのが適切なのか?

Categories:

WordPress 7.1 でテックリードを務めた浜野さんがこんな話をしてました。

実際に、たびたびマイナーリリースを待ってからみたいな話は聞きますし、気持ちとしては理解できる「WordPressはマイナーリリースがでるまでアップデートしない」ってのがそもそも戦略として妥当なのかというのはそもそも考える必要があるのではないかなと。

WordPress のセキュリティポリシー

Ubuntu とかだと、ポイントリリース(マイナーアップデート)が出るまでメジャーアップデートを有効にしなかったりその辺はプロダクトの性質やら開発の方針とかで色々ポリシーがあると思います。

WordPress はどうかというと、メジャーリリースが出たらそのタイミングでアップデート可能になってます。まぁ OS と CMS じゃそりゃ当然違うわけです。Ubuntu だと LTS のサポートは5年ありますが、WordPress が公式にサポートしてるのは最新バージョンだけだったりします。

WordPress の最新バージョンのみが公式にサポートされていますが、セキュリティチームは、古いサイトが自動更新を介して重要なセキュリティ修正を受けられるように、好意で古いバージョンにも修正をバックポートしています。

文字通り解釈すれば、7.1 がリリースされた時点で 7.0 はもうサポート外というわけです。実際のところ 4.7ブランチでもアップデートがまだ提供されているわけではありますが、動作保証とかそういうわけでもないです。

また、長いことプラグイン作者やってますが、そう簡単に最低動作バージョンを変えることもしないですし、サポートを切るとしても流石に過去2バージョンくらいは一応サポートするか、みたいなスタンスが結構多いのではないかなと。

「マイナーリリースまで待ったから大丈夫」は本当なのか

当たり前の話ではありますが、マイナーリリースが出たから必ずバグがなくなるというわけでも無いです。当然マイナーリリースを重ねればそりゃ改善されていく訳なんですが。

先日の wp2shell なんかは 7.0.1 で発見されてますし、こちらも影響が大きかった WordPress の WP-API が搭載された 4.7 では権限昇格の脆弱性がありましたが、これが修整されたのは 4.7.2 です。じゃぁ x.x.2 まで待つのが正しいの?という話になるかというと、当然そんなわけ無いわけです。たまたまそのタイミングで発見されただけに過ぎません。

また、流石にもうやらないでしょうが、4.9.xの頃は「ブロックエディターをリリースするまで 5.0 を出さない!」としてしまったせいで4.9.xが1年以上続き、通常だったらメジャーリリースで入るようなものがマイナーリリースとして出荷されたこともありました。

結局、バージョン番号の振り方やそれの位置づけ自体プロダクトによって全然異なるので、「マイナーリリースまで待った方がいい」がいつでも正しいわけではないはず。

また、待つことで当然プラグインなどの更新も貯まり検証コストが増え、アップデートに関するコストが上がっていきます。そうしてるうちに次のメジャーリリースが増えて、結果アップデートがされなくなっていった WordPress をたびたび見てきました。メジャーリリースのバグを踏むより、そちらの方がよほどリスクが高い状態なのではと考えてます。

「プラグインやテーマのサポートを待ってから更新」について

一般論としては割と真っ当だと思う話だと思うんですが、WordPress に限っては基本的には待たずに更新するのが良いのかなと思います。

後方互換をかなり大事にしているので、古い関数も20年以上残し続けていたりします。また過去に Gutenberg でプルリクエストを出した際に、どうしても hook を残せないことがありましたがそのときは影響を受けるプラグイン作者に連絡を入れたりしてました。公式レポジトリ掲載しておくとこういうこともあるんだーと思いました。

なので、WordPress 本体を更新したところでテーマやプラグインが不具合を起こすってのは結構希なケースではあります。( CSS とかでテーマ作者が苦労してる話はたまに聞いたりしますが。)

そうなるとプラグイン作者としてはまぁ別に動いてるしいいかってなってプラグインの更新を放置しがちだったりもします。readme.txt の Tested up to の数字を更新するだけなのですが、その「更新するだけ」がなかなかできない。「CI も通ってるし手元で動いてたし、手が空いたときにでもやろう」ってなってそのまま忘れてたり。別に全部のプラグインがそうではないんですが、有名なプラグインでも結構そういうことが起きてるのはそう珍しい話でもないです。

そうなってくると、「プラグインやテーマのサポートを待って」というのは結局いつのタイミングでやればいいのかが不透明になってきます。

じゃぁ結局どうするのが良いのか

そのサイトの事情次第としか言えないのですが、まずそのサイトの保守に見合ったアップデート戦略を立てるのが大事なのかなと。極論、小規模なサイトで謝って済む場合であればメジャーリリースもプラグインも自動アップデートという戦略もありだと思います。実際にそういう運用にしてるクライアントワークもあります。

それができないのであれば、「検証用の環境で Beta3 や RC が出た段階で検証を開始し、リリース後一週間以内くらいでアップデートを適用する」、とかが良いのかなと思ってます。

また WordPress プラグインの方が基本的にはコアより問題を起こすのではという気はします。玉石混交ですし。そもそもよっぽどのことが無い限り他のプラグインとの結合テストなんてプラグイン開発側でやらないですし。

検証コストが少ないうちにちまちまアップデートをしていくのが、結局のところ大事です。当たり前の回答なんですが、結局動かしてみないことにはわからないわけで。そのためには、いつでもサクッと検証できるような環境を含めて保守したりが必要になってきますが、最近だとステージング機能を提供しているレンタルサーバーも増えましたし、昔よりはその辺が大幅にやりやすくなったはずです。

  • 「マイナーリリースまで待ったから大丈夫」は別に根拠ない。
  • 「プラグインやテーマのサポートを待ってから更新」も微妙、とりあえず検証しよう。
  • 溜めるとコストが増大していくので、短いスパンでコストが小さいうちに片付ける。

そんなことを、溜まった洗濯物の山とか食器の山とか気がついたら溜まりに溜まってる段ボールなどから目をそらしつつ思う次第です。