コアと拡張モジュール
前回も示したように、Drupal のシステムは 5 つのレイヤーからなります。この中で、ノードなどのデータを処理して特定の機能を実現する役割を果たすのがモジュールです。Drupal 自体もモジュールの集合体として構成されています。
Drupal システムのレイヤー構成
出典:https://www.drupal.org/docs/understanding-drupal/overview-of-drupal
Drupal のモジュールは、大きく core、contributed、custom の 3 種類に分かれます。 core は名前のとおり Drupal のコアシステムに含まれるモジュールで、Drupal 本体の一部としてコア開発チームによってメンテナンスされます。なお、core の中には experimental(試験的)という分類のモジュールも含まれています。これは、まだ正式にサポートされてはいないものの、将来コアに入る可能性がある注目機能を先行して試験的に配布しているものです。最新の機能をいち早く試すことができ、フィードバックを提供して開発に貢献することもできます。ただし、セキュリティや安定性の点から、また場合によっては不採用となり削除される可能性もあるため、テスト環境以外での使用は推奨しません。 テーマでも使われる contributed という語は、日本語で「寄与」「貢献」「寄贈」といった意味で、Drupal コミュニティの有志によって開発・メンテナンスが行われている core 以外のコンポーネントを表しています。また、しばしば “contrib” と略されます。2021 年 3 月現在、 約 47,000 件のモジュールが drupal.org に登録されており、基本的に誰でも自由に入手して使うことができます。ただし、サポートされるコアのバージョンや、メンテナンスの頻度、ソフトウェアとしての品質はさまざまであるため、実際に使用する前に調査・検討を十分に行うことが重要です。 最後の custom(カスタム)モジュールは、独自に開発したモジュールのことです。特別な機能を開発することもあるでしょうし、コアや他の拡張モジュールの機能をカスタマイズするため自分でモジュールを作成する場合もあります。
拡張モジュールの探し方
公開されている contributed モジュールの数は膨大です。Drupal は巨大なコミュニティによって支えられているので、一般に必要とされる機能は大抵、誰かが作って公開している可能性があります。こうした状況は WordPress のプラグインと似ていると思います。
では、目的の機能を提供するモジュールを探すにはどうすればよいか。基本は drupal.org のモジュール検索を利用する方法です。このページでは 8 つの条件を任意に指定して、drupa.org で公開されている contributed モジュール を検索することができます。
https://www.drupal.org/project/project_module
たとえば、サイトのトップページ等でよく使用されるカルーセル(スライダー)を検索してみましょう。Drupal 9 で stable リリース(安定板)が公開されているモジュールを探すのであれば、次のように条件を指定します。
Works with | Drupal 9 |
Status | Full projects |
Stability | Has a supported stable release |
Search modules | Carousel |
検索を実行すると、2021 年 3 月現在で 30 件以上のモジュールがヒットします。中には期待しているものと違うモジュールも含まれますが、Drupal 9 でも多数のスライダーモジュールが使用できることがわかります。
Google 等の検索サイトを利用する方法もあります。こちらは、著名なモジュールのプロジェクトページをその名前から即座に見つける手段として便利です。たとえば、token、pathauto、devel、webform、rules、…などなど、よく知られたモジュールの名前を "drupal" と一緒に検索すると、ほぼ確実に drupal.org のプロジェクトページが最上位にヒットします。モジュール名やその一部の語句がわかる場合は、先述の検索フォームを使うより早い場合が多いと思います。
"Drupal token" で検索した結果
モジュールページの見方
目的のモジュールのプロジェクトページを見つけたら、そのモジュールの情報を確認しましょう。
次のような情報が掲載されています。
モジュール名 | モジュールの名称 |
---|---|
説明文 | 開発の背景、機能、動作条件、現在の制限事項など全般的な情報 |
サポート組織 | モジュールの開発やサポートを担当している組織の情報 |
プロジェクト情報 | モジュールのプロジェクト情報(メンテナンスや開発の状況、インストール数など) |
ダウンロード情報 | モジュールを入手するためのダウンロードリンク |
メンテナンス者の情報 | モジュールのメンテナンスを担当している drupal.org ユーザーの情報 |
issue 情報 | モジュールのバグや要望、質問などの投稿と回答のスレッド |
その他のリンク | ドキュメント、関連リソース、開発情報などのリンク集 |
モジュールの選定基準
細かい機能や仕様の詳細を確認するには、実際にテスト環境で動かす必要がありますが、相応の時間と手間がかかるので、まずプロジェクトページの情報からその価値があるかどうかを判断することが重要です。なお、機能や仕様とは別に、一般的な選定基準として次の 3 点に注意してください。
(1)インストール数
Project Information の項に記載されているインストール数が極端に少ないモジュールは基本的に避けるのが無難です。公開されて間もないために少ない場合もあるので、インストール数の推移も併せて確認のうえ判断することをお勧めします。“xxxxx sites report using this module” というリンクをクリックするとグラフや週次の推移が表示されます。
Project information セクション
モジュール使用サイト数のリンク先:インストール数の統計グラフ
(2)安定版
ダウンロードリンクの名称に dev、alpha、beta、rcなどの「リリースタイプ」が含まれているモジュールは、安定性や安全性が十分に確認されていない可能性があるので、本番環境での使用は避けるべきです。
リリースタイプ「alpha」の例
リリースタイプ「stable(安定版)」の例
それぞれの「リリースタイプ」の意味は以下の通りです。
リリースタイプ | 意味 |
---|---|
dev | 開発中を意味し、issue で報告されたバグの修正など、次の「Recommended releases」でリリースされる予定の修正が入っている。あくまで「ある時点の最新」という扱いなので、テスト目的以外での利用は推奨しない。 |
alpha | 最初のリリースであり、まだ動作は不安定。多くの人から寄せられたエラーの修正は行っているが、まだ既知の不具合が残っている。セキュリティ上の問題も残っている可能性がある。 |
beta | 情報漏洩やセキュリティ上の問題に関わる全てのバグは修正されている。 全ての API 開発が十分に完了していて、モジュールやテーマの作者はプロジェクトをアップデートする準備ができている。もし、どうしても必要な場合には API やデータベーススキーマの変更が適用されることもある。操作性や翻訳可能な文字列に関してはまだ改善の余地残っている。 |
rc | Release candidate(リリース候補版)の意味。beta バージョンにおいて、深刻なバグが報告されなければ rc バージョンが作成される。コードはほぼ安定している。これ以上の操作性の変更や翻訳可能な文字列の変更は通常は行われない。最初の安定版リリースの候補とみなされる。 |
(3)シールドアイコン
drupal.org で公開されているモジュールのリリースのうち、セキュリティアドバイザリーの対象になっているリリースにはシールド(盾の形)アイコンが付いています。
シールドアイコン
セキュリティアドバイザリーとは、Drupal のセキュリティチームが管理しているセキュリティ脆弱性の公開アナウンス情報です。Drupal のコアと contributed モジュール/テーマの安定版が対象で、それ以外の dev、alpha、beta、rc といったリリースについては提供されません。これらはセキュリティチームによる脆弱性情報が入手できず、また脆弱性がある場合はそれが公的に修正される可能性があるため、本番環境で使用することは推奨されません。
目的のモジュールに問題がないと判断できれば、入手してインストールします。最も基本的なインストール方法としては、drupal.org からダウンロードした *.zip または *.tar.gz のファイルを展開し、できたフォルダーを所定の場所に保存します。contributed モジュールはサイトのルートの下にある modules サブフォルダの下に保存します。また、テーマの場合と同様、モジュールの種類別にサブフォルダに分けることもできます。一般に次のような分け方が示されています。
- modules/contrib contributed モジュールの格納場所
- modules/custom 独自開発モジュールの格納場所
モジュールのフォルダをコピーすると、管理画面の [機能拡張] ページに対象モジュールが表示されます。ここでチェックボックスをオンにして [インストール] をクリックするとインストールが完了します。
追加したモジュールが [機能拡張] ページに表示される
プロジェクトページの読み方やモジュールの選定基準、また、モジュールのダウンロードから、展開、コピー、モジュールの有効化に至る具体的な操作の手順については、ANNAIが執筆した ThinkIT の連載で解説しています。実際のサイト構築で拡張モジュールを利用するときの参考にしてください。
主要モジュールの例
drupal.org のモジュール検索で Drupal 9 対応の安定版(stable)リリースが提供されているモジュールを検索すると 2021 年 3 月現在約 2,900 件がヒットします。この中から一般的なサイトで広く使用されるモジュールをいくつか紹介します。
Token
https://www.drupal.org/project/token トークン(token)とは、動的な値に置換されるプレースホルダーのことで、WordPress のショートコードに似た機能を提供します。トークンの API は Drupal のコアに含まれていますが、このモジュールを有効にすると、利用可能なトークンの一覧を表示したり、追加のトークンが使用できるようになります。
たとえば、ブロックのタイトル欄に、[current-user:display-name] というトークンを埋め込むと、現在ログインしているユーザーの名前がタイトルに表示されるブロックを定義することができます。
ブロックのタイトル欄でもトークンが使用できる
Admin Toolbar
https://www.drupal.org/project/admin_toolbar コアが提供するデフォルトの管理メニューの代わりに使用できるツールバーを提供します。コアの管理メニューでは、メニュー階層に従ってページを遷移しないと目的のページにたどり着けませんが、このツールバーを利用すると、深い階層のページにも直接移動できるドロップダウンメニューが表示され、操作性が格段に向上します。
Admin Toolbar のドロップダウンメニュー
Pathauto
https://www.drupal.org/project/pathauto このモジュールを使用すると、サイト上のコンテンツのパスのエイリアス(別名)を特定のルールに基づいて自動生成させることができます。たとえば、ブログ記事のパスが node/ ではなく、blog/2021-01-23 のように日付に基づくパスとなるように構成することができます。先に紹介した token モジュールや、ブロックの可視性のようにパスに基づいて挙動を制御する他の機能と組み合わせて使用することで、さまざまな応用が考えられる強力なモジュールです
パスのパターンを指定する管理画面
Redirect
https://www.drupal.org/project/redirect エイリアスを設定しても、デフォルトのパス(node/ など)へのアクセスがそのまま表示されてしまうと、せっかく設定したエイリアスが活かされません。このモジュールを有効にすると、HTTP ステータスを指定して特定のパスを別のパスにリダイレクトさせることができます
Redirect モジュールの設定画面
同じページへのアクセスを単一のエイリアスに集約できるので、1 ページ:1URL の条件を保証できます。エイリアスを使用する場合、SEO の観点からこの機能は極めて重要です。
Metatag
https://www.drupal.org/project/metatag 名前のとおり、各ページの metatag を自動生成するモジュールで、サイト全体、エラーページ、コンテンツタイプ毎、トップページ、タクソノミー、ユーザーといった種類別に、生成させるタグのパターンを指定できます。元々は SEO のために keywords や description のプロパティ生成を目的としていましたが、現在では Facebook や OGP、Twitter Cards など SNS 用のタグを生成する機能のほか、ページタイトルの制御も可能で、様々な SEO 対策に対応したモジュールになっています。
metatag モジュールとサブモジュールの一覧
Google Analytics
https://www.drupal.org/project/google_analytics アクセス解析サービスの Google Analytics を利用するためのモジュールです。トラッキングに必要なスクリプトの自動生成と埋め込みを基本として、トラッキングスコープ、カスタムディメンジョン、カスタムメトリクス、さらに高度な設定も可能です。カスタムの JavaScript の埋め込みも可能なので、たとえば、複数の Google アカウントによるトラッキング設定も可能です。
Google Analytics モジュールの管理画面(一部)
Simple XML sitemap
https://www.drupal.org/project/simple_sitemap これも SEO 対策に欠かせないサイトマップを自動生成するモジュールです。従来、この目的では XML Sitemap というモジュールが広く使用されてきましたが、これに代わる軽量のモジュールとして Drupal 8 版から提供をスタートした新しいモジュールです。XML Sitemap にない新しい機能として、代替言語ページの指定や画像サイトマップに対応している点が挙げられます。
生成されたサイトマップの例
他にも数多くのモジュールが安定版としてリリースされ、日々その数も増えています。ここで紹介したモジュールは、ほぼあらゆるサイトで利用される汎用的な重要モジュールですが、より特化した機能のモジュールの Drupal 9 への移行も進められています。今後、時間を追うごとに Drupal 9 によるサイト構築がやりやすくなっていくことでしょう。
まとめ
今回は Drupal システムの中核をなすモジュールの概要と拡張モジュールについて取り上げました。Drupal コアを基盤として、さまざまな機能を組み込んでシステムを拡張できることがご理解いただけたかと思います。
関連コンテンツ
- 第 16 回 Drupal をもっと知りたい方に向けた各種情報
- 第 14 回 Drupal のテーマシステムについて
- 第 13 回 Drupal の権限設定と WordPress や Movable Type との比較
- 第 12 回 Drupal の多言語機能と他の CMS やサービスとの比較
- 第 11 回 Drupal と他の CMS のクエリビルダー機能を比較
- 第 10 回 Drupal の標準クエリビルダー Views の使い方
- 第 9 回 Drupal のブロックシステム
- 第 8 回 コンテンツ管理における Drupal と他の CMS との比較
- 第 7 回 Drupal のボキャブラリとタクソノミーの使い方
- 第 6 回 Drupal にコンテンツを投稿してみる
Drupal 初心者講座バックナンバー
- Drupal 9/10 初心者講座
- 第 1 回 歴史に見る Drupal の DNA
- 第 2 回 Drupal はフレームワークか?CMS か?他の CMS との比較
- 第 3 回 Drupal の特徴
- 第 4 回 Drupal 9 / 10 のインストール (1)
- 第 5 回 Drupal 9 / 10 のインストール (2)
- 第 6 回 Drupal にコンテンツを投稿してみる
- 第 7 回 Drupal のボキャブラリとタクソノミーの使い方
- 第 8 回 コンテンツ管理における Drupal と他の CMS との比較
- 第 9 回 Drupal のブロックシステム
- 第 10 回 Drupal の標準クエリビルダー Views の使い方
- 第 11 回 Drupal と他の CMS のクエリビルダー機能を比較
- 第 12 回 Drupal の多言語機能と他の CMS やサービスとの比較
- 第 13 回 Drupal の権限設定と WordPress や Movable Type との比較
- 第 14 回 Drupal のテーマシステムについて
- 第 15 回 Drupal の拡張モジュールの選定と使い方
- 第 16 回 Drupal をもっと知りたい方に向けた各種情報