Drupal 11.4.0が公開されました

この記事は以下の記事を翻訳し、掲載しています。
出典:https://www.drupal.org/blog/drupal-11-4-0

Drupal 11の4回目の機能リリースでは、パフォーマンスがさらに大きく向上しました。同じリクエストを処理する場合、Drupal 11.0および10.6と比較して、データベースおよびキャッシュへのアクセス回数は約3分の1に削減されています。また、JavaScriptとCSSの圧縮効率が15~25%向上したほか、翻訳ファイルの処理速度が大幅に改善され、新しいネイティブのコマンドラインインターフェースの追加や強化されたパスワードハッシュ機能など、多数の改善が含まれています。

Drupal 11.4.0 available

Drupal 11.4の新機能

過去10年で最大のパフォーマンス向上(再び!)

Drupal 11.3では、「過去10年で最大のパフォーマンス向上」と発表しました。Drupal 11.4は、再びこの10年で最大のパフォーマンス向上と言えるリリースです。

Drupal 11.4では、エンティティフィールドの読み込み方法が最適化されたことにより、さまざまなリクエストにおいて、Drupal 11.3と比較してデータベースクエリが半減しています。

また、完全にコールドキャッシュの状態でも、Drupal 11.4が実行するデータベースおよびキャッシュへのアクセス回数は、Drupal 11.0または10.6と比較して約3分の1に抑えられ、数百ミリ秒の短縮につながっています。

エンティティの読み込みに加えてエンティティ一覧のクエリも、テーブル結合の数を削減することで大幅に改善されました。これにより低速なクエリが減少します。特にJSON:APIを使用しているサイトにメリットがあると考えられます。

メニューのレンダリングにかかるコストを削減し、レンダーキャッシュのヒット率を向上させるため、メニューブロックに祖先メニューリンク用のCSSクラスを生成しない設定オプションが追加されました。

Drupal CMSのセットアップをはじめとしたレシピの適用が2倍速に

レシピを使用したサイトインストールが従来の約2倍高速になりました。これにより、Drupal CMSやその他のサイトレシピのインストール体験が大幅に向上しています。また、個別のレシピを適用する場合も、処理速度が大きく改善されています。

翻訳ファイルの処理を最新APIで大幅高速化

インストーラー実行時やサイト運用中の翻訳インポートが大幅に高速化されました。66個のプロジェクトと38言語が使用されているテストサイトでは、Drupal 11.3と比較して翻訳更新の確認処理が87%高速化されています。

翻訳ファイルの管理およびインポートを担うAPIについても、大規模なモダナイズが実施されました。すべての.incファイルと、locale.module内の複数の主要なAPIが非推奨となり、パフォーマンスとコード構成を重視したオブジェクト指向(OOP)ベースの実装へと移行しました。

JavaScriptとCSSの圧縮率が15~25%向上

Drupalは、従来のgzip圧縮に加えて、集約されたCSSおよびJavaScriptファイルのBrotli圧縮に対応しました。Brotliは一般的にgzipより15~25%高い圧縮率を実現できるため、Brotli対応ブラウザではページの読み込み速度の向上が期待できます。この機能を利用するには、PHPのBrotli拡張機能ext-brotliが必要です。

core-recommendedで主要な依存パッケージのセキュリティアップデートを即座に適用可能に

drupal/core-recommendedパッケージでは、Guzzle、Twig、Symfony Polyfillsなどの依存パッケージについて、マイナーバージョンを固定しないようになりました。これまでは、より厳格なバージョン制約とComposer 2.9の依存関係の解決方法により、重要なセキュリティ修正を適用するには新しいDrupalリリースを待つ必要がありました。今後は、これらのセキュリティ修正をすぐにインストールできます。ただし、その時点で更新された依存パッケージは、まだDrupalコアとの十分な互換性検証が行われていない可能性があります。本番環境へデプロイする前に、十分な品質保証を実施してください。

実験的な、拡張可能な新しいネイティブコマンドラインインターフェース(CLI)

