しばしば何月何日何時何分からのみ動作する機能を作ることがあります。これは特定の日時からキャンペーンを開始するものであったり、機能の解禁をするものであったり様々です。この手のものはよくリリース方法としてまとまって紹介されていますので詳しく知りたい方はそういった方向でより深く調べた方がよいです。この記事では自分が手軽に画面を切り替える時に使っている方法を紹介します。
具体的なコードは次です。
if (new Date().toISOString() >= '2022-07-27T19:00:00.000Z') {
// 動作開始予定日時より後ならば予定通り実行
ある日時から動作する機能();
} else {
// 動作開始予定日時より前であり
if (window.location.href.match(/^https?:\/\/test\.hoge\.example\.com|^https?:\/\/localhost/)) {
// 日時を無視して動かすべき環境ならばその旨をコンソールに出力して
console.warn('テスト環境のため 2022-07-27 より前の日時でも動作する様にしています');
// 機能を実行。
ある日時から動作する機能();
} else {
// 日時を守って動かすべき環境ならばその旨を通常のユーザーにお知らせ
alert('しばらくお待ちください');
}
}
ざっくばらんにいえば、検証用のテスト環境、開発環境、ステージング環境などのドメインならば日時判定の後の処理に追加で条件を無視して機能を動作させる処理をいれるという奴です。URLを簡単に参照でき、URLと密接に関わる環境で動くブラウザ上のJavaScriptならではの書き方です。これならば専用のビルドを組んだり、特殊な値をサーバーから渡したり、Dateをモックにしたりせずとも簡易に日時限定で動作する機能を検証できます。