Drupal自動アップデートのためのパッケージマネージャー完全ガイド

DrupalCMSのサムネイル
目次

はじめに:手動更新の限界を超えて

長年Drupalサイトを運用していると、誰もが直面する課題があります。

「また深夜のセキュリティアップデート作業か...」
「Composer updateで依存関係エラー、本番環境が停止したらどうしよう」
「数十サイトの更新作業、いつまで手動でやり続けるんだろう」

そんな悩みを解決するために生まれたのが、Package ManagerAutomatic Updates(AU) です。

2025年6月、ついにAutomatic Updates 4.0.0が正式リリースされ、Drupalの更新作業は新たな時代を迎えました。この記事では、これらの技術がどのように「安全な自己更新」を実現し、運用コストを劇的に削減するのかを詳しく解説します。

Package Manager:革新的な「ステージング更新」の仕組み

従来の更新方法の問題点

これまでのDrupal更新では、本番環境で直接composer updateを実行していました。この方法には重大なリスクがあります。

  • 更新失敗時のダウンタイム: 依存関係エラーで更新が中断すると、サイトがアクセス不能になる
  • ロールバック困難: 問題が発生しても、簡単に元の状態に戻せない
  • 事前検証不可: 実際に適用するまで、更新が成功するか分からない

Package Managerの革新的アプローチ

Package Manager(Drupal Core 11.x標準搭載)は、この問題を根本的に解決します。その秘密は 「ステージング・スワップ方式」 にあります。

1. Create(作成): 別ディレクトリに更新版のコードを展開
2. Apply(検証): ステージング環境で動作確認・検証を実施  
3. Commit(適用): 問題なければ本番環境と瞬時に切り替え

 

この3段階プロセスにより、ダウンタイムゼロでの更新が可能になりました。失敗しても本番環境は無傷のまま。まさに「安全な自己更新」の基盤となる技術です。

技術的な仕組み

Package Managerは、Composerをバックエンドとして利用しながら、以下の高度な機能を提供します。

  • アトミックな更新: すべての変更が成功するか、すべて失敗するかの二択
  • 事前検証: 本番適用前に、依存関係やコードの整合性をチェック
  • 高速切り替え: シンボリックリンクの切り替えにより、瞬時に新バージョンへ移行

Automatic Updates 4.0:GUIで実現する「ほぼノータッチ」運用

2025年6月、待望の正式版リリース

Automatic Updates(AU)は、Package Managerの上位レイヤーとして動作し、更新作業を自動化します。

主要なマイルストーン:

  • 2025年1月: 3.1.7安定版リリース(セキュリティチーム対応)
  • 2025年6月11日: 4.0.0GA版リリース

AU 4.0では、管理画面から以下の操作が可能になりました。

  • 更新可能なパッケージの自動検出
  • セキュリティアップデートの優先度表示
  • ワンクリックでの安全な更新適用
  • 更新履歴とロールバック機能

TUFによる強固なセキュリティ

AUの最大の特徴は、The Update Framework(TUF) 準拠のセキュリティ実装です。

二段階署名システム

1. パッケージ署名: 各モジュールの開発者が署名
2. メタデータ署名: Drupal.orgが全体の整合性を保証

 

この仕組みにより、以下の攻撃を防ぎます。

  • 改ざん攻撃: 悪意のあるコードの混入を検出・ブロック
  • MITM攻撃: 通信経路での不正な差し替えを防止
  • ロールバック攻撃: 古い脆弱なバージョンへの意図的なダウングレードを阻止

HSMによる鍵管理

署名に使用される秘密鍵は、Hardware Security Module(HSM)で厳重に管理されています。これにより、鍵の漏洩リスクを最小化し、エンタープライズレベルのセキュリティを実現しています。

Drupal CMS 1.xとの完璧な統合

デフォルトで有効な自動更新

Drupal CMS 1.xでは、Package ManagerとAUがデフォルトで有効化されています。これにより以下が実現されます。

  • 初心者でも安全: Composerコマンドを知らなくても、GUIで更新可能
  • プロフェッショナルも満足: APIを使った高度なカスタマイズが可能
  • レシピ対応: Drupal Recipeで追加した機能も一括更新

Project Browser 2.0との連携

追加 → 更新 → 削除

 

このサイクルが、すべて管理画面で完結します。Project Browserで追加したモジュールも、AUで自動的に最新版へ更新されるため、「インストールして放置」による脆弱性リスクを回避できます。

実装ガイド:今すぐ始めるAutomatic Updates

前提条件

  • Drupal 11.x以上(Package Manager内蔵)
  • PHP 8.3以上
  • Composer 2.7以上