拡張可能な新しいコマンドラインインターフェース./vendor/bin/drが追加されました。Drupalには従来からハードコードされたコマンドを備えたCLIスクリプトが含まれていましたが、拡張することはできませんでした。この新しいインターフェースは、Drushのメンテナーを含むチームによって開発されています。DrushはDrupalをコマンドラインで操作するための定番ツールとして長年利用されてきました。今後は移行期間に入り、時間をかけてDrushはコアのdrCLIへと段階的に置き換えられていく予定です。既存のDrushコマンドを新しいCLIに対応させる方法については、関連ドキュメントを参照してください。

デフォルトの利用環境を簡素化

デフォルトのインストールプロファイルであるStandardが、よりシンプルな構成になりました。「記事(Article)」と「基本ページ(Page)」のコンテンツタイプはデフォルトでは含まれなくなり、コメント機能はデフォルトで無効になりました。今後のリリースでも、Drupalコアの初期構成をさらに簡素化する予定です。標準の管理インターフェースではNavigationモジュールがデフォルトで有効になりました。従来のToolbarモジュールも引き続き利用可能ですが、Drupal 12で削除される予定です。

Drupal Canvasなどのディスプレイビルダー向けにエンティティ表示管理を改善

コンテンツエンティティバンドルの「表示を管理(Manage display)」タブに、新しい概要ページが追加されました。 これまでは、このタブを開くとデフォルトの表示モードを編集する画面が表示されていました。Drupal 11.4では、バンドルで利用可能なすべての表示モードについて、ラベルや説明を一覧表示し、それぞれの有効・無効を切り替えられるようになりました。この一覧表示により、Drupal Canvasなどのツールとの連携が容易になります。

CKEditorが、集中して編集できる全画面編集に対応

CKEditorを使用するテキストフォーマットで、FullScreenプラグインを設定できるようになりました。このプラグインを有効にするとエディターをブラウザ画面全体に拡大できるため、余計な要素に邪魔されることなく、より快適にコンテンツを編集できます。

より強力なパスワードハッシュ方式に対応

パスワードのハッシュアルゴリズムを設定できるようになりました。新たに利用できるargon2idは、従来のbcryptと比べてより強力なハッシュ方式です。Drupal 12ではargon2idがデフォルトになりますが、Drupal 11.4から利用を開始できます。方式を切り替えると、ユーザーが次にログインした際に、パスワードが新しいアルゴリズムで再ハッシュ化されます。

PHP属性の活用範囲を拡大

コントローラーで利用するルートを、PHP属性を使って指定できるようになりました。モジュールのController名前空間(例:Drupal\example\Controller)にあるクラスで、Symfony\Component\Routing\Attribute\Route属性が指定されているものは、ルート定義として自動的に認識されます。また、1つのクラスに複数のルートを定義することも可能です。この機能は、従来の.routing.ymlによるルート定義を補完するものです。

また、エンティティのサブタイプごとに固有のロジックが必要な場合は、Drupal\Core\Entity\Attribute\Bundle属性を使用してバンドルクラスを定義できるようになりました。これまでは、このような処理を実現するためにentity_type_infoまたはentity_type_info_alterを実装する必要がありました。

.themeファイルを廃止し、残る.moduleファイルもわずかに

Drupalコアに含まれるすべての.themeファイルおよび.theme-settings.phpファイルが、PHPクラスへ移行しました。.themeファイルのサポートは、移行を円滑に進めるためDrupal 12でも引き続き提供される予定ですが、Drupal 13で削除される予定です。

多くの.moduleファイルもPHPクラスへ移行されました。現在では32個のモジュールが完全にPHPクラスへ移行しており、残るモジュールは11個です。(このうち4個は、Drupal 12で削除予定の非推奨モジュールとなっています。)

この取り組みは、2026年1月以降、26名の主要コントリビューターが57件のIssueに取り組むことで実現し、Drupalのコードベースの一貫性がさらに向上しました。また、この取り組みの基盤となった数十年にわたる多数のIssueに貢献した、多くのコミュニティメンバーにも感謝します。

