画面起動ロック API を使って開発効率を向上させよう!
ウェブ開発中に、ブラウザがスリープしてしまって開発効率が落ちた経験はありませんか?特にホットモジュールリロード(HMR)を利用しているときに画面がスリープすると、開発の流れが途切れてしまうこともありますよね。
そんな時に便利なのが Screen Wake Lock API です。この API を使うと、画面がスリープしないように制御できるので、HMR を活用したスムーズな開発体験をサポートしてくれます。
Screen Wake Lock API とは?
Screen Wake Lock API は、デバイスが自動的にスリープするのを防ぐためのブラウザ API です。通常、一定時間操作がないとデバイスはスリープしますが、これを防ぐことでアプリの操作性を高めたり、開発中のコードの動作を確認し続けたりすることができます。
公式ドキュメントはこちら:
Screen Wake Lock API - MDN Web Docs
実装は簡単!数行で完了
Screen Wake Lock API は驚くほど簡単に実装できます。以下に基本的なコードを示します。
async function enableWakeLock() {
try {
const wakeLock = await navigator.wakeLock.request('screen');
console.log('Wake Lock is active!');
return wakeLock;
} catch (err) {
console.error(`Wake Lock request failed: ${err.message}`);
}
}
この関数をユーザーのアクション(クリックやタップなど)に紐づけるだけで動作します。例えば、以下のように設定することで、スリープを防止できます。
document.addEventListener('click', () => {
enableWakeLock();
});
開発環境での活用
開発中にこの API を使うと、例えば HMR を利用しているときに画面がスリープしないようにできます。以下のコードを開発中のプロジェクトに組み込んでみましょう。
if (import.meta.hot) {
document.addEventListener('click', () => {
enableWakeLock();
});
console.log('Screen Wake Lock is enabled during HMR!');
}
これで、HMR を使ってコードを更新している間、デバイスがスリープすることはありません。ユーザーのアクションに応じて一度 enableWakeLock
を呼び出せば、デバイスがスリープに入らなくなります。
注意点
-
ユーザーアクションが必須
Screen Wake Lock API は、セキュリティとプライバシーの観点から、ユーザーが明示的に操作を行う場合にのみ動作します(例:クリックやタップ)。 -
対応ブラウザの確認
おおよそほぼ全ての環境でサポートされています。(iOSでPWAにすると機能しなくなるバグがある)最新のサポート状況は MDN で確認しましょう。
まとめ
Screen Wake Lock API を使えば、画面スリープを防ぎながら開発を効率化できます。HMR を活用している際にもスムーズにコード更新を行えるようになるので、ストレスフリーな開発体験を実現可能です。
もちろんこれを用いたサービス開発もめっちゃ生きるところがあります!読み物サイトはゆっくり読めるようにToggleボタン置いておいてほしいですね。
あなたもぜひ、この便利な API をプロジェクトに取り入れてみてください!
Have a good days!
Discussion