Module Builder

Hook、Plugin、Entity、Service、Form、テストを含むカスタムDrupalモジュールのスキャフォールドコードを生成します。

module_builder
373 sites
132
drupal.org

インストール

Drupal 11, 10, 9, 8 v4.1.3
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
Module Builder /admin/config/development/module_builder

Module Builderで作成されたすべてのモジュールエンティティを表示するメイン一覧ページ。ここから新しいモジュールの作成、既存モジュールの編集、コード生成、モジュール定義の削除ができます。

モジュールを追加 /admin/config/development/module_builder/add

新しいモジュール定義を作成するフォーム。マシン名、読みやすい名前、オプションの書き込み場所など、基本的なモジュール情報を入力します。

モジュール基本プロパティの編集 /admin/config/development/module_builder/manage/{module_builder_module}

名前、説明、パッケージ、依存関係、ライフサイクル状態など、モジュールの基本プロパティを編集します。モジュール編集時の最初のタブです。

モジュールHookの編集 /admin/config/development/module_builder/manage/{module_builder_module}/hooks

モジュールが実装するHookを選択します。Hookはグループ(core、node、fieldなど)別に整理され、フィルタリング検索が可能です。各Hookには説明とapi.drupal.orgドキュメントへのリンクが表示されます。

モジュールPluginの編集 /admin/config/development/module_builder/manage/{module_builder_module}/plugins

モジュール用に生成するPluginクラスを設定します。さまざまなタイプ(Block、Field、Action、Conditionなど)のPluginを追加し、各Pluginインスタンスのプロパティを設定できます。

モジュールEntityタイプの編集 /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エンティティを作成します。モジュールを分析し、モジュールの再生成と拡張に使用できる定義を作成します。

Module Builder設定 /admin/config/development/module_builder/settings

データ保存ディレクトリやコード生成オプションなど、Module Builderの設定を行います。

サイトコードを分析 /admin/config/development/module_builder/analyse

コード分析を実行して、サイトのコードベースで利用可能なHook、Plugin、Service、その他のDrupalコンポーネントを検出します。モジュールコードを生成する前にこのデータが必要です。

権限 1
モジュールを作成

Module Builderでモジュールコードを生成します。サイトのコードベースにファイルを書き込むことができるため、アクセス制限付きの権限です。

Hooks 1
hook_module_builder_info

Hook定義ファイルに関する情報をModule Builderに提供します。モジュールがカスタムHookドキュメントソースと出力先ファイルを指定できるようにします。

Troubleshooting 6
エラー: 'No component data is present'

Module Builderを使用する前にコード分析を実行する必要があります。管理 > 環境設定 > 開発 > Module Builder > コード分析に移動し、「コード分析を実行」または「コード分析を更新」をクリックしてください。

エラー: 'The component data directory could not be created or is not writable'

public://ファイルディレクトリがWebサーバーによって書き込み可能であることを確認してください。Module Builder設定のdata_directory設定が有効な場所を指していることを確認してください。

選択リストにHookやPluginが表示されない

コード分析が古くなっている可能性があります。コード分析ページに移動して新しい分析を実行してください。カスタムコードを追加した場合は、実行前に「分析前にすべてのキャッシュをクリア」をチェックしてください。

生成されたコードが現在のDrupalバージョンのパターンと一致しない

module_builderとdrupal-code-builderの両方の最新バージョンを使用していることを確認してください。'composer update drupal/module_builder'を実行して更新を取得してください。

認識されない値に関するフォームバリデーションエラー

これは多くの場合、分析データが古くなっている場合に発生します。エラーメッセージはコード分析の再実行を提案します。リンクに従って分析データを更新してください。

生成時にモジュールが既に存在するという警告

これは情報提供です。Module Builderは既存のモジュールを検出し、生成されたコードを既存ファイルとマージしようとします。バージョン管理を使用してコミット前に変更を確認してください。

Security Notes 4
  • Module Builderはサイトのコードベースにファイルを書き込む機能を持っています。本番サイトには絶対にインストールしないでください。
  • 「モジュールを作成」権限は強力なファイル書き込み機能を付与するため、「アクセス制限」としてマークされています。
  • 生成されたコードは、特に既存ファイルとマージする場合、デプロイ前に確認する必要があります。
  • 適切なアクセス制御なしで公開アクセス可能な開発サイトでModule Builderを使用しないでください。