WordPress 5.5から環境情報を取得するwp_get_environment_typeが追加

8月上旬にリリース予定のWordPress 5.5では多くの新機能が追加されるが、その中の一関数である wp_get_environment_type についてmakeブログで告知がなされている。紹介されている利用方法は次の通り。

switch ( wp_get_environment_type() ) {
    case 'development':
        do_nothing();
        break;
     
    case 'staging':
        do_staging_thing();
        break;
     
    default:
        do_production_thing();
        break;
}

実はこの関数、なにもしないと production という文字列を返すだけであり、カスタマイズして利用することが想定されている。カスタマイズの方法はいくつかあり、 WP_ENVIRONMENT_TYPE 定数もしくは環境変数を定義するか、 wp_get_environment_filter フィルターを利用する(ただし早くに実行されるので mu-plugins として実装する必要があるだろう)。

環境情報を取得する目的は?

さて、なんでまたこのような関数が提供されるようになったかというと、告知で呼びかけられている通り、ホスティング事業者の利便性のためのようだ。

All hosts that support setting up staging environments are requested to set this feature to staging on those staging environments. Similarly we ask all developers with development environments to set this value to development appropriately.

〔編訳〕ステージング環境を提供するホスティングはステージング環境でこの機能が staging を返すようにしてください。同様に開発環境で利用する開発者は development を返すようにしてください。

“New wp_get_environment_type() function in WordPress 5.5”

日本のホスティング環境ではあまり一般的ではないが、WP EngineのようなWordPressマネージドホスティングでは1契約1WordPressインストール(ステージング環境付き)といったサービス形態を取っており、そうしたサービスでは mu-plugins で付加機能を提供していることが当たり前になっている。そうしたホスティングサービスにおいては、環境情報を判別する機能がホスティングサービスによって提供されるのだろう。

また、Local by FlyWheel のような開発環境構築アプリを利用した場合、自動で development が提供されることも考えられるだろう。

日本だとさくらのレンタルサーバーがステージング環境を利用可能なので、そちらで設定されるようになるかもしれない。

環境情報の使い方

こうした環境情報の設定というのは、多くのフレームワークで利用可能である。たとえばPHPフレームワークのLaravelでは、.env ファイルに設定を記載することができる。

アプリケーションを実行している環境にもとづき、別の設定値に切り替えられると便利です。たとえば、ローカルと実働サーバでは、異なったキャッシュドライバを使いたいことでしょう。

Laravel 5.5 ドキュメント日本語訳

今回のWordPressの場合、こうしたフレームワークに共通して実装される機能とは少しレイヤーが異なり、「ホスティング事業者がサポートする」点が強調されていること。たとえば、次のような利用方法が考えられる。

  • プロダクション環境ならCDN経由であることを想定し、静的アセット・メディアのパスを書き換える。
  • プロダクション環境ならオブジェクトキャッシュの接続先をMemcachedにする。
  • プロダクション環境でない場合、通信ログを詳細に残す。
  • 環境ごとに外部サービス(e.g. Stripe)のAPIキーを変更する。

場合によっては、プラグイン・テーマがこの情報を参考にすることもありえるだろうが、その場合はおそらくホスティング環境の提供するオリジナルテーマ・プラグインだろう。GoDaddyなどが提供しているものだ。

注意点としては、デフォルトがproductionだということ。通常は「なにか特別な設定をするとproduction」というイメージだが、なにもしないと production が返ってくる。

いずれにせよ、一般のユーザーが利用する機能ではないが、ホスティング事業者(あるいはクラウドなどでマネージドホスティングをしている受託事業者)は一度チェックしてみてほしい。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください