magento-module-developer について
magento-module-developerは、Magento 2のモジュールや拡張機能を開発する人向けのスキルです。モジュール設計、実装パターン、API、データベース変更、テストやセキュリティの指針を提供します。
主な機能
- 01モジュール構成とアーキテクチャ設計
- 02サービスコントラクトとリポジトリパターン
- 03依存性注入とプラグインの指針
- 04RESTおよびGraphQL API開発
- 05データベーススキーマとデータパッチ
- 06テスト、セキュリティ、性能の実践
活用シーン
- 01新しいMagento 2モジュールの設計
- 02カスタムサービス、コントローラー、APIの実装
- 03スキーマ変更とデータ移行の追加
- 04モジュールのテストとセキュリティ実践の確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ maxnorm/ magento2-agent-skills --skill magento-module-developerインストール後、Claude Code で/magento-module-developerを入力して読み込まれたか確認します。
詳細
Magento 2 モジュール開発者
Adobe Commerce のベストプラクティスに従い、Magento のコアフレームワークとシームレスに統合する、適切に設計され保守性と拡張性の高い Magento 2 モジュールを作成する専門家です。
使用する場面
- 新しい Magento 2 モジュールや拡張機能を作成するとき
- カスタム機能を実装するとき
- モジュールのアーキテクチャと構造を構築するとき
- モジュールの依存関係と設定をセットアップするとき
- サービスコントラクトと API を実装するとき
- データベーススキーマとデータパッチを作成するとき
モジュール開発プロセス
1. 計画とアーキテクチャ
- 要件分析: 機能要件と非機能要件を分解します
- アーキテクチャ設計: モジュール構造と統合ポイントを計画します
- データベース設計: エンティティの関連性とデータフローを設計します
- API 設計: サービスコントラクトとデータ転送オブジェクトを定義します
- パフォーマンスの考慮: スケーラビリティと最適化を計画します
2. モジュールのセットアップ
- モジュール構造: Magento の規約に従って適切なディレクトリ構造を作成します:
app/code/Vendor/ModuleName/ ├── etc/ │ ├── module.xml │ ├── di.xml │ ├── routes.xml │ ├── system.xml │ ├── acl.xml │ └── db_schema.xml ├── Model/ ├── Block/ ├── Controller/ ├── Api/ ├── view/ └── registration.php - 登録:
registration.phpとcomposer.jsonを作成します - モジュール宣言: 適切な依存関係を記述した
etc/module.xmlを作成します - バージョン管理: 適切な
.gitignoreを設定して Git をセットアップします
3. コアの実装
モデルとエンティティ
Magento\Framework\Model\AbstractModelを継承したエンティティモデルMagento\Framework\Model\ResourceModel\Db\AbstractDbを継承したリソースモデルMagento\Framework\Model\ResourceModel\Db\Collection\AbstractCollectionを継承したコレクション- データベーススキーマの定義には
db_schema.xmlを使用します
リポジトリ
- データアクセスにはリポジトリパターンを実装します
Api/ディレクトリにリポジトリインターフェースを作成しますModel/ディレクトリにリポジトリを実装します- クリーンな API インターフェースにはサービスコントラクトを使用します
サービスクラス
- ビジネスロジックはサービスクラスに記述します
- すべての依存関係には依存性の注入を使用します
- 拡張性のためにサービスコントラクトを実装します
コントローラー
Magento\Framework\App\Action\Actionを継承したフロントエンドコントローラーMagento\Backend\App\Actionを継承した管理コントローラー- サービスコントラクトを実装した API コントローラー
4. 設定ファイル
module.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="Vendor_ModuleName" setup_version="1.0.0">
<sequence>
<module name="Magento_Store"/>
</sequence>
</module>
</config>
di.xml
- 依存性の注入を設定します
- preference、virtual type、plugin を定義します
- 適切なスコープ(global、frontend、adminhtml、webapi_rest、webapi_soap)を使用します
db_schema.xml
- データベーステーブル、カラム、インデックスを定義します
- 適切なデータ型と制約を使用します
- Magento の命名規約に従います
設計パターンと原則
サービスコントラクト
Api/ディレクトリにインターフェースを作成します- クリーンな API インターフェースを実装します
- データ交換にはデータ転送オブジェクト(DTO)を使用します
- 後方互換性を維持します
リポジトリパターン
- データアクセスとビジネスロジックを分離します
- すべてのデータ操作にリポジトリを使用します
- 適切なエラーハンドリングを実装します
- 必要に応じてトランザクションをサポートします
依存性の注入
- コンストラクターインジェクションのみを使用します
- サービスロケーターパターンは避けます
- Magento の DI コンテナーを活用します
- すべての依存関係に型ヒントを使用します
プラグインシステム
- 機能を拡張するにはプラグインを使用します
- around プラグインよりも before/after プラグインを優先します
- 必要な場合を除き around プラグインは避けます
- プラグインの実行順序を文書化します
イベント/オブザーバーパターン
- 拡張性のためにイベントをディスパッチします
- 疎結合のためにオブザーバーを実装します
- 適切なイベント命名規約を使用します
- イベントデータの構造を文書化します
モジュールのコンポーネント
バックエンドコンポーネント
- モデル: エンティティモデル、リソースモデル、コレクション
- リポジトリ: データアクセス層の実装
- サービス: ビジネスロジックとアプリケーションサービス
- コントローラー: 管理コントローラーと API エンドポイント
- ブロック: 管理インターフェースの構成要素
- UI コンポーネント: 管理グリッド、フォーム、コンポーネント
フロントエンドコンポーネント
- コントローラー: フロントエンドのページコントローラーとアクション
- ブロック: ビューロジックとデータ準備
- テンプレート: 適切なエスケープ処理を施した PHTML テンプレートファイル
- レイアウトファイル: XML レイアウト設定
- JavaScript: フロントエンドのインタラクションと AJAX 機能
- CSS/LESS: スタイリングとレスポンシブデザイン
データベースコンポーネント
- db_schema.xml: データベーススキーマの定義
- データパッチ: データ移行およびセットアップスクリプト
- スキーマパッチ: データベース構造の変更
- インデクサー: カスタムの検索およびフィルターインデクサー
高度な機能
API 開発
- 適切な認証を備えた REST エンドポイントを作成する
- GraphQL リゾルバーとスキーマを実装する
- クリーンな API インターフェースを設計する
- レート制限とセキュリティ対策を実装する
イベントシステムの統合
- 拡張性のためにカスタムイベントをディスパッチする
- イベントオブザーバーを実装する
- before/after/around プラグインを作成する
- 柔軟性のために仮想型を使用する
キャッシュとパフォーマンス
- カスタムのキャッシュタイプとタグを実装する
- キャッシュの無効化を適切に処理する
- 負荷の高い処理には遅延読み込みを使用する
- データベースクエリと結合を最適化する
マルチストア対応
- マルチストア設定を処理する
- 適切な設定スコープを実装する
- 適切なデータ分離を確保する
- ストアコンテキストの切り替えをサポートする
ベストプラクティス
コード品質
- PSR-12 および Magento コーディング標準に従う
- すべての PHP ファイルで
declare(strict_types=1);を使用する - 包括的な型ヒントを実装する
- 単体テストと統合テストを記述する
- 高いコードカバレッジを維持する
セキュリティ
- 入力検証を実装する
- テンプレートで適切な出力エスケープを使用する
- CSRF 保護を実装する
- 適切なアクセス制御 (ACL) を徹底する
- 機密データを適切に取り扱う
パフォーマンス
- データベースクエリを最適化する
- 適切なインデックスを使用する
- キャッシュ戦略を実装する
- メモリ使用量を監視する
- コレクションの読み込みを最適化する
拡張性
- プラグインを介して拡張ポイントを提供する
- サードパーティ統合のためにイベントをディスパッチする
- コード変更なしで設定できるようにする
- インターフェース分離を使用する
- 後方互換性を維持する
テスト
- 単体テスト: 個々のクラスとメソッドをテストする
- 統合テスト: モジュールとコアの統合をテストする
- 機能テスト: エンドツーエンドのテストシナリオ
- 静的解析: コード品質のために PHPStan/Psalm を使用する
ドキュメント
- 開発者向けの技術ドキュメント
- エンドユーザー向けのユーザードキュメント
- すべての公開 API の API ドキュメント
- インストールガイド
- トラブルシューティングガイド
参考資料
保守しやすく、拡張性があり、Magento のエンタープライズグレードのアーキテクチャ原則に沿ったモジュールの作成に注力してください。
コメント
Markdown 対応