【Drupal】Drupal11アップグレード ガイド〜Drupal 11へのスムーズな移行

sinceretechnology

 

こちらの記事は下記のサイトを参考にさせていただきました:

Drupal 11 Upgrade Guide: Essential Steps for a Smooth Transition

https://www.ispectra.co/blog/drupal-11-upgrade-guide-essential-steps-smooth-transition

 

 

 

はじめに

 

Drupal11が2024/8/2にリリースされてから既に2ヶ月が経過しました。 Drupal 10 のサポートは2026 年中下旬頃までです。まだ時間的な余裕があるとはいえ、アップグレードを成功させるには準備が重要です。また、準備を早く実施し、アップグレード プロセスを理解しておけば、リスクの回避と時間とリソースを節約の節約も可能になります。

Drupal11でいくつか重要な変更ポイント(下記参照)があります。その中でアップグレードの際に注意しないといけないのはPHPバージョンの最小要件がPHP8.3になったことです。

Drupal11の重要な変更ポイント

  • Drupal 11 では、新しい垂直ナビゲーション、レシピ API、強化されたワークスペースが導入されています
  • PHP 8.3のサポートとコアコードの最適化によるパフォーマンスの向上
  • コンテンツモデリング、ブロック管理、ファイル処理の新機能
  • 分離されたアーキテクチャの実装と JavaScript の最新化が容易になりました
  • 長期的な安定性を重視した合理化されたアップグレード プロセス

 

ここでは、Drupal の最新バージョン 11 への移行に向けて準備するための重要な手順をご紹介します。

 

 

 

Drupal 11への準備を早めに行う必要ある理由

 

  1. スムーズな移行 : 早期に準備することで、より段階的で中断の少ないアップグレード プロセスが可能になります。
  2. リソース管理 : 時間の経過とともにワークロードを分散すると、リソースをより効果的に管理できます。
  3. リスクの軽減 : 潜在的な問題を早期に特定することで、アップグレード中に重大な問題が発生するリスクが軽減されます。
  4. パフォーマンスの最適化 : Drupal 11 ではパフォーマンスが向上し、より早くその恩恵を受けることができます。

 

 

 

Drupal 11へのアップグレード手順

 

Drupal 11 へのアップグレードを確実に成功させるには、次の 5 つの重要な手順に従ってください。

  1. Drupal 11 の要件を満たしたサーバー環境を準備します
  2. サイトを最新バージョンの Drupal 10 にアップデートします
  3. コントリビュートモジュールを最新バージョンにアップデートします
  4. カスタムモジュールをDrupal11対応に改修します
  5. 最後に、コアモジュールをDrupal 11 へアップグレードします

これらの各ステップをさらに詳しく調べて、シームレスなアップグレードのための重要な考慮事項を確認していきます。

 

 

 

手順 1: Drupal 11 用の環境を準備する

 

 

プラットフォーム要件

 

Drupal 11 にアップグレードする前に、ホスティング環境が次の要件を満たしていることを確認してください。

 

 

PHP アップデート

  • 要件 : zlib 拡張機能が有効になっている PHP 8.3
  • アクション : PHP バージョンを 8.3 に更新します。
  • 利点 : PHP 8.3 では、以前のバージョンに比べてパフォーマンスが大幅に向上しています。

 

データベース要件

  • MySQL : バージョン 8.0 が必要
    • 代替案: アップグレードできない場合は、MySQL 5.7 バックポート モジュールを使用します。
  • MariaDB : バージョン 10.6 が必要
    • 代替案: 必要に応じて MariaDB 10.3 バックポート モジュールを使用する
  • PostgreSQL : バージョン 16 が必要
  • SQLite : json1 拡張機能を備えたバージョン 3.45 が必要

 

ウェブサーバー

  • Apache : バージョン 2.4.7 以降
  • : IIS サポートは Drupal 11 で削除されました

 

主要な依存関係

  • Symfony 7
  • jQuery4
  • PHPUユニット 10
  • Composer 2.7.7

 

 

Drushアップデート

 

Drush を使用している場合は、バージョン 13 に更新します。

composer require drush/drush ^13

 

 

 

手順 2: 最新の Drupal 10 バージョンに更新する

 

