
Magento 2は、エンタープライズクラスのEコマースプラットフォームであるMagentoの最新版といえます。Magento 2は、前バージョンのMagentoの数多くの成功要因を継承しつつ、最新の技術と構造、ディレクトリ構造の変更を行い、さらにカスタマイズを簡素化した全く新しいレベルのプラットフォームです。現在、Magento 2プラットフォームを利用しているオンライン小売業者は20万社を超えています。
サンプルモジュールのMagento 2ファイル構造には、ブロック、コントローラ、ヘルパー、モデルなどが含まれています。これらはすべて、特定のビジネス機能に関連しています。admin ACL、admin menu、configuration は etc フォルダに含まれています。シンプルなHello Worldモジュールの作成方法を知りたい場合は、Simple Hello World Moduleにアクセスしてください。
目次
1. Magento 2のファイル構造
Magento 2 のファイル構造には、app, bin, setup, phpserver, var, generated, lib, pub, dev が含まれていることがわかります。下の写真を見てください。
構造を理解してもらうために、それぞれのフォルダに何が入っているのか、ファイルの内容を説明しています。
アプリ
このフォルダには、design, i18n, etc.という3つの主なサブディレクトリがあります。お客様がお持ちのすべてのモジュールは、app/code/<CompanyName>/<ModuleName>ディレクトリに含まれています。さらに、すべてのサードパーティモジュールもここで推奨されています。
カスタムストアのテーマはapp/design/frontendサブディレクトリに、すべてのアドミンテーマはapp/design/adminhtmlサブディレクトリに格納する必要があります。
app/i18nディレクトリは、言語パッケージが格納されているフォルダです。お客様のニーズに合った多言語ストアを作成したい場合は、このフォルダを使用することができます。
クリーンインストールすると、code サブディレクトリがなくなります。また、カスタムモジュールがMagentoのコアモジュールと混ざるのを防ぐために、Magentoのコアモジュールをすべてベンダーディレクトリに入れておく必要があります。これは、Magento 1ではすべてのMagentoコアモジュールをGitリポジトリにコミットする必要がありましたが、Magento 2ではこの2つが分離されているためです。
Magento コアモジュールを含む Composer を通して、インストールしたすべてのパッケージを保存することができます。このフォルダから直接作業すると、ベンダーファイルをアップグレードしたときに変更がすべて上書きされる可能性がありますが、app/code/<CompanyName>やapp/designの下にあるモジュールを拡張することができます。
phpserver
Router.phpは、PHPのビルトインサーバーを実装するために使用されるファイルです。しかし、このファイルを使用して作業することはお勧めできません。このファイルは、あなたのサイトに多数の潜在的に大きなセキュリティホールを引き起こす可能性があるからです。
bin
Magento CLI の実行スクリプトはこのディレクトリに格納されています。このスクリプトを使うと、Magento のコマンドが有効になり、キャッシュのクリアやインデックスの再作成などに役立ちます。
Setup
これは、Magento のインストール・セットアップに関連するすべてのファイルを含みます。
generated
ここには、Magento の生成したコードが格納されます。デフォルトの設定では、クラスがコンストラクタに注入された場合、存在しないファクトリークラスを作成するためのコードがMagentoによって生成されます。
var
これには、生成されたクラス、セッション、キャッシュ、データベースのバックアップ、キャッシュされたエラーレポートなどが含まれます。このフォルダには、php bin/magento setup:di:compile が実行されると var/di を含む多数のサブディレクトリの内容が生成されます。
var/log には、Magento のログファイルが格納されます。主なものは、exception.log と system.log ファイルです。
var/cache は、Magento のすべてのキャッシュを格納します。開発時の変更を確認するためには、php bin/magento cache:clean コマンドを使用してキャッシュをクリアすることをお勧めします。
Dev
Magento Test Frameworkによって実行された自動機能テストを保存します。
lib
ここには、Magento とベンダーのすべてのライブラリファイルが含まれています。また、モジュールベースでないMagentoのコードもすべて含まれています。
pub
このディレクトリには、index.phpファイルが格納されます。このファイルを使って、アプリケーションを本番モードで実行することができます。このディレクトリは、ルートディレクトリのアセットへの一般のアクセスを制限するセキュリティ対策となります。また、このフォルダには、Magento のテーマで生成された静的ファイルも含まれています。
Vendor
これは、フレームワークのコアを含むディレクトリです。また、追加モジュールをインストールできる場所でもあります。vendorフォルダの操作は、composer.jsonファイルを使って行います。このフォルダを見てみると、ファイルやフォルダがないのがわかります。これは、composer.jsonがファイルやフォルダを作ってくれるからです。このcomposer.jsonファイルの下には、数多くのパッケージが定義されています。
2. コンポーネントファイルの構造
コンポーネントの定義と構造についていくつかの基本的な知識を提供した後、このパートでは、コンポーネントの種類に応じた異なるファイル構造について説明します。Magento のアプリケーションは、コンポーネントファイル構造の特定の位置にある設定ファイルを含む、コンポーネントを作成するファイルを探します。コンポーネントタイプを正しく動作させるためには、あらかじめ定義されたファイル構造に従う必要があります。
ルートディレクトリ
コンポーネントのルートディレクトリは、その名前と一致し、すべてのサブディレクトリとファイルを含みます。コンポーネントのルートディレクトリは、Magento のインストール方法に応じて、以下の 2 つの場所のいずれかに置かれます。
- <Magentoインストールディレクトリ>/appです。これは、コンポーネントの開発に推奨される場所です。Cloning the Magento 2 GitHub repositoryを使うことで、この環境を整えることができます。
- モジュールのためのapp/codeの適用
- ストアフロントテーマのためのapp/design/frontendの適用
- 管理者用テーマのapp/design/adminhtmlの適用
- 言語パッケージ用のapp/i18nを適用
- <Magentoインストールディレクトリ>/vendor:この場所は、Magento 2 のメタパッケージをインストールするために composer create-project を使用し、CE または EE のコードをダウンロードした場合に表示されます。この場所は、圧縮されたMagento 2のアーカイブを解凍してMagentoをインストールした場合にも見られます。
必要なファイル
すべてのコンポーネントには、以下のファイルが必要です:
- registration.php:これは、コンポーネントをMagentoに登録するためのファイルです。このファイルでは、コンポーネントのルートディレクトリ名がコンポーネント名として使用されます。したがって、デフォルトでは、コンポーネントは、<Magento ルートディレクトリ>/vendor ディレクトリにインストールされます。
- etc/module.xml:コンポーネントの依存関係やバージョン番号など、コンポーネントの基本的な情報を定義するファイルです。バージョン番号は、bin/magento setup:upgradeを実行したときに、どのスキーマとデータを更新するかを決定するために使用されます。
- composer.json:これは、コンポーネントが実行時に必要とする依存関係を定義するファイルです。
3. モジュールのファイル構造
下の写真では、典型的なファイル構造がどのようなものかを示しています:
一般的なディレクトリ
ここでは、一般的なモジュールのディレクトリをいくつか紹介します:
- Block: モジュールロジックModel View Controller(MVC)の垂直実装の一部として、PHPのビュークラスを含みます。
- Controller: モジュールロジックのMVC垂直実装の一部として、PHPのコントローラクラスを含みます。
- etc: 設定ファイルを含みます。特にmodule.xmlは必須です。
- モデル: モジュールロジックのMVC垂直実装の一部として、PHPモデルクラスを含みます。
- セットアップ: モジュールのデータベース構造およびデータセットアップ用のクラスを含みます。これらのデータは、インストールやアップグレードの際に呼び出されます。
追加ディレクトリ
これらのフォルダは、設定や、ローカライゼーション、プラグイン、レイアウトファイルなどの付帯機能のために追加することができます。
- Api: API に公開されているすべての PHP クラスを含みます。
- Console: CLIコマンドを含みます。
- Cron: cron ジョブの定義を含みます。
- CustomerData:セクションファイルを含みます。
- Helper: 集約された機能を含みます。
- i18n: ローカライゼーションファイルを含みます。
- Observer: リスナーからのコマンドを実行するためのファイルが含まれます。
- Plugin:必要なプラグインを含みます。
- UI:データ生成ファイルを含みます。
- view:静的ビューファイル、メールテンプレート、デザインテンプレート、レイアウトファイルなどのビューファイルが含まれます。
4. テーマのファイル構成
一般的なテーマのファイル構成は以下の通り:
一般的なディレクトリ
代表的なテーマディレクトリは以下の通りです:
- etc: すべての画像とサムネイルのための画像設定を持つview.xmlファイルのような設定ファイルを含みます。
- i18n: 利用可能であれば、翻訳辞書。
- media: テーマのプレビュー画像はこのディレクトリに置かれます。
- web: 任意のディレクトリで、以下のファイルに整理された静的ファイルがあります。
5. 言語パッケージのファイル構成
フランス語の典型的なディレクトリ構造は、以下の通りです:
言語パックに必要なディレクトリは、トップレベルのディレクトリのみです。パフォーマンスを向上させるために、ロケールを識別するISOコードに一致するディレクトリ名を使用することをお勧めします。
結論
結論として、ファイル構造はMagento 2のウェブサイトをカスタマイズする上で最も重要な役割を果たします。ファイル構造の各フォルダの機能を理解することで、コンポーネントファイル構造を作成した際に完璧に動作することができます。