はじめに:手動更新の限界を超えて
長年Drupalサイトを運用していると、誰もが直面する課題があります。
「また深夜のセキュリティアップデート作業か...」
「Composer updateで依存関係エラー、本番環境が停止したらどうしよう」
「数十サイトの更新作業、いつまで手動でやり続けるんだろう」
そんな悩みを解決するために生まれたのが、Package Managerと Automatic 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
管理画面での設定
- /admin/config/system/automatic-updatesへアクセス
- 更新チャンネルを選択(Security のみ / All updates)
- 更新頻度を設定(毎日 / 週次 / 手動)
- 通知設定(メール / 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運用を体験してください。
参考リンク
カテゴリ