インストール手順

# AUモジュールのインストール
composer require drupal/automatic_updates:^4.0

# 有効化
drush en automatic_updates -y

# 初期設定の確認
drush config:get automatic_updates.settings

 

管理画面での設定

  1. /admin/config/system/automatic-updatesへアクセス
  2. 更新チャンネルを選択(Security のみ / All updates)
  3. 更新頻度を設定(毎日 / 週次 / 手動)
  4. 通知設定(メール / Slack連携など)

ベストプラクティス

1. ステージング環境での事前テスト

本番環境でAUを有効化する前に、必ずステージング環境でテストしましょう。

// settings.phpでの環境別設定
if ($_ENV['ENVIRONMENT'] === 'staging') {
  $config['automatic_updates.settings']['enable'] = TRUE;
  $config['automatic_updates.settings']['channel'] = 'all';
} else {
  $config['automatic_updates.settings']['enable'] = TRUE;
  $config['automatic_updates.settings']['channel'] = 'security';
}

 

2. カスタムモジュールの互換性確認

自社開発のモジュールがある場合、Package Managerのイベントに対応させましょう。

use Drupal\package_manager\Event\PreApplyEvent;

/**
 * カスタム検証ロジックの実装
 */
public function onPreApply(PreApplyEvent $event) {
  // 更新前の独自チェック
  if ($this->hasIncompatibleCustomCode()) {
    $event->addValidationError('カスタムコードの修正が必要です');
  }
}

 

3. 監視とアラート設定

# 更新完了時のSlack通知設定例
automatic_updates:
  notifications:
    slack:
      webhook_url: 'https://hooks.slack.com/...'
      channel: '#drupal-updates'
      mention: '@devops'

 

運用シナリオ別活用法

シナリオ1:単一サイトの運用効率化

Before(手動更新):

  • 月1回、2時間のメンテナンスウィンドウ
  • エンジニアが深夜対応
  • 更新失敗時は緊急対応

After(AU導入後):

  • セキュリティ更新は自動適用
  • メンテナンスウィンドウ不要
  • 問題発生時も自動ロールバック

シナリオ2:マルチサイト環境での一括管理

// AUのAPIを使った一括更新スクリプト
$sites = ['site-a', 'site-b', 'site-c'];
foreach ($sites as $site) {
  $updater = \Drupal::service('automatic_updates.updater');
  $updater->setTargetSite($site);
  $updater->updateSecurityReleases();
}

シナリオ3:CI/CDパイプラインとの統合

# GitLab CIでのAU統合例
update-drupal:
  stage: maintenance
  script:
    - drush au:check
    - drush au:apply --security-only
    - drush cr
  only:
    - schedules

将来展望:Experience Builderとの統合

2025 Q4の大型アップデート

Drupalの次世代ビジュアルエディタ「Experience Builder 1.0」でも、Package Managerが中核技術として採用される予定です。

予想される機能:

  • コンポーネントの自動更新
  • デザインシステムのバージョン管理
  • SaaS配布モデルでのシームレスな更新

これにより、コンテンツ編集者も開発者も、常に最新・最適な環境で作業できるようになります。

よくある質問と回答

Q1:カスタムモジュールは自動更新されますか

A:いいえ、AUはデフォルトでDrupal.orgのモジュールのみを更新します。カスタムモジュールは、独自のリポジトリと署名システムを構築することで対応可能です。

Q2:更新に失敗した場合、サイトは停止しますか

A:Package Managerのステージング方式により、更新失敗してもサイトは停止しません。問題が検出された場合、更新は自動的にキャンセルされ、現在の安定版が維持されます。

Q3:すべての更新を自動化すべきですか

A:セキュリティ更新は自動化を推奨しますが、メジャーアップデートは手動確認をおすすめします。AUの設定で、更新タイプごとに自動化レベルを調整できます。

まとめ:TCO削減と安全性向上の両立

Package ManagerとAutomatic Updatesは、Drupalサイト運用における画期的な進化です。

導入効果のまとめ:

  • 運用工数80%削減: 手動更新作業がほぼ不要になる
  • セキュリティリスク90%低減: TUFによる改ざん防止
  • TCO 50%削減: 深夜作業・緊急対応コストの大幅削減
  • 開発者の幸福度向上: 繰り返し作業からの解放

2025年の今、Drupalは「手動で更新するCMS」から「自己進化するCMS」へと変貌を遂げました。この機会に、ぜひPackage ManagerとAutomatic Updatesを導入し、次世代のDrupal運用を体験してください。

参考リンク

カテゴリ