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