mcpField
M
magento-module-developer

magento-module-developer

github.com/maxnorm開発31440 回インストール40 週間前に更新
リポジトリ

magento-module-developer について

magento-module-developerは、Magento 2のモジュールや拡張機能を開発する人向けのスキルです。モジュール設計、実装パターン、API、データベース変更、テストやセキュリティの指針を提供します。

主な機能

  1. 01モジュール構成とアーキテクチャ設計
  2. 02サービスコントラクトとリポジトリパターン
  3. 03依存性注入とプラグインの指針
  4. 04RESTおよびGraphQL API開発
  5. 05データベーススキーマとデータパッチ
  6. 06テスト、セキュリティ、性能の実践

活用シーン

  1. 01新しいMagento 2モジュールの設計
  2. 02カスタムサービス、コントローラー、APIの実装
  3. 03スキーマ変更とデータ移行の追加
  4. 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 のエンタープライズグレードのアーキテクチャ原則に沿ったモジュールの作成に注力してください。

コメント