Drupal10.3とDrupal11.0の新機能
概要
2024年7月現在のDrupal10.3 と Drupal11.0 の新機能についてまとめます。
Drupal11.0は原則Drupal10.3から非推奨のコードを削除したバージョンなのでほぼ同じものと考えているのですが、リリース日が異なっていることもあり差異があるかもしれません。
また Starshot プロジェクト が急激な勢いで進行していて、11系の時バージョン Drupal 11.1 に大きな機能追加があると想定しています。 参考
Drupal10.3 (Drupal11.0) の新機能
ユーザ ID = 1 の特権剥奪設定
インストール時に作成されるユーザについて Super Admin User として ロールが付与されなくてもAdministratorロール と同等の 扱う機能があります。この特権を services.yml の設定でOFFにできるようになりました。
個人的にはある程度サイト構築が終わった段階で特権OFFに設定したいなと思います。
State API のキャッシュ有効化
key value をの値を同期せず各環境で保持する仕組みとして State API があります。メンテナンスモードのON/OFF値、管理画面から設定した twigのデバッグモードのON/OFF値 、Drupal の cron の実行した日時の保存などに使われています。それがキャッシュ機能を持つ、という話です。
カスタムモジュールの実装でも意識することはおそらくないほどCoreで自動的に処理してくれるものなのと、Drupal11では強制的に有効化されるそうなので、10.3のうちにいったん有効化し11系にアップグレードする前に様子を見るのがいいように思います。
ログアウトの CSRF 導入
いままでログアウト /user/logout はGETリクエストで実行可能だったのがCSRFのトークンを要求するようになりました。ログアウトのURLにデフォルトでCSRF用のトークンが付与されます。もしtwigなどにべたに記述された <a href="/user/logout">ログアウト</a> のようなリンクを実行した場合、ログアウト前の確認画面が表示されるようになります。確認画面のPOSTデCSRFトークンが付与され、ログアウトできます。
フォームのレンダリングがキャッシュ可能
POSTのページはレンダリング要素がのキャッシュできなかったのですができるようになりました。できるようになったのですが条件があり、まず Cache API と Auto-placeholdering を理解する必要があります。最近レンダリングキャッシュを追いかけてある程度理解できたので後日記事を書こうと思います。 Navigationモジュールの登場
管理メニュー表示用のモジュール、 NavigationモジュールがCoreに登場しました。
まだ Experimental ですが、今後 Admin Toolbar から Navigationモジュール に置き換わっていくのではないかと思っています。 Single Directory Components がモジュールからCoreデフォルトへ
Single Directory Components 機能がモジュールではなくデフォルトで使用可能になります。Single Directory Components 機能については以下を参照するとわかりやすいです。
すでに Olivero テーマでNodeのteaser表示について Single Directory Components で実装されているので興味がある方はどうぞ。
Workspacesモジュール
Workspacesモジュールの Experimental が外れて正式版になりました。後日機能を調べます。
Layout Builder の機能改善
Layout Builder モジュールを利用しているサイトのみですが、10.3にアップデートすると Layout Builder Expose All Field Blocks モジュールが有効になります。このモジュールはフィールドの値を表示するためのブロック生成に関する機能改善を一時的にOFFにするの Feature Flag のためだけの存在します。まずモジュールを無効化し Layout Builder で表示しているページでエラーやワーニングがなければOK、として良いと思います。もし興味がある方、問題が発生した方は次のissuesを追いかけてみてください。
(追記) profile依存の削除
インストール時に選択した標準、最小、Umamiなどのプロファイル情報ははサイト構成に残っていますが、モジュールのアンインストール画面より削除することができるようになりました。既存のサイト構成からインストールするためのサイト構成一式を作ったことがある人ならこの機能の嬉しさがわかるはず。2024年7月のDrupal Meetup Tokyoで歓喜の嵐でした。
Drupal11の概要
Drupal11の概要を列挙すると以下になります。PHPのバージョンとDBのバージョンが面倒といった印象です。
PHP8.3以上
Drupal10はPHP8.1 〜 PHP8.3 までサポート
DBのバージョン
MySQL 8.0
MariaDB 10.6
PostgreSQL 16
SQLite 3.45 with the json1 extension
Webサーバ IIS がサポート対象外へ
Coreから外れてContributed へ移動するモジュール
Actions UI
Activity Tracker
Book
Forum
Statistics
Tour
Drupal11のアップグレードはいつやる?
2024年7月の時点でPHPとDrupalのマイルストーンは以下です。
2024年12月ごろ ・・・ PHP8.4が(おそらく)使用可能
2025年12月31日 ・・・ PHP8.1 がEOL
2026年6月 ・・・ Drupal 10 の最後のバージョン 10.5系 が EOL
2026年12月31日 ・・・ PHP8.2がEOL
EOLを考慮してPHPのバージョンとDrupal11のアップグレードをどーんと実行するのであれば、2026年1月から6月の間にPHP8.3 もしくはPHP8.4 & 11系へアップグレードだと思います。2023年の後半にDrupal9のEOL対応を行ったプロジェクトも多いと思いますので、そこから2年後の2025年の後半にアップグレードを予定するのもいいかもしれないです。
また細かくステップを踏むのであれば、「Drupal10.3 へアップデート」「Drupal10.4や10.5へアップデート」「PHP8.3アップデート」「Drupal11へアップグレード」を2026年6月までに段階を踏んで進んでいくのが良さそうに思います。
10.4、10.5 はセキュリティアップデートの予定なのでアップデート作業は少ないと思いますが、10.5 が出ると10.3がEOLなので早い段階で11.0 にできるならしてしまう方がいいのですが正直、Drupal11のアップブレードのタイミングはDrupal11系に対応したContributedモジュールの対応次第でタイミングが左右されます。2024年7月の時点では不明です。
追記: 11.1に大きい機能追加が見込まれることから10.4から11.2 、10.5から11.3 は少し難儀かもしれません。段階を踏む場合は次のようになるかもしれません。
まずPHP8.3 と Drupal10.3 アップデート
11.0 から 11系最新バージョンへアップデート
終わりに
この記事はDrupal Meetup Tokyo や Drupal11の正式リリースを見て更新していきたいと思います。