Magentoの動作モードの違いを実際に確認してみた

Nishi
2024-10-01
2024-10-01

こんにちは!
Nishiです。前回は bin/magento コマンド についての記事を書きました。

今回は、前回でも少し出てきた Magentoの動作モード について書いていきたいと思います。

初めに

Magentoには主に3つの動作モードがあります。

①Defaultモード

 Magentoをインストールした直後に設定されています。
 DeveloperモードとProductionモードの中間的な動作をする、基本的なモードになります。

②Developerモード

 開発中に使用するモードです。
 即座に変更が反映され、エラーメッセージが表示されるため、デバッグをおこないやすいです。

③Productionモード

 本番環境で使用するモードです。
 パフォーマンスが最適化され、エラーメッセージが制御されます。

今回は3つのモードのうち、よく使用する Developerモード と Productionモード の動作を確認したいと思います。

※bin/magento コマンドはMagentoのディレクトリで実行していきます。
 以前のインストール記事の場合は、public_html/magento に移動して実行してください。

1. Developerモード

Developerモードの特徴は?
  • エラーメッセージ表示
     エラーが発生すると、画面にエラーメッセージが表示されます。
  • キャッシュの無効化
     キャッシュが無効化されるため、コードの変更が即座に反映されます。
  • 静的ファイルの自動生成
     静的ファイル(CSSやJavaScriptなど)は自動的に生成されます。
     ※ただし、新しい静的ファイルを追加場合など、特定の状況に応じてデプロイコマンドを使用して再生成する必要があります。
 
Developerモードに変更する時に必要なコマンド

ProductionモードからDeveloperモードに変更する場合は、予期しないエラーを防ぐために generated/code ディレクトリと generated/metadata ディレクトリの内容を削除する必要があります。

$ rm -rf <magento_root>/generated/metadata/* <magento_root>/generated/code/*

Developerモードに変更します。

$ php bin/magento deploy:mode:set developer
 // Enabled developer mode. が表示されると変更出来ています。
 
実際にファイルを修正して確かめてみよう

今回は、Developerモードの特徴であるエラーメッセージの表示を確認してみたいと思います。

vendor/magento/module-theme/view/frontend/templates/html/header.phtml の $welcomeMessage 変数をコメントアウトします。
※vendorディレクトリの内容を直接編集するのでは無く、appディレクトリでカスタマイズすることが推奨されています。今回は確認後、元に戻すのでvendor下のファイルを修正しています。

<?php
   :
// $welcomeMessage = $block->getWelcome();

?>

保存後、ユーザー画面を確認してみると $welcomeMessage 変数が未定義になっているという内容のエラーが画面に表示されています。

スクリーンショット 2024-08-08 031716


これにより、Developerモードのエラーメッセージ表示機能が正常に動作していることが確認できました。
また、キャッシュクリアを行わずに変更が即座に反映されることから、キャッシュの無効化が正常に機能していることも確認できます。

確認出来たので、vendor/magento/module-theme/view/frontend/templates/html/header.phtmlファイルの修正部分は元に戻しておきます。

2. Productionモード

Productionモードの特徴は?
  • エラーメッセージの制御
     エラーが発生しても、画面にはエラーメッセージが表示されません。
     エラー内容はログファイルに記録されます。
  • キャッシュの有効化
     キャッシュが有効化されるため、サイトのパフォーマンスが向上します。
     コードの変更は即座に反映されません。
  • 静的ファイルの手動生成
     静的ファイル(CSSやJavaScriptなど)は手動で生成する必要があります。
     デプロイコマンドを使用して生成します。
 
Productionモードに変更するコマンド
$ php bin/magento deploy:mode:set production
//Enabled production mode. が表示されると変更出来ています。
 
実際にファイルを修正して確かめてみよう

Developerモードと比較するために、Productionモードでもエラーメッセージの表示を確認してみたいと思います。

vendor/magento/module-theme/view/frontend/templates/html/header.phtml の $welcomeMessage 変数をコメントアウトします。
※vendorディレクトリの内容を直接編集するのでは無く、appディレクトリでカスタマイズすることが推奨されています。今回は確認後、元に戻すのでvendor下のファイルを修正しています。

<?php
   :
// $welcomeMessage = $block->getWelcome();

?>

保存後、キャッシュをクリアします。

$ php bin/magento cache:clean

保存後、ユーザー画面を確認すると通常のトップページが表示されますが、Sign横のwelcomeMessage(Default welcome msg!)は表示されていません。

エラーメッセージは「var/log/exception.log」に記録されます。

これにより、Productionモードではエラーメッセージが直接画面に表示されず、ログファイルに記録されることを確認できます。
また、キャッシュをクリアしなければコードの変更が反映されないことから、Productionモードのキャッシュの無効化が正常に機能していることも確認できます。

確認出来たので、vendor/magento/module-theme/view/frontend/templates/html/header.phtmlファイルの修正部分は元に戻しておきます。

最後に

今回は、実際に動作モードを切り替えながら、それぞれの特徴を確認してみました。
各モードにはそれぞれの特徴があり、状況に応じて適切な動作モードを選択することが重要と思います。

今回の記事に出てこなかった特徴もありますので、気になる方は公式サイト等を確認してみてください。
公式サイト(アプリケーションモード | Adobe Commerce