はじめに
スマートフォンのライトを、誤操作で点けっぱなしにしてしまったことはありませんか?
私はあります。気づかないうちにライトが点灯し、そのままスマホをポケットへ入れてしまいました。ポケットの中がずっと光っていて、周りからも目立つ状態に。後から気づいて、かなり恥ずかしい思いをしました。
「誤操作でライトが点きっぱなしになったら、スマホが教えてくれる仕組みを作ればいいのでは?」と思い、Androidアプリ Flashlight Alert を作りました。
この記事では、アプリの使い方や仕組みなどを簡単に紹介します。
作ったもの
Flashlight Alertは、次の条件がそろったときに振動と通知で知らせるアプリです。
- スマートフォンのライトが点灯している
- 画面が消えて、端末が非操作状態になる
- ユーザーが設定した秒数が経過する
主な機能は次の通りです。
- クイック設定などから点灯したライトを監視
- 画面消灯後、設定した時間が経過すると振動と通知で警告
- 同じ連続点灯中の警告は一度だけ
- 警告通知のボタンからライトを消灯
- アプリ画面のライトイラストをタップして点灯 / 消灯
- 日本語 / 英語の表示切り替え
画面イメージ
メイン画面では、ライト状態監視のON / OFF、現在のライト状態、警告までの時間、表示言語などを確認・変更できます。
この画面では、監視を有効にし、警告時間を3秒に設定しています。ライトのイラストをタップすると、ライトの点灯・消灯も切り替えられます。
APKのダウンロード
最新版は、下記のGitHubからダウンロードできます。
ダウンロード・インストールするファイルは、Flashlight-Alert-v0.1.0.apkです。
Google Play外で配布しているAPKです。インストールするかどうかはご自身で判断してください。APKをダウンロードしたブラウザーやファイル管理アプリに対して、一時的に「不明なアプリのインストール」の許可が必要になる場合があります。インストール後は、この許可を無効に戻すことをおすすめします。
インストールと使い方
- GitHubからAPKをAndroid端末へダウンロードします
- APKを開きます
- Androidの案内に従って「不明なアプリのインストール」を許可します
- Flashlight Alertをインストールして起動します
- 通知権限を許可します
- 必要に応じてカメラ権限を許可します
- 「監視を有効にする」をONにします
本アプリでは、画像や動画を撮影しません。カメラ権限は、Androidのライト機能をアプリから点灯・消灯するために使用します。カメラ権限を許可しなくても監視はできますが、アプリや通知からライトを消す機能は利用できません。
監視を始めたら、クイック設定からライトを点灯し、画面を消してみてください。設定時間が経過すると警告通知が表示されます。途中で画面を点けるかライトを消した場合、カウントは中止されます。
どんな仕組みで動いているのか
大まかな流れは次のとおりです。
ライトの状態を検知
↓
画面が消えているか確認
↓
両方の条件が成立したらタイマー開始
↓
設定時間が経過してもライトが点灯中なら通知
同じ点灯中に通知が何度も来ると煩わしいため、一度警告した後はライトが消えるまで再通知しません。
Codexと一緒に開発しました
このアプリは、OpenAI Codexを使って開発しました。
Codexと対話しながら、次のような作業を進めました。
- 要件の整理と不明点の洗い出し
- ライト監視、通知の実装
- 日本語 / 英語対応
- README、プライバシーポリシーの作成
- スマートフォン実機へのインストールと動作確認
私が要件を整理し、Codexから確認事項を出してもらい、実機で挙動を確認しながら開発を進めました。
たとえば、システムナビゲーションバーの表示、ライトイラストからの点灯・消灯、通知文言、チェックサム確認手順などは、実際に触って気づいた点を会話しながら修正しています。AIを使った開発でも、最終的に実機で確認することはやはり大切だと感じました。
なお、Androidアプリ開発やKotlinについては今回が初めてだったため、Codexが生成した実装について、細かな設計やAndroid固有のベストプラクティスまで十分にレビューできたわけではありません。コードの内容を確認しながら、処理の流れや明らかな問題がないかといった基本的な観点を中心に確認しました。
プライバシーについて
本アプリには、次の機能を入れていません。
- 外部サーバーとの通信
- 広告
- アクセス解析
- クラウド保存
- ライト警告履歴の保存
言語と警告時間の設定は端末内だけに保存します。
なぜGoogle PlayではなくGitHub配布なのか
Google Playでアプリを公開するには、本番公開前に、少なくとも12人のテスターが14日間継続して参加するクローズドテストが必要です。
個人開発で12人のテスターを集めるのは、思っていた以上にハードルが高いです。家族や友人へ声をかけるとしても、Android端末を持っていて、テストへ参加してもらえて、一定期間協力してもらえる人を12人となると、なかなか簡単ではありません。
そこで、まずは署名済みAPKをGitHubで公開することにしました。Google Playでの公開については、引き続き方法を模索していこうと思います。
現時点での制約
- Google Pixel 9 Pro(Android 17)で実機確認しています
- 機種ごとの省電力制御やカメラ実装によって挙動が異なる可能性があります
- Google Play配布ではないため、自動更新はありません
- 新しいバージョンは利用者がAPKをダウンロードして上書きインストールする必要があります
- 端末を再起動した後は、手動で監視を再開する仕様です
不具合を見つけた場合は、GitHub Issuesからご連絡いただけますと幸いです。その際、パスワードや個人情報などは書き込まないようお願い致します。
今後やりたいこと
- 対象機種を増やして動作確認する
- Google Play公開へ進む方法を検討する
- 実際の利用者からフィードバックを集める
まとめ
ポケットの中でライトが光り続けて恥ずかしい思いをした、という小さな体験から始まったアプリですが、端末状態の監視、通知、権限、APK配布まで、Android開発のさまざまな要素に触れることができました。
誤操作によるライトの点けっぱなしが気になる方は、よろしければ試してみてください。
最後までお読みいただき、ありがとうございました!
