

Magento 2 のファイルとフォルダの構造が複雑でわかりにくいと感じている方のために、この記事を用意しました。Magento 2.Xでは、すべてのファイルに何が保存されていて、どのように表示されるのかを正確に説明します。
目次
1.Magentoのフォルダ構造
Magento 2 のフォルダ構造は、Magento 1 のものとはかなり異なります。Magento 2 のルートディレクトリをたどっていくと、以下のようなフォルダ構造になっています。
app
: Magento 2のコアファイルを収録しています。
デフォルトでは、3つのサブディレクトリーがあります: design
, i18n
and etc
design/frontend
: ストアフロントテーマ用design/adminhtml
: 管理テーマ用i18n
: 言語パッケージを保存するetc
: di.xml設定ファイルを含む
また、app/code
ディレクトリを作成して、カスタムモジュールを格納することもできますが、その理由は後ほど説明します。
bin
: Magento CLI 実行可能スクリプトが含まれています。CLI スクリプトは、キャッシュの有効化/無効化、モジュールの有効化/無効化、インデクサーの実行などに使用できる Magento のコマンドを有効にします。
dev
: 自動化された機能テストや、開発者のためのいくつかのツールがここに格納されています。
lib
: internal
及び web
含む
internal
: サーバーサイドのライブラリといくつかのフォントファイルが含まれています。web
: クライアントサイド(JavaScript)のライブラリ、jquery、modernizr、requirejs、prototype、scriptaculousが含まれています。
phpserver
: Router.phpファイルを持っています。これは、PHPのビルトインサーバーを実装するために使用することができます。このファイルを扱うことは、サイトに潜在的なセキュリティホールを引き起こす可能性があるため、お勧めできません。
pub
: index.phpコントローラとすべての公開されたアクセス可能なファイルが含まれています。お使いのサーバーのウェブルートに設定してください。
setup
: Magento のインストール設定に関連するファイルで構成されています。
var
: 生のキャッシュファイル、ログ、セッション、レポートなどが含まれます。
vendor
:このディレクトリは、composerがcomposer.jsonファイルを使って生成します。composer.jsonファイルで定義されたパッケージが含まれます。
2. コンポーネントファイルの構造
コンポーネントは、<Magento install directory>/app
に置くことが推奨されます。<Magento root dir>/vendor
ディレクトリにインストールした場合、Magento はそれらを<Magento install directory>/.gitignore
ファイルに追加します。
必要なファイル
これらのファイルは、インストールされたすべてのコンポーネントに必要です。
registration.php
: コンポーネントはこのファイルでMagentoに登録されます。また、コンポーネントのルートディレクトリ名がコンポーネント名として使用されます。
etc/module.xml:
コンポーネントの依存関係やバージョン番号など、コンポーネントの基本的な情報を定義します。
composer.json:
コンポーネントが実行時に必要とする依存関係を定義します。
3. モジュールのファイル構成
ここでは、典型的なMagento 2モジュールのファイル構造を紹介します。

一般的なディレクトリー
一般的なモジュールのディレクトリは以下の通り:
Block
: モデル・ビュー・コントローラ(MVC)の垂直実装の一部であるPHPビュークラスが含まれています。
Controller
: PHPのコントローラクラスがあります
etc
: 設定ファイル、特にmodule.xml(必須)から構成されています。
Model
: PHPのモデルクラスを含む。
Setup
: モジュールのデータベース構造とデータのセットアップのためのクラスがあります。このデータは、インストールやアップグレードの際に呼び出されます。
追加ディレクトリ
以下のような追加フォルダを挿入することができます。
Api:
API に公開されている PHP クラスを格納します。
Console:
CLIコマンドを格納します。
Cron:
cronのジョブ定義を格納します。
CustomerData
:セクションファイルを含みます。
Helper
:集約された機能が格納されています。
i18n
: ローカライゼーションファイルが含まれています。
Observer
:リスナーからのコマンドを実行するためのファイルが格納されています。
Plugin
:必要なプラグインが格納されています。
UI
:データ生成ファイルが含まれています。
view:
スタティックビューファイル、デザインテンプレート、メールテンプレート、レイアウトファイルなどのビューファイルが含まれます。
4. テーマのファイル構造
典型的なテーマのファイル構造は次のようになります。
├── composer.json
├── etc
│ └── view.xml
├── i18n
│ └── en_US.csv
├── LICENSE_AFL.txt
├── LICENSE.txt
├── media
│ └── preview.jpg
├── registration.php
└── web
├── css
│ ├── email.less
│ ├── print.less
│ ├── source
│ │ ├── _actions-toolbar.less
│ │ ├── _breadcrumbs.less
│ │ ├── _buttons.less
│ │ ├── components
│ │ │ └── _modals_extend.less
│ │ ├── _icons.less
│ │ ├── _layout.less
│ │ ├── _theme.less
│ │ ├── _tooltips.less
│ │ ├── _typography.less
│ │ └── _variables.less
│ ├── _styles.less
│ ├── styles-l.less
│ └── styles-m.less
├── images
│ └── logo.svg
└── js
├── navigation-menu.js
└── theme.js
共通のディレクトリ
etc:
すべての画像とサムネイルの画像設定を含むview.xmlファイルなどの設定ファイルを含みます。
i18n
: 翻訳辞書です。
media
: テーマのプレビュー画像はここに保存できます。
web
: 任意のディレクトリで、以下のサブディレクトリに整理された静的ファイルを含みます。
css/source:
Magento UI ライブラリからグローバル要素のためのミックスインを呼び出すテーマの less 設定ファイルと、デフォルトの変数値をオーバーライドする theme.less ファイルが含まれます。css/source/lib:
lib/web/css/source/libに格納されているUIライブラリファイルをオーバーライドするビューファイルが含まれています。
fonts:
テーマ用の各種フォントを格納するフォルダ。images:
静止画像のフォルダjs:
JavaScriptファイル用のフォルダ
5. 言語パッケージのファイル構成
これは、2つの言語パッケージの典型的なディレクトリ構造です。
├── de_DE
│ ├── composer.json
│ ├── language.xml
│ ├── LICENSE_AFL.txt
│ ├── LICENSE.txt
│ └── registration.php
├── en_US
│ ├── composer.json
│ ├── language.xml
│ ├── LICENSE_AFL.txt
│ ├── LICENSE.txt
│ └── registration.php
言語パッケージではトップレベルのディレクトリが必要です。ロケールを識別するために、ディレクトリ名はISOコードと一致させることが推奨されています。
以上がMagento 2のファイル構造です。構造や各フォルダの構成を理解しておくと、新しいエクステンションのインストールやカスタムコードの実装の際に役立ちます。