Drupal 11 のアップグレードを試行する前に、サイトが最新バージョンの Drupal 10 で実行されていることを確認してください。特にDrupal11の最小要件のPHPバージョン8.3でDrupalが動作することを確認しておく必要があります。

 

 

Drupalバージョンと対応PHPバージョン

 

次の表はDrupal10の各バージョンおよびDrupal11での対応PHPバージョンを示しています。

PHP Ver10.110.210.311.0
PHP 8.1✅ YES✅ YES✅ YES❌ NO
PHP 8.2✅ YES✅ YES✅ YES❌ NO
PHP 8.3❌ NO✅ YES✅ YES✅ YES

 

ここでの作業が重要になる理由 : 最新の Drupal 10 バージョンに更新すると、上記PHPバージョンの他に最新の機能とセキュリティ アップデートがすべて確実に入手できるため、Drupal 11 への移行がよりスムーズになります。

 

参考:

PHP8.2で推奨されなくなる機能

https://www.php.net/manual/ja/migration82.deprecated.php

 

 

 

手順 3: ツールを利用して互換性の調査修正をする

 

非推奨のモジュールを特定して対処することは、単に重要であるだけではなく、Drupal 11 アップグレードを成功させるための基礎となります。Drupalにはそのためのツールとテクニックが存在しますので次にご紹介します。

 

 

アップグレードステータスモジュールで調査分析する

 

Upgrade Status モジュールは Drupal アップグレード用のスイス アーミー ナイフです。効果的に活用する方法は次のとおりです。

  1. モジュールをインストールします。 composer require drupal/upgrade_status
  2. Drupal 管理パネルで [レポート] » [アップグレード ステータス] に移動します。
  3. 包括的なスキャンを実行して、以下を明らかにします。
    • アップデートを求める貢献モジュール
    • 非推奨の API に固執するカスタム コード
    • 潜在的な互換性の障害

🔍 プロのヒント : 最も正確な結果を得るには、運用サイトを反映するステージング環境でスキャンを実行します。

 

参考:

Upgrade Statusモジュールの詳細についてはこちらを参照ください

https://www.drupal.org/project/upgrade_status

 

 

Drupal Rector モジュールを使用して修正を自動化する

 

Drupal Rector モジュールは、 コードを更新するために精力的に作業する開発者チームのようなものです。これを機能させる方法は次のとおりです。

  1. Drupal Rector をインストールします。 composer require palantirnet/drupal-rector --dev
  2. 構成ファイルを生成します。 vendor/bin/rector init
  3. カスタム モジュールで Rector を実行します。 vendor/bin/rector process web/modules/custom

🚀 Rector の動作 : 最近のプロジェクトでは、Drupal Rector が非推奨の問題の 60% 以上を自動的に修正し、手動コーディングの時間を節約しました。

 

参考:

Drupal Rectorモジュールの詳細についてはこちらを参照ください

https://www.drupal.org/project/rector

 

 

Project Update Bot でコミュニティを活用する

 

Drupal コミュニティは、アップグレード プロセスにおける味方です。 Project Update Bot は、自動スカウトです。

  1. にアクセスして drupal.org 、インストールされているモジュールを検索します。
  2. ボットによって開かれた「Drupal 11 互換性」というタグが付いた問題を探します。
  3. これらの問題についてコミュニティと協力して進捗状況を常に把握し、可能であれば貢献してください。

 

 

 

 

手順 4: コントリビュートコードとカスタム コードを更新する

 

コントリビュートモジュールの更新

 

  1. Composer を使用して、アップグレード ステータスで識別されるモジュールを更新します。
  2. Drupal 11 互換バージョンを持たないモジュールの場合:

 

カスタムモジュールの更新

 

  1. アップグレード ステータスと Drupal Rector によって特定されたすべての非推奨に対処します。
  2. 変更のたびに徹底的にテストして、機能が維持されていることを確認します。
  3. 以下の点に特に注意してください。
    • APIの変更
    • 機能の置き換え
    • クラスと名前空間の更新

 

 

 

手順 5: Drupal 11 コアアップデートを実行する

 

