「絶対に起きられる目覚まし時計」を強制終了させる

に公開

絶対に起きられる目覚まし時計

ラムダ技術部さんが2年前に「絶対に起きられる目覚まし時計」[1]
という、問題を解かないと止められない目覚まし時計を作っていたので、
これをプログラムで強行突破する方法を考えてみました。

ソースコードを見る

なんとGitHubでソースコードが公開されていました!

https://github.com/lambda-tech-club/applied-math-alarm

Next.jsは得意なほうなので観察してみます

仕様

  • /で停止ボタンを押す
  • /integralに遷移
  • 決定ボタンを押す
  • 答えがあっている場合は/wakeupに移動

この仕様だけを見ると「/wakeupに行くだけで良くない?」となりますが
目覚まし時計(本物)が鳴り続けるのでお勧めしません。
代わりに、遷移と目覚まし時計のAPIを適切に操作してくれるプログラムが必要です。

拡張機能を書いてみる

クライアント側で強制的に問題を解いたことにするには、
ブラウザの拡張機能を作るのが最適だと思います。

https://github.com/lambda-tech-club/applied-math-alarm/blob/master/pages/integral.tsx#L27-L42

integral.tsxの31~33行目あたりを見ると、
答えが合っているかを判定して、合っていたらチャイムを停止し正解音を再生し、
APIにコマンド1を送信し、/wakeupに遷移していることがわかります。
では、コードを書いていきましょう!

本体

https://github.com/Cheesecake2960/applied-math-alarm-extension

感想

コードから挙動を観察することができ、要素を追加することで少しJavascriptの勉強に
なったのでよかったと思います。


最後まで読んでいただきありがとうございます!

脚注
  1. https://www.youtube.com/watch?v=SaouHglJTD0 ↩︎

Discussion