こちらのサイトではDRUPAL10に関連する記事を掲載しています。
Drupalでは「モジュール」と呼ばれる、小さなソフトウェアを実装することで機能拡張を行います。本ウェビナーシリーズでは、Drupalのモジュール開発に関する基礎知識を解説します。Drupalのバックエンド周りについて体系的に学びたい方、自分でカスタムモジュールを作れるようになりたい方、アクイア認定デベロッパー試験を目指す方におすすめです。
Drupalを一通り操作したことがある方を対象としています。まだDrupalを触ったことが無い方は、初心者向けDrupalチュートリアル動画(日本語)を先に見ておくとより理解が深まります。
モジュールとは
Drupalを拡張するコードのこと。
PHPファイル、YAMLファイルほか、CSS、JS、TWINGファイルなど
オープンソースも活用可能
モジュールは管理画面で設定や権限の変更ができる
モジュール開発の前提知識
必要な知識
- Drupalサイト構築の基礎知識
- PHP知識
- プログラミングの知識
- Symfonyフレームワークの知識
DrupalはSymphonyコンポーネントを使っている
Symphonyはフレームワークであり、再利用可能なPHPコンポーネントライブラリのセットでもある
DrupalはSymphonyをフレームワーク(土台)として使っているのではなく、コンポーネントライブラリを利用している。
Symfonyコンポーネントとは
- WEBアプリケーションフレームワークから切り離して実装されたPHPライブラリのこと
- スタンドアロンライブラリなので任意のPHPアプリケーションから利用できる
- Drupal8以降で利用している
- Symfonyは一般的なWEBアプリ開発に必要なツールや機能を十分にもっている。
Drupalで利用しているコンポーネント

アノテーション
PHPのDocコメント内に記述されている@から始まるキーワードのこと
Drupalがコードの内容を理解するためもの

プラグイン
小さな機能を提供するもの
プラグインはモジュールによって定義される
サービスとサービスコンテナ
サービスコンテナとは依存性注入DIと呼ぼれるデザインパターンを実装したフレームワークのこと
サービスはサービスコンテナによって管理されるオブジェクト
Drupalコアには400個以上のサービスがある
主要なサービスは、Database,Plugin,Manager,Logger,Translation,CurrntUser
Drupalコーディング規約
コードの書き方
Drupalnoコーディング規約
PEARコーディング規約がベース
Drupalのコーディング規約はバージョンに関係なく最新のコード規約に従う必要がある
PHPStormやVSCodeで自動的に検出整形するツールがある
例

モジュールの種類
以下の種類がある
- コアモジュール
- コントリビュートモジュール
- カスタムモジュール
コアモジュール
- Node
- Block
- Views
- Media
- language
- Workflows
など
コントリビュートモジュール
オープンソースで公開されたモジュール
カスタマイズ可能
カスタムモジュール
自作モジュール
モジュールの管理
インストール
- 管理画面で行う
- Drushで行う
モジュールの設定等のUI
- HELP
- PERMISSION
- CONFIGURE

モジュールディレクトリ構成とファイル
モジュールによって場所が決まっている

個々モジュールのディレクトリ構成
例

ソースファイルはsrcフォルダに配置する
コードについて
PSR-4にしたがってファイルパスからクラスをオートローディングする。
Drupal8以降、PSR-4に準拠して実装されている
これにより名前空間を指定することなくファイル(クラス)名を自動的に解決してくれる
PSR-4
モジュール名に対応する名前空間

モジュールのマシン名

Drupal環境の用意
ローカル環境の用意
LANDOの紹介
DOCKERとLANDOのインストールをする
以下のコマンドでDRUPAL9環境を構築する

以下の要領で起動する

練習問題

この記事またはDrupalに関するご質問がございましたら、お気軽にお問い合わせください。