すべての準備手順が完了したら、Drupal コアを更新します。

 

  1. すべてをバックアップ : コードとデータベースの完全なバックアップを作成します。

     

  2. 権限の一時変更: 保護されたファイルとディレクトリへの書き込みアクセスを一時的に追加します。 
     

    chmod 777 web/sites/default
    chmod 666 web/sites/default/*settings.php
    chmod 666 web/sites/default/*services.yml

     

  3. Composer.jsonのパッケージファイルの更新:  core-recommended パッケージのバージョンを変更します。相互依存関係によるエラーを回避するため --no-update オプションを追加し設定のみ行い、後でUPDATEを実施します。

    composer require 'drupal/core-recommended:^11' \
                     'drupal/core-composer-scaffold:^11' \
                     'drupal/core-project-message:^11' --no-update

    【オプション】あなたのcomposer.json内で特別な設定がある場合は、一度 drupal/core を削除してください。この依存関係は drupal/core-recommendedに含まれています 個別にリストされている場合は、インストールの問題が発生する可能性があります。

    composer remove drupal/core --no-update

    【オプション】対象のCOREバージョンを指定します。ここでは drupal/core-dev を指定します。

    composer require 'drupal/core-dev:^11' --dev --no-update

    Drush がインストールされている場合 ( 推奨バージョン を確認してください):

    composer require 'drush/drush:^13' --no-update

     

  4. 更新の予行演習(ドライラン): 次に、--dry-run オプションでUPDATEの予行演習を行います。
    すべてのモジュールを更新する場合:

    composer update --dry-run

    コアと依存関係のみを更新する場合:

    composer update "drupal/core-*" drush/drush --with-all-dependencies --dry-run

    ※ エラーが発生した場合は、次の依存関係を解決するを参照してください。
     

  5. 依存関係を解決する : 予行演習で競合が示された場合は、次を使用します。

    composer why-not drupal/core 11.0 依存関係の問題を特定して解決します。
    問題の解決方法については、下記の参考URLからDrupal11アップデートの手順はDrupal公式ドキュメントを参照してください。

     

  6. 更新の実行(COMPOSER UPDATE): ここで、実際にコード自体の更新を実行します。 
    すべてのモジュールを更新する場合:

    composer update 

    コアと依存関係のみを更新する場合:

    composer update "drupal/core-*" drush/drush --with-all-dependencies 

     

  7. 更新の実行(COMPOSER INSTALL): composer update エラーがなければ、composer installを実行できることも確認します 。これにより、プロジェクトの他の開発者やデプロイ スクリプトが新しい依存関係をインストールするときにエラーが発生しなくなります。

    composer install

    すべてが正常であれば、エラーは表示されず、「インストール、更新、または削除するものはありません」というメッセージも表示されます。

     

  8. データベースのアップブレード: composer install エラーがなければ、モジュールの新しいバージョンでデータベースを更新する必要がある場合に備えて、ブラウザで /update.php にアクセスするか、Drush を使用して、保留中のデータベース更新を実行します。

    drush updatedb:status
    drush updatedb

    エラーがある場合は、エラーを解決して再実行する必要があります。

     

  9. 権限の復元: 完了したら、sites/default ディレクトリへの読み取り専用アクセスを復元します。

    chmod 755 web/sites/default
    chmod 644 web/sites/default/*settings.php
    chmod 644 web/sites/default/*services.yml

     

  10. キャッシュをクリア : 次のコマンドを使用してすべてのキャッシュをクリアします。

    drush cache:rebuild

     

  11. 徹底的にテストする : アップグレードしたサイトで包括的なテストを実施します。
     

 

参考URL:

Drupal11アップデートの手順はDrupal公式ドキュメントを参照ください

https://www.drupal.org/docs/upgrading-drupal/upgrading-from-drupal-8-or-later/how-to-upgrade-from-drupal-10-to-drupal-11


 

 

 

さいごに

 

Drupal 11 へのアップグレードには、慎重な計画と実行が必要です。このガイドに従うことで、スムーズに移行するための準備が整います。アップグレードを成功させる鍵は、早期の準備、徹底的なテスト、最新の Drupal 開発状況を常に把握することにあることを忘れないでください。

準備をはじめるのに早すぎることはありません。 Drupal11に対応することで新機能を活用できるようになります。アップグレードをお楽しみください!

 

 

タグ

この記事に関するご質問やご意見などございましたらお問い合わせフォームからお気軽にご連絡ください。