What is a starter template in Drupal

Collection

Drupal

Drupalのスターターテンプレートとは?

July 19, 2022 1 分で読めます
DrupalCon PortlandのDriesnoteで発表された「スターターテンプレート」について解説します。
What is a starter template in Drupal

Collection :

Drupal

本記事は「What is a starter template in Drupal?」の抄訳となります。

Drupalをよく知るDrupalistの中には、その高い柔軟性に魅力を感じる方も多いでしょう。おもちゃの積み木のように、コアとコントリビューションプロジェクトの間で提供される無数の可能性を見ています。ご存じの通り、Drupalは何でも構築できます。これは、最小限のスタート地点を提供することで、CMS構築をニーズに合わせてカスタマイズできるようにする、という差別化があります。

しかし、これには明らかなトレードオフがあります。Drupalは何でもできる反面、インストールしてすぐにできることはほとんどありません。これはDrupalを始める人が最初に直面する問題です。

おもちゃの積み木と同じで、作りたいモノの明確なビジョンと設計図が無ければ、どこから手をつけて良いのかわからず、積み木の山を眺めることになります。

これは、私たちがAcquia CMSの最初のイテレーションで解決したかったことです。Acquia CMSで私たちが目指したのは、パンフレット風のWebサイトを簡単に作成できるシステムを提供することでした。

あらかじめ定義されたコンテンツモデルと、Site Studioによるドラッグ&ドロップでのページテンプレート作成により、Drupalを初めて使うユーザーでも、数日で見栄えの良いWebサイトを簡単に作成できます。

しかし、これはひとつのユースケースに過ぎず、Drupalやアクイアを初めて使うユーザーに焦点を当てたものです。私たちにフィードバックをくれた多くのお客様が感じていたことは、Acquia CMSは規範的すぎるという点でした。Acquia CMS v1は、Site Studioと私たちが用意したコンテンツモデルを必要とし、それは決して万能なアプローチではありませんでした。

すべてのDrupalプロジェクトに同じ要件があるわけではないことを認識しています。あるサイトは静的な情報、あるサイトはヘッドレス、またあるサイトはEコマースが必要です。Drupalコミュニティは、過去にこれを解決するためにいくつかのアプローチを試みました。インストールプロファイル、Features、Config Splits - これらはすべて、方法は異なりますが同じような問題を解決するために使えます。その問題とは、簡単に言うと「様々なサイトのユースケースに対応する機能と構成をDrupalサイトに同梱すること」です。この問題を解決しようとしたことがある人なら、それが如何に複雑なものであるかをご存じでしょう。

ディストリビューションとインストールプロファイルの問題点

Drupal 9でこの問題を対処する最も一般的なアプローチは、ディストリビューションとそれに対応するインストールプロファイルを使用することです。しかし、ディストリビューションは通常、必要と思われるモジュールを全て同梱するため、コードベースが肥大化する可能性があります。逆に、ディストリビューションがより狭い機能セットに焦点を当てた場合、十分な機能を提供できないリスクがあるからです。

そのため、ディストリビューションは常に意見と柔軟性の間の微妙なラインを歩かなければなりません。

そのバランスを誤ると、使用していないコードでコードベースが肥大化し、結果、ディストリビューションの管理工数が膨れ上がることになります。

プロファイルから手を引くことは、多くの場合、受け入れられません。プロファイルにはアンインストールの手段がなく、プロファイルが提供するモジュールとテーマは、プロファイルの設計を通じて、プロファイルに依存するようになります。

機能を構成として共有する

これまで、Drupalは機能をモジュラー方式で提供しており、特定のユースケース(イベントサイト、パンフレットサイト、Eコマースサイトなど)ではインストールプロファイルを通じてモジュールをグルーピングしていました。

しかし、Drupalが成熟するにつれて、モジュールは関数のセットに、機能はより構成的になってきました。例えば、Drupal 6ではphoto galleryモジュールで行えていたものが、Drupal 9ではViewsモジュールを使用して自由にデータを表現できるようになりました。

Image
acquia cms architectype

昨今のDrupalコミュニティには、モジュールを共有する方法はありますが、構成を共有する方法はまだありません。そのため、現時点では構成をモジュールに同梱することで回避しています。

しかし、構成は関数ではなく、関数を実行するための命令のセットなので、少し変な感じになっています。モジュールとは異なり、これらの命令セットが実行されるのは一度だけなので、バージョン管理のような慣習は、サイトのコンテキストを超えた構成に対して意味をなしません(コアの構成管理では既に解決されています)。

ディストリビューションのモダン化

Drupalコミュニティは現在、正式なイニシアチブとしてdistribution modernization(ディストリビューションのモダン化)に取り組んでいます。Portlandで開催されたDrupalConのDriesnoteでは、スターターテンプレートというワードでこの件に触れていました。これらの設定命令セットは「レシピ」としてセットされ、インストールプロファイルで行っていたようなスターターキットとして、もしくはモジュールを必要としないインストール後の機能として、Drupalサイトにレシピを焼き付けるための正式な方法が今後提供される予定です。

このイニシアチブが実現すれば、Drupalで機能を提供する方法が完全に刷新され、コードベースを肥大化させることなく、必要な機能セットへのアクセスが可能になります。

Drupalコミュニティは、スターターテンプレートへの移行に2年のスケジュールを引いていますが、私たちは一足先に、このアイディアを流用したいと思います。

Drupalのスターターキットが登場

先日リリースしたAcquia CMS v2では、Drupalインストールプロファイルからいち早く脱却して、コードベースを肥大化させることなく、3つの主要なCMSアーキタイプをサポートできるようにしました。

  • Acquia Site Studioを搭載したローコードCMS
  • Next.jsなど、ヘッドレスソリューションを実装するためのヘッドレスCMS
  • Acquia CMSのベストプラクティスとセキュリティ機能を活用したい、既存のDrupalプラクティスを持つアクイアパートナーのためのコミュニティ版CMS


コードを肥大化させずにこれを実現するために、インストールプロフファイルを構成可能なパーツに分割し、Acquia CMSが必要とするプロジェクトの種類に応じて組み立てられる、構成可能なアーキテクチャ(composable architecture)を作る必要がありました。

また、コマンドラインでウィザード形式のインストールを体験できる、スターターキットツールを用意しました。どのアーキタイプのサイトを構築するか、デモコンテンツを含めるかなどの質問を対話形式で答えることで、CMSのインストールを行います。

Drupalのインストールプロファイルとは異なり、スターターキットツールはComposerをラップして、ウィザードインストーラで選択した内容に基づいて必要な依存関係を要求します。これにより、コードベース内のコードの肥大化を抑えることができます。

Image
acquia cms starter kit tool

私たちはスターターキットを提供できたことが非常に光栄です。今後、使用されるアーキタイプのDrupalインストールをさらに合理化させ、洗練させていく予定です。

ぜひ試してみてください

アクイアのDrupal recommended projectからスターターキットを試すことができます。GitHubのissueから、ぜひあなたの意見を聞かせてください。

distribution modernizationイニシアチブに参加したい方は、このページ#distributions-and-recipes Slackチャンネルをチェックしてみてください。

元記事:What is a starter template in Drupal?

関連記事

全て表示する