Drupal を永久にアップグレードしやすくする

Drupal の創始者ドリース バイテルト氏のブログを日本語で紹介するコーナーです。

the-promise-of-making-drupal-upgrades-easy-742x1114

Drupal が成功し続けてきた主な理由のひとつに、将来を見据えた大きな変更を常に行ってきたということがある。その結果、Drupal は 15 年以上にわたって時流に乗り続けてきた。こんな CMS は非常に少ない。ただ、そのマイナス面として、僕たちは Drupal のメジャー リリースごとに、そうした変更に対応するための大きな痛みに耐え抜く必要があった。学習曲線、そして、あるバージョンから次のメジャー バージョン(たとえば、Drupal 7 から Drupal 8)へとアップグレードするパス(工程)の難しさも、Drupal(の普及)の勢いを鈍らせる。理想をいうなら、刷新を速く進めることができて、同時に Drupal 8 から Drupal 9 へのアップグレード パスも学習曲線もスムーズにできるのがいい。僕たちはその両方を実現する方法を見つけたと思う!(学習曲線:学習の難易度を時間軸に沿って示すカーブ。Drupal は他の CMS と比べて学習曲線が険しい、すなわち習得するのが難しいといわれる)

 

Drupal 8.2 から Drupal 8.3 へのアップグレード

Drupal 9 へのアップグレード パスについての話をするには、その前にまず、Drupal 8 のリリースはどうやっているのかを理解することが大事だ。Drupal 8 のリリースをもって、僕たちは Drupal コアに対して「持続的な刷新モデル」を使うことにした。すなわち、ユーザーは、新しい機能群を何年も待つのではなく、6 か月ごとに相当なサイズの機能的な進歩を受け取るかたちになった(まとまった機能群が完成するのを待ってから取り入れるのではなく小規模の機能を順に採用していくということ)。さらに、モジュール、テーマ、ディストリビューションに関して、6 か月ごとのリリースから次の 6 か月のリリースへのスムーズなアップグレードを提供することにした(from one six-month release to the next)

この新しいアプローチは実にうまく機能し始めている。8.1 と 8.2 のアップデートが済み、8.3 もリリース間近だが、僕たちは BigPipe などいくつかの安定した改良と新しいステータス レポート ページを追加した。また、アウトサイド・インワークフローレイアウトなどのための試験的な改善も入った。8.4 ではメディアの重要な改良も加わる予定だ(「アウトサイド・イン」は、管理画面に入ることなく通常のコンテンツ ページの各部をクリックして内容を編集できる機能)

いちばん大事な点は、こういった新機能のために 8.2 から 8.3 へとアップグレードするのは、単にバグフィックスやセキュリティー リリースでアップデートするよりもずっと面倒になるわけではないということだ。

 

Drupal 8 から Drupal 9 へのアップグレード

Drupal コア コミッターと開発者の間でかなりの議論を重ね、Symfony などのプロジェクトを調べた結果、僕たちは、Drupal のマイナー アップグレード モデル(例:Drupal 8.2 から 8.3)の利点をメジャー アップグレード(例:Drupal 8 から 9)にも転用できると考えている。Drupal 8 から 9 へのスムーズなアップグレード パスと学習曲線を実現しながらも刷新を続けていく方法があると僕たちは見ている。

達成する方法は次のとおりだ:Drupal 8 のリリース(バージョン)には新機能および後方互換の変更を導入し続けていく。このプロセスにおいては、古いシステムを非対応扱いにしなくてはならないときがある。しかし、古いシステムをすぐに外してしまうのではなく、そのまま置いておき、モジュールのメンテナーに対して、新しいシステムへとアップデートするよう働きかける。つまり、(古い)モジュールやカスタム コードは引き続き機能するわけだ。そして、刷新が進むほど、Drupal 8 の中には非対応のコードが増えてくる。時がたつにつれ、後方互換性を保つのがますます複雑になってきて、いつかは、Drupal 8 の中に非対応のコードが多すぎるというポイントに達する。そこで、僕たちは非対応部分のシステムを切り離すことを選択し、それを Drupal 9 としてリリースする。

