7JavaScriptで15分毎にデスクトップ通知するアラームを作る(通知APIとクロージャ)JavaScriptやりたいこと個人での長時間のPC作業中に、振り返ったり頭を切り替えたりできるようにするため、15分くらいの間隔でお知らせしてくれるアラームがほしい。方法の検討スマホのアプリだとPC作業に気づかなかったり、逆に集中が切れてしまったりするので、PCでこっそり動くのがいいでも作業用PCに余計なアプリは入れたくない自分でJavaScriptで作って、ブラウザで開いておく方法を試してみる。通知APIを動かすJavaScriptを使うにしても、余計なライブラリはなるべく使わずに済ませたい。標準で通知APIなるものが用意されてるので、これを使う。通知を表示するスクリプトを作ってみる。Notification("Check!");};↑を読み込む適当なHTMLを作って、ブラウザで開く。src="notification.js"></script></head><body></body></html>HTMLを表示すると、よくある感じの通知の許可要求ダイアログが表示される。(このへんWebに公開する場合はいろいろ考えなきゃいかんけど、ローカルなのであまり気にせず)許可すると、画面右上によくある感じの通知が表示される。これを15分ごとに表示させるようにしたい。シンプルにまずは素直に実装してみる。現在時刻をチェックして、0/15/30/45分だったら一度だけデスクトップ通知をする。グローバルスコープに置いてしまっている。これを安全なスコープに閉じ込めてあげたい。クロージャこのようにしてスコープを閉じられた。}();いい感じのクロージャのサンプルになったので、ざっくり説明。無名関数を即時実行した結果が代入される。記述のある通り、これまた無名関数。実行するように見えるけど...。違いは、関数のスコープ。スコープはグローバルスコープ。スコープは外側の無名関数が作るローカルスコープ。アクセスできるけど、他のスコープにある関数からはアクセスできない。必要な関数からのみアクセスされる、安全なスコープに閉じ込めることができた。通知が味気ないので、ちょっとだけオプションを設定してみる。}();こんなかんじになる。7日目として公開しました。さんです!参考資料の「クロージャの真実」もぜひご覧ください(本記事の説明はざっくりなので)。upLoginユーザーは見つかりませんでした。