ANNAIマガジン
D9 Road Map
この記事の目次

なお DDD2019 については別記事をご参照下さい。

セッションの詳細内容は同氏のスライド資料にありますが、その内容に沿って説明していきます。また、図もその資料から引用しています。

Drupal 8で改善されたこと

Drupal 7 に比較して以下の点が改善されています。

Semantic Versioning

コアのバージョン番号が3階層になり8.x.yと表記することになりました。x のレベルがアップするマイナーリリースでは何らかの機能がアップデートされますが、後方互換性は維持されます。

スケジュールされたリリース

マイナーリリースは6ヶ月毎にスケジュールされ、事前に新機能がアナウンスされます。

実験的モジュール

ある機能の最終リリースまでにまだ時間がかかる場合は実験的モジュールとして公開されます。そのモジュールによる後方互換性は維持されます。

何故 Drupal 9 が必要か?

以下のことを実現するために Drupal 8 のバージョンアップが必要です。

コードのクリーンアップ

廃止予定(deprecated) API の後方互換性のためのコードを削除することでコードをクリーンアップします。

依存するサードパーティーソフトウェアのアップデート

主要なものとして Symfony, CKEditor, jQuery と Twig があるがこれらを新しいバージョンにアップデートします。
Symfony は現在 Symfony 3 を用いていますが、2021年11月にサポートが終了するので、Symfony 4 または 5 を用いる予定です。

Drupal 9 の開発プロセス

Deprecated API の導入

Drupal 7 から 8 への移行のようにかつてのメジャーバージョンは全く新しいコードベースで開発していました。しかし今後は新しいメジャーバージョンはその前のコードベースを引き継ぐことにしました。

現行の API を大幅に改善したり、新機能を追加したい場合には新しい API を追加し、現行の API の互換性は維持したままその API を deprecated(廃止予定)とします。

例えば file_unmanaged_copy() のようなグローバル関数を deprecated にして、新たに外部サービス呼び出しを提供します。必要ならばその外部サービスを別の物に差し替えることができます。例えば単体テスト時にはダミーのサービスに置き換えることなども可能になります。

Deprecated API

依存ソフトウェアへの考慮

一方、Drupal が依存するソフトウェアのメジャーバージョンアップに備えるために、依存ソフトウェアの deprecated API は使用しないようにします。例えば Drupal 8.7 は Symfony 3 ベースですがほぼ Symfony 4 互換になっています。

バージョンの変遷

バージョンの変遷は下図のようなイメージです。(図は上記スライド資料から引用。これ以降の図も同じ)

9.0 API では deprecated API は削除されて後方互換性は失われます。

バージョンの変遷

Drupal 9 への移行準備

互換性のチェック方法

Deprecated API はソースのアノテーションに @deprecated というタグが追加されます。PHPStorm などの IDE ではこのタグをもとにして deprecated API についての警告を表示します。

Deprecated API チェック用のコマンドdrupal-checkが GitHub に公開されています。あるいはUpgrade Statusモジュールを用いれば管理画面上でモジュールの互換性がチェックできます。

互換性の現状

2019年第4四半期にリリースされる Drupal 8.8 でDrupal 9 における deprecated API が全て明らかになります。2020年6月の Drupal 9 のリリースまで6ヶ月以上の期間がある予定です。

2019年3月に drupal-check を用いて互換性を調査したところ7000以上のモジュールに互換性問題が発見されましたが、全体の48%には問題がなく、35%には5個以下の問題しかなかったと発表されています。

D9の互換性データ

Drupal 7 はどうなるのか?

下図のように2021年11月に Drupal 7と8はEnd of Lifeとなる予定です。

D9 road map

従ってDrupal 7 のサイトはまず Drupal 8 に移行しなければなりませんが、以下のようなツールを利用すれば Drupal 8 に移行しやすくなります。

Upgrade Status モジュール

https://www.drupal.org/project/upgrade_status 参照。

インストールしたモジュールが新バージョンに対応しているかどうかが報告されます。

Module Upgrader

https://www.drupal.org/project/drupalmoduleupgrader  参照。

上のモジュールと同様のことがコマンドラインで実行できます。

Migrate モジュール

本来は他のCMSからの移行ツールですが、Drupal 7 のコンテンツを Drupal 8 に移行するためにも使用できます。

まとめ

Drupal の Founder である Dries Buytaert 氏が Drupal 9 について
“The big deal about Drupal 9 is … that it should not be a big deal.”
とコメントしています。
「Drupal 9 で何が一番大事件かというと・・・多分大きな手間はかからないということだろう」というような意味合いですが、Drupal 7 から 8 への移行で大変苦労をしたエンジニアには刺さる言葉だと思います。

ということで周到な事前準備を完了しておけばスムースに Drupal 9 へアップデートできることを期待してリリースを待ちたいと思います。

この記事を書いた人 : Kuniyoshi Tone

ANNAI株式会社

企画推進・戦略立案を担当。あべのハルカスを遠くに眺めて大阪からリモートワークしています。好きなモジュールは今のところGutenbergとTomeです。

 

関連コンテンツ