なお 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 にして、新たに外部サービス呼び出しを提供します。必要ならばその外部サービスを別の物に差し替えることができます。例えば単体テスト時にはダミーのサービスに置き換えることなども可能になります。
依存ソフトウェアへの考慮
一方、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個以下の問題しかなかったと発表されています。
Drupal 7 はどうなるのか?
下図のように2021年11月に Drupal 7と8はEnd of Lifeとなる予定です。
従って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 へアップデートできることを期待してリリースを待ちたいと思います。
関連コンテンツ
- Drupal Core の脆弱性について (SA-CORE-2023-006)
- Drupal 導入前に必ず考えたい「保守」のこと
- Mass.gov: 市民中心の最高のウェブサイトを Drupal で実現
- Drupal Core の脆弱性について (SA-CORE-2023-005)
- Drupal Core の脆弱性について (SA-CORE-2023-004)
- Drupal Core の脆弱性について (SA-CORE-2023-003)
- Drupal Core の脆弱性について (SA-CORE-2023-002)
- LocalGov Drupal を紐解く
- Drupal Core の脆弱性について (SA-CORE-2023-001)
- Group モジュール v2.0.0 / v3.0.0 の新機能
Drupal 初心者講座バックナンバー
- Drupal 9/10 初心者講座
- 第 1 回 歴史に見る Drupal の DNA
- 第 2 回 Drupal はフレームワークか?CMS か?他の CMS との比較
- 第 3 回 Drupal の特徴
- 第 4 回 Drupal 9 / 10 のインストール (1)
- 第 5 回 Drupal 9 / 10 のインストール (2)
- 第 6 回 Drupal にコンテンツを投稿してみる
- 第 7 回 Drupal のボキャブラリとタクソノミーの使い方
- 第 8 回 コンテンツ管理における Drupal と他の CMS との比較
- 第 9 回 Drupal のブロックシステム
- 第 10 回 Drupal の標準クエリビルダー Views の使い方
- 第 11 回 Drupal と他の CMS のクエリビルダー機能を比較
- 第 12 回 Drupal の多言語機能と他の CMS やサービスとの比較
- 第 13 回 Drupal の権限設定と WordPress や Movable Type との比較
- 第 14 回 Drupal のテーマシステムについて
- 第 15 回 Drupal の拡張モジュールの選定と使い方
- 第 16 回 Drupal をもっと知りたい方に向けた各種情報