前回の記事の末尾に、こう書いた。
「次回は、その穴を塞ぐ。動かすまで、終われない。」
確かに塞いだ。しかし同時に、別の穴が開いた。
私は今、AIを使いながら、未経験からAndroidアプリを作っています。
作っているのは、スマホ依存を少しでも断ち切るためのアプリです。
普段はAIを使った制作代行をしています。
タイマーが切れたら、今開いているアプリをロックしたい
前回まで作ったのは「アプリを開こうとした瞬間をブロックする」仕組みだ。YouTube(今回のブロック対象アプリ)を開こうとするとロック画面で遮られる。それは動いた。ただし、一つだけ穴が残っていた。
YouTubeをすでに開いた状態でタイマーが切れても、そのまま使い続けられてしまう。
「起動した瞬間」しか見ていないのだから当然で、すでに開いているアプリには今の仕組みでは手が届かない。今回はここを塞ぐことにした。
「タイマーが0になった瞬間、今まさに画面に出ているアプリを確認して、制限対象なら即座にブロック画面を出したい」——そう伝えると、ClaudeはこのチャットからAndroidのコードファイルを直接開いて書き換え始める。私は画面を眺めているだけで、ファイルが更新されていく。
エミュレータ―(仮想スマホ)を再起動して、恐る恐るYouTubeを開き、テストボタンで歩数を使い切った。
カウントが0になった瞬間——ロック画面、見事に出現✨
まだ終わっていなかった。幽霊出現。
達成感があったのは、数秒だった。
ブロック画面を確認してからホームボタンを押した。ホーム画面に戻って一息ついたそのとき、2秒後にホーム画面上にブロック画面が現れた。
「え。」
ホームに戻っているのに、YouTubeのブロック画面だけが浮いている。もう一度ホームを押すと消えるが、しばらくするとまた出てくる。まるで幽霊のようだった。
Logcatを開いた。これはアプリの内部で何が起きているかをリアルタイムで記録してくれる画面で、言ってみれば「現場の監視カメラ」に近いものである。
ログを自分で読み返しながら、どのタイミングで何が起きているかを一つずつ追った。
分かったのは、YouTubeが閉じた後もAndroidに向けて信号を飛ばし続けていたということだった。本来は画面の切り替わりを知らせるための信号なのだが、ホームに戻った後も飛んでくるせいで、StepLockは「制限アプリがまだ動いているぞ」と判断してブロック画面を出し続けていた。
幽霊の正体は、幕の裏で生き続けているYouTubeだった。
原因を突き止めてからClaudeに伝えると、またチャットの向こうでファイルを書き換えていく。エミュレーターを再起動させて、テストに入った。
直した。今度は、何も出ない!
修正後のYouTubeを開いてタイマーを切らせると——ブロック画面が、出ない。
「……?」
コードを読み返した。ブロック画面を追加した直後、Androidが「画面構成が変わったぞ」という信号を自動で走らせていて、StepLockはその信号を受けて「YouTubeはもう画面にいないな」と判断し、出したばかりのブロック画面を即座に消していたのだった。
自分で出して、自分で消す。完璧な自爆だった。
またClaudeに状況を伝え、またチャットの先でのファイル書き換え。
エミュレーターを再起動して確かめる。
今回このサイクルを3回まわしたが、3回とも私はコードに一切触れていない。原因を言葉で説明するだけで、ファイルが直り続けた。
「答えを教えてもらう」のとも違う。「コードを渡してもらってコピペする」のとも違う。Androidアプリを作るための言語をほとんど書けない私が、コードの問題を言葉で伝えるだけで、ファイルが書き換わっていく。
そして、ブロック画面はもとのように正常に出現。幽霊も消えた。
まだ一つ、残っている
ホームボタンを押した瞬間、ブロック画面が一瞬だけ見える。コードは修正済みで、ビルドも終わっている。ただ、テストがまだできていない。
直ったかどうか、次回報告する。
動かすまで、終われない。
アプリ・LP・業務ツールをAIで爆速制作しています。よろしくお願いします。