フロントコントローラーがsymfony/runtimeを利用

Drupalは、Symfony Runtimeコンポーネントを統合し、ブートストラップ処理とリクエスト処理を分離しました。これにより、実行環境の準備(ランタイム)とリクエスト処理の責務が明確に分離されます。また、将来的にはFrankenPHPとのより優れた統合も可能になります。

新しいヘルパーメソッドでテストをより高速に作成

カーネルテスト向けの新しいトレイトHttpKernelUiHelperTraitが追加されました。このトレイトを利用すると、カーネルテストからテストサイトへHTTPリクエストを送信し、返されたコンテンツに対してアサーションを実行できます。これにより、多くのブラウザテストをカーネルテストへ置き換えられる可能性があります。ブラウザテストとは異なり、Drupalインストーラーを実行してテストサイトを完全に構築する必要がないため、カーネルテストは高速に実行できます。

新しい実験的な管理テーマ

管理テーマGinが、「Default Admin」という実験的テーマとしてDrupalコアに追加されました。このテーマには新しいダークモードオプションも含まれています。

現時点ではまだデフォルトの管理テーマではありませんが、安定版となった後は、Drupalバックエンドの標準テーマとしてClaroに代わって採用される予定です。モジュールのメンテナーは、自身のモジュールのUIをこのテーマでテストし、フィードバックを提供することが推奨されています。

画面例

コアメンテナーチームの更新

Drupal 11.3以降、Andrei Mateescu氏が暫定コアコミッター(General Core Committer)に任命され、さらにContent ModerationモジュールおよびWorkflowsモジュールのメンテナーにも就任しました。また、Edward Wu氏が暫定リリースマネージャーに任命されました。

また、多くの素晴らしいコントリビューターがサブシステムメンテナーの募集に応じ、新たに以下の役割を担当しています。

  • Moshe Weitzman氏がコアCLIのメンテナーに就任しました。
  • Derek Wright氏がContent ModerationおよびコアCLIのメンテナーに就任しました。
  • Kent Richards氏がアクセシビリティの新しいメンテナーに就任しました。
  • Max Pogonowski氏がMenu UIおよびトークンシステムのメンテナーに加わりました。
  • Jürgen Haas氏とSascha Eggenberger氏が、新しいDefault Adminテーマのメンテナーに就任しました。
  • Chris Weber氏がSettings Trayのメンテナーに加わりました。
  • Stephen Mustgrave氏がOptionsモジュールおよびMenu UIのメンテナーに就任しました。
  • Lucas Hedding氏がImageモジュールおよびAuthentication and Authorizationサブシステムのメンテナーに就任しました。
  • Christian López Espínola氏がLanguageモジュールおよびContent Translationモジュールの新しいメンテナーに就任しました。

この期間にメンテナーを退任された皆様にも感謝いたします。

  • Heather Brooke Drummond氏がBreakpointモジュールおよびResponsive Imageモジュールのメンテナーを退任しました。
  • Brian Gilbert氏がコアメンターの役割を退任しました。
  • Wim Leers氏がCKEditor連携、Editorモジュール、JSON:APIモジュール、およびRESTモジュールのメンテナーを退任しました。
  • Gareth Goodwin氏がUmamiデモのメンテナーを退任しました。

あなたも参加しませんか?

Drupalユーザーからコントリビューターへの第一歩を踏み出したい方や、チームのスキル向上の一環として学習リソースを共有したい方には、Drupalのスキルをさらに高め、コミュニティへ貢献できるさまざまな機会があります。詳しくは、Drupal Contributor Guideをご覧ください。

また、2026年9月に開催されるDrupalCon Rotterdamにもぜひご参加ください。セッションへの参加や参加者との交流に加え、初めてコントリビュートする方向けのメンタリングも受けられます。

Drupal 12は2026年12月7日の週にリリース予定

Drupal 12は、Drupal 11.5と同時に、2026年12月上旬にリリースされる予定です。Drupal 11.5は長期サポート(LTS)リリースとなり、Drupal 11のサポートは2028年末まで継続される予定です。