ANNAIマガジン
Drupalの新機能「レシピ」:ウェブサイト構築の革新的アプローチ
この記事の目次

Drupal 10.3で導入された「レシピ」機能は、従来の構築手順をより効率化し、モジュールや設定の適用を柔軟に行うためのアプローチを提供しています。まだ実験的(experimental)モジュールとしての位置付けですが、将来的により安定した機能へと発展することが期待されています。本記事では、このレシピ機能の概要やインストール方法、カスタマイズ方法、およびレシピ一覧の作成手順を解説します。

1. レシピとは何か?

レシピは、Drupalサイト構築を簡素化するための事前定義された設定やモジュールセットです。

主な特徴として以下が挙げられます。

  • スクリプトとして動作
    適用後にアクティブに稼働し続けるわけではなく、パフォーマンスへの影響が少ないのが特徴です。
  • コードと設定の適用
    レシピ内で定義されたモジュールやテーマをまとめてインストールし、関連する設定を自動で変更します。
  • 可逆性(revert)
    今後さらに拡充される見通しのある機能です。記事執筆時点では、完全に元に戻すためには手動作業が必要な場合がありますが、「レシピ適用前の状態に戻しやすい仕組み」を目指して設計されています。
  • プログラミング不要
    YAMLファイルによる宣言的な記述で設定を行うため、コードを書くことなくサイト構築を支援します。

2. インストールプロファイル/ディストリビューションとの関係

レシピは従来のインストールプロファイル・ディストリビューションを完全に置き換えるのではなく、より柔軟に構成変更を行うための仕組みとして注目されています。

  • ディストリビューション:特定のユースケース向けに、モジュールや設定をまとめてプリインストールしたパッケージです。一度インストールすると、基本的な構成がすでに整った状態からサイト構築を始められます。
  • インストールプロファイル:Drupalサイトをセットアップするときの初期状態を定義する仕組みです。
  • レシピ:既存サイトにも後から適用できる小さめの構成パッケージで、モジュールや設定をまとめて導入するのに使えます。

今後は「ディストリビューション+レシピ」「インストールプロファイル+レシピ」のようにハイブリッドで利用し、それぞれの長所を活かす活用例が増えることが期待されます。

3. レシピのインストール方法

3.1 Drupalプロジェクトを準備する

まずは標準的なDrupalプロジェクトをComposerで作成します。

composer create-project drupal/recommended-project my-drupal-site
cd my-drupal-site
composer install

3.2 Composer Installer Extenderの設定

レシピを取り扱うため、oomphinc/composer-installers-extender パッケージを導入します。

composer require oomphinc/composer-installers-extender:2.0.1

次に、プロジェクトの composer.json でインストーラータイプ(drupal-recipe)の指定、およびレシピを配置するフォルダを設定します。

{
  "extra": {
    "installer-types": ["drupal-recipe"],
    "installer-paths": {
      "docroot/recipes/contrib/{$name}": ["type:drupal-recipe"]
    }
  }
}

また、GitHubやGitLabなど外部からレシピを取得したい場合は、repositories セクションにリポジトリ情報を追加します。

"repositories": [
  {
    "type": "vcs",
    "url": "https://github.com/your-recipe-repo"
  }
]

3.3 レシピ適用の手順

目的のレシピをComposerでインストールします。

composer require your-recipe-package-name:^1.0

その後、Drupalコアスクリプトを利用してレシピを適用します(本稿執筆時点のコマンド例)。

php core/scripts/drupal recipe recipes/contrib/your-recipe-name

これにより、指定されたモジュールや設定が自動的に導入・変更されます。

補足

今後のDrupalアップデートでコマンドの形態(例: drupal recipes:apply)やインストール手順が変更される可能性があります。常に公式ドキュメントや最新リリースノートを参照し、最新情報を確認してください。

4. レシピのカスタマイズ方法

4.1 recipe.ymlファイルによる定義

独自のレシピを作成するには、recipe.yml を中心に構成を定義します。例えば、以下のようにモジュールのインストールや設定操作を記述できます。

name: 'Custom Recipe'
type: 'Content type'
recipes:
  - base_recipe
install:
  - module_name_1
  - module_name_2
config:
  actions:
    user.role.editor:
      grantPermissions:
        - 'edit any content'
        - 'delete any content'

4.2 構成フォルダ

  • /config: モジュール依存関係からインポートする設定エンティティを配置
  • /content: 初期コンテンツ(ノードやタクソノミーなど)を提供

4.3 composer.jsonファイル

レシピ自体が必要とするモジュールやテーマの依存関係を定義し、Composerで自動的にダウンロード・適用できるようにします。

5. レシピ一覧の作成方法

5.1 JSON:APIによる取得

JSON:APIモジュールが有効化されていれば、レシピのエンティティ情報を /jsonapi/recipes エンドポイントから取得することが可能です。

curl -X GET http://your-drupal-site/jsonapi/recipes

5.2 カスタムリストやViewsでの表示

フロントエンド側で上記JSONデータを解析し、レシピ一覧を表示することもできます。さらに、DrupalのViewsモジュールと組み合わせることで、GUI上で簡単にレシピ一覧ページを構築可能です。

6. レシピ活用例と今後の展望

  • 標準レシピ:コンテンツタイプ(例: 記事)、編集ワークフロー、SEO向けツールセットなどが公開されています。今後サードパーティやコミュニティによるレシピの拡充が期待されます。
  • ディストリビューション/インストールプロファイルとの併用:レシピは、既存の大規模ディストリビューションを補完する小規模パッケージとしても利用可能です。
  • 管理UIからの導入:Drupal CMSには「プロジェクトブラウザー」が実装されており、この機能を通じてレシピを簡単に検索・インストールすることができます。管理画面から直感的にレシピを見つけ、導入することが可能です。

まとめ

Drupal 10.3で"実験的"に導入されたレシピは、モジュールや設定の適用を一括で行える便利な仕組みです。ディストリビューションやインストールプロファイルを完全に置き換えるわけではありませんが、柔軟なサイト構築や部分的な機能適用が必要なケースで大いに役立つ可能性があります。

ただし、本稿執筆時点では仕様やコマンドが変更される可能性が高い段階です。導入の際は必ず最新の公式ドキュメントやDrupal.orgのissue queueを確認し、十分なテストを行った上で利用してください。

これからDrupalのプロジェクトを始める人は、ぜひレシピ機能を試してみてはいかがでしょうか。サイト構築における新しい選択肢として、今後さらに注目が高まっていくことが予想されます。

amazee.io 
Kaito Kanekoの写真

この記事を書いた人: Kaito Kaneko

ANNAI株式会社

エンジニア、デジタルマーケティングを担当。山梨県在住。

Drupal 初心者講座バックナンバー