Module Builder
Hook、Plugin、Entity、Service、Form、テストを含むカスタムDrupalモジュールのスキャフォールドコードを生成します。
module_builder
インストール
composer require 'drupal/module_builder:^4.1'
概要
Module Builderは、スキャフォールドコードを生成することでDrupalモジュールの作成プロセスを簡素化する強力な開発ツールです。開発者は、ボイラープレートコードを手動で作成したり、Hookのシグネチャやパラメータを確認するためにapi.drupal.orgを常に参照したりする代わりに、Module Builderの直感的なインターフェースを使用して必要なコンポーネントを選択できます。
このモジュールはサイトのコードベースを分析し、利用可能なHook、Pluginタイプ、Service、その他のDrupalコンポーネントを検出します。この分析に基づいて、実装するHookの選択、作成するPluginタイプの選択、さまざまなモジュールコンポーネントの設定ができる整理されたフォームを提供します。生成されるコードには、適切なPHPDocコメント、関数シグネチャ、Drupalコーディング標準に準拠したファイル構造が含まれます。
Module Builderはモジュール定義を設定エンティティとして保存するため、要件の変更に応じて反復的に開発しコードを再生成できます。既存ファイルとの生成コードのマージをサポートし、上書きされるファイルのバージョン管理状況を表示するためにGitと統合されています。
Features
- .info.yml、.module、その他の必要なファイルを含む完全なモジュールスキャフォールディングを生成
- 適切な関数シグネチャ、パラメータ、PHPDocコメントを含むHook実装を作成
- さまざまなPluginタイプ(Block、Field、Action、Conditionなど)のPluginクラスを生成
- 完全なスキャフォールディングを含むContent EntityタイプとConfig Entityタイプを作成
- 依存性注入と適切なService定義を含むServiceを生成
- メニュールーティングと権限を含む管理設定フォームを作成
- ルーターアイテムと動的ルートを生成
- PHPUnitテストケースクラスを作成
- READMEファイルやその他のドキュメントを生成
- サイトコードを分析して利用可能なHook、Plugin、Service、タグ付きServiceを検出
- モジュール/タイプ別にグループ化されたフィルタリング可能なHook選択インターフェースを提供
- コアHookのapi.drupal.orgドキュメントへのリンク
- 反復開発のためにモジュール定義を設定エンティティとして保存
- 生成コードと既存モジュールファイルのマージをサポート
- 変更されるファイルのバージョン管理状況を表示するためにGitと統合
- 既存モジュールとそのコンポーネントをビルダーに取り込むことをサポート
- Service選択やその他の大規模なオプションセットのオートコンプリートを提供
- スマートなデフォルト値を持つ設定可能なモジュール書き込み場所
- 大規模なコードベースを処理するためのコード分析のバッチ処理
Use Cases
ゼロから新しいカスタムモジュールを作成する
新しいモジュールを開始する際、Module Builderを使用して初期スキャフォールディングを生成します。Module Builderに移動し、「モジュールを追加」をクリックして、モジュール名と説明を入力します。次にタブを使用して実装するHookの選択、Pluginクラスの追加、Serviceの定義、その他のコンポーネントの設定を行います。最後に生成タブに移動し、すべてのファイルを書き込んで適切なボイラープレートコードを含むモジュール構造を作成します。
既存モジュールにHookを追加する
既存のモジュールがあり、新しいHookを追加する必要がある場合、まず「既存モジュールを取り込む」でそのモジュール用のModule Builderエンティティを作成します。次にHookタブに移動し、必要なHookを検索して選択します。コードを生成し、「選択したファイルを書き込む」を使用して.moduleファイルのみを新しいHook実装で更新します。マージ機能により既存のコードは保持されます。
カスタムBlock Pluginを作成する
モジュールのPluginタブに移動します。新しいPluginアイテムを追加し、PluginタイプとしてBlockを選択します。ブロックID、管理ラベル、ブロックが持つべき設定を構成します。コードを生成すると、必要なすべてのアノテーションとメソッドを含む適切に構造化されたBlock Pluginクラスがsrc/Plugin/Block/に作成されます。
Content Entityタイプを生成する
Entityタイプタブを使用して新しいContent Entityを定義します。エンティティID、ラベル、ベースフィールド、ハンドラー(storage、view builder、form、list builder)、管理UIの設定を構成します。Module Builderは完全なエンティティクラス、インターフェース、フォームクラス、ルートプロバイダー、設定スキーマを生成します。
管理設定フォームをセットアップする
ルートとフォームタブで「設定フォーム」を有効にします。これによりConfigFormBaseクラスが生成され、routing.ymlにルートが追加され、環境設定の下にメニューリンクが作成され、関連する権限が設定されます。実際のフォームフィールドと送信ロジックを追加するだけです。
反復的なモジュール開発
Module Builderはモジュール定義を設定エンティティとして保存します。これにより、戻って新しいコンポーネントを追加し、コードを再生成し、カスタム実装を保持しながらファイルを更新するマージ機能を使用する反復的な開発が可能になります。バージョン管理の統合により変更を追跡できます。
Tips
- モジュールのインストールまたは更新後は常にコード分析を実行して、Module Builderが利用可能なHookとコンポーネントに関する最新データを持つようにしてください。
- ファイルを書き込む前にバージョン管理(Git)を使用して、変更を簡単に確認・元に戻せるようにしてください。Module BuilderはGitの状況を表示してリスクのある上書きを特定するのに役立ちます。
- 「新しいファイルを書き込む」ボタンは既存モジュールに対して最も安全です - まだ存在しないファイルのみを作成します。
- 多くのオプションがあるServiceには、オートコンプリート検索を使用してください。'.'と'_'の文字は検索時に交換可能です。
- モジュール定義は設定エンティティとして保存されるため、設定管理でエクスポートして環境間で共有できます。
- 「既存モジュールを取り込む」機能は、レガシーモジュールをModule Builder管理下に置くのに強力です。
- Hookページのフィルターを使用してHookをすばやく見つけられます - Hook名の一部を入力し始めるだけです。
- カスタムモジュールコードを変更した場合は、「分析前にすべてのキャッシュをクリア」オプションをチェックして、新鮮な検出を確保してください。
Technical Details
Admin Pages 14
/admin/config/development/module_builder
Module Builderで作成されたすべてのモジュールエンティティを表示するメイン一覧ページ。ここから新しいモジュールの作成、既存モジュールの編集、コード生成、モジュール定義の削除ができます。
/admin/config/development/module_builder/add
新しいモジュール定義を作成するフォーム。マシン名、読みやすい名前、オプションの書き込み場所など、基本的なモジュール情報を入力します。
/admin/config/development/module_builder/manage/{module_builder_module}
名前、説明、パッケージ、依存関係、ライフサイクル状態など、モジュールの基本プロパティを編集します。モジュール編集時の最初のタブです。
/admin/config/development/module_builder/manage/{module_builder_module}/hooks
モジュールが実装するHookを選択します。Hookはグループ(core、node、fieldなど)別に整理され、フィルタリング検索が可能です。各Hookには説明とapi.drupal.orgドキュメントへのリンクが表示されます。
/admin/config/development/module_builder/manage/{module_builder_module}/plugins
モジュール用に生成するPluginクラスを設定します。さまざまなタイプ(Block、Field、Action、Conditionなど)のPluginを追加し、各Pluginインスタンスのプロパティを設定できます。
/admin/config/development/module_builder/manage/{module_builder_module}/entities
モジュール用のContent EntityタイプとConfig Entityタイプを設定します。Entityプロパティ、ベースフィールド、ハンドラー、フォームを定義します。
/admin/config/development/module_builder/manage/{module_builder_module}/routes_forms
モジュールのルート、動的ルート、設定フォーム、カスタムフォームを設定します。
/admin/config/development/module_builder/manage/{module_builder_module}/tests
ユニットテスト、カーネルテスト、機能テストを含む、モジュールのPHPUnitテストクラスを設定します。
/admin/config/development/module_builder/manage/{module_builder_module}/misc
Service、権限、ライブラリ、ヘルプテキストなど、他のタブでカバーされていない追加のモジュールコンポーネントを設定します。
/admin/config/development/module_builder/manage/{module_builder_module}/generate
生成されたすべてのコードファイルを表示し、ファイルシステムに書き込みます。ファイルのマージ状況と既存ファイルのGitバージョン管理状況を表示します。
/admin/config/development/module_builder/manage/{module_builder_module}/adopt
モジュールのファイルから既存のコンポーネントをModule Builderに取り込みます。既存コンポーネントをまずビルダーにインポートすることで、コンポーネントを拡張できます。
/admin/config/development/module_builder/adopt-module
サイト上の既存モジュールから新しいModule Builderエンティティを作成します。モジュールを分析し、モジュールの再生成と拡張に使用できる定義を作成します。
/admin/config/development/module_builder/settings
データ保存ディレクトリやコード生成オプションなど、Module Builderの設定を行います。
/admin/config/development/module_builder/analyse
コード分析を実行して、サイトのコードベースで利用可能なHook、Plugin、Service、その他のDrupalコンポーネントを検出します。モジュールコードを生成する前にこのデータが必要です。
権限 1
Hooks 1
hook_module_builder_info
Hook定義ファイルに関する情報をModule Builderに提供します。モジュールがカスタムHookドキュメントソースと出力先ファイルを指定できるようにします。
Troubleshooting 6
Module Builderを使用する前にコード分析を実行する必要があります。管理 > 環境設定 > 開発 > Module Builder > コード分析に移動し、「コード分析を実行」または「コード分析を更新」をクリックしてください。
public://ファイルディレクトリがWebサーバーによって書き込み可能であることを確認してください。Module Builder設定のdata_directory設定が有効な場所を指していることを確認してください。
コード分析が古くなっている可能性があります。コード分析ページに移動して新しい分析を実行してください。カスタムコードを追加した場合は、実行前に「分析前にすべてのキャッシュをクリア」をチェックしてください。
module_builderとdrupal-code-builderの両方の最新バージョンを使用していることを確認してください。'composer update drupal/module_builder'を実行して更新を取得してください。
これは多くの場合、分析データが古くなっている場合に発生します。エラーメッセージはコード分析の再実行を提案します。リンクに従って分析データを更新してください。
これは情報提供です。Module Builderは既存のモジュールを検出し、生成されたコードを既存ファイルとマージしようとします。バージョン管理を使用してコミット前に変更を確認してください。
Security Notes 4
- Module Builderはサイトのコードベースにファイルを書き込む機能を持っています。本番サイトには絶対にインストールしないでください。
- 「モジュールを作成」権限は強力なファイル書き込み機能を付与するため、「アクセス制限」としてマークされています。
- 生成されたコードは、特に既存ファイルとマージする場合、デプロイ前に確認する必要があります。
- 適切なアクセス制御なしで公開アクセス可能な開発サイトでModule Builderを使用しないでください。