これはすなわち、Drupal 9.0 は最後の Drupal 8 リリースとほとんど同じで、単に非対応のコードを差し引いただけになるはずだということを意味する。モジュールでいえば、Drupal 8 の最新 API を利用し、非対応のコードを使わないようにしていれば、Drupal 9 でも機能するはずだということになる。Drupal 8 の最後のバージョンから Drupal 9.0.0 へのアップデート(アップグレード)は、Drupal 8 のマイナー バージョン間のアップデートと同じようにたやすくできるはずだ。また、Drupal 9 は、革新を再び、グンと速く進め始めることができる、すっきりとした土台になるということでもある。

それなら(Drupal 8 の最終バージョンと変わらないのなら)なぜ Drupal 9 にアップグレードするのか?それは 9.1(以降)ですばらしい新機能を得るためだ。Drupal 9.0 が出たあと、Drupal 8 には新しい機能が追加されない予定だ。新機能は Drupal 9.1、9.2…といった、あとのバージョンに入ることになる。

この新しいアプローチを最大限に利用するため、僕たちはさらに 2 つの改良を施す必要がある。まず、モジュール開発者が最新の API を使っている場合には全く同じモジュールが Drupal 8 でも Drupal 9 でも動くよう(現在開発中の)コアを変更することが必要だ。また、Drupal 6、7、8 から将来的なすべてのリリースへのフル データ移行(パス)も用意する必要がある。Drupal 9 以前に行った変更があっても、貢献モジュール、カスタム モジュールが最新の Drupal 8 API を利用しているかぎり、その時点で最新のサイトとモジュールであれば、9.0.0 がリリースされた日に、すんなりとそれ(9.0.0)を使い始めることができるようにだ。

 

Drupal 7 ユーザーにとっての意味は?

Drupal 7 で順調に稼働しているサイトは 100 万を超えるが、そのなかのひとつを運営している人にとっては、単に大きなアップグレードが(将来)もう1つだけ控えているということになるかもしれない。

Drupal 7 から直接、Drupal 9 へ移行しようと思っている人は、検討し直した方がいい。この新しい(開発)モデルでは(まず)Drupal 8 へとアップグレードした方が得かもしれないからだ。Drupal 8 へと移行してしまえば、そのあとのアップグレードはずっとシンプルになるだろう。

Drupal 7 から 8 へのデータ移行(パス)を完成させるには、やるべきことがまだまだあるが、2017 年 10 月にリリース予定の Drupal 8.4.0 が、その移行に完全対応する最初のマイナー リリースになるかもしれない。

 

Drupal 開発者にとっての意味は?

モジュールまたはテーマの開発者は(Drupal の)マイナー リリースのたびに最新の API にアップデートし続けていける。非対応になったコードを使わないようにすれば、作ったモジュールは Drupal 9 がリリースされた日に「Drupal 9 互換」ということになるだろう。開発者が非対応のコードを見つけてアップデートしやすくなるようにするための計画もある。

 

Drupal コア貢献者(コントリビューター)にとっての意味は?

自分は Drupal コア貢献者で、Drupal コアに新しい改良を採り入れたいという場合は、Drupal 8 が打ってつけの場だ!後方互換性レイヤーがあるので、Drupal 8 では、かなり大きな変更でさえも可能になっている。

 

Drupal 9 はいつリリースされるか?

(リリース時期は)まだわからないが、それほど気にかけるような問題でもない。革新的な Drupal 8 リリースが計画どおり 6 か月ごとに公開され、Drupal 9 へのアップグレードは容易になるはずだ。Drupal 9 は近いうちにリリースされることはないと思う。というのも、Drupal 8 用の作業として(採り入れるべき)機能が山ほどあるからだ。(Drupal 9 については)詳細がはっきりしてきたら、また追ってお知らせするつもりだ。

 

謝辞

このブログ記事に貢献してくれたアレックス ブロンステインAlex Bronstein、アレックス ポットAlex Pott、ガボア ホイチGabor Hojtsy、ナサニエル キャッチポールNathaniel Catchpole、ジェスJess。愛称 xjm)の各氏に感謝の意を表したい。

 

drupalDrupal の詳細については下記をご覧ください!
https://sios.jp/products/it/oss-drupal.html

本ブログは、株式会社アウトソーシングテクノロジーにて翻訳しています。

▼株式会社アウトソーシングテクノロジーのブログページはこちらから!

http://www.webgogo.jp/blog

Be the first to comment

コメント投稿

Your email address will not be published.


*