0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Ligth Time Switcher アーキテクチャ

Last updated at Posted at 2025-09-23
Page 1 of 13

はじめに

前回の記事では
Light Time Switcher の 開発の歴史とGoogole Play 登録についての出来事を紹介しました。

今回は、アプリの設計について紹介します。

Light Time Switcher は、機能としては非常にシンプルですが、
設計の過程で「責務の分離」「通知処理の整理」「設定値の永続化」など、意外と多くのポイントがありました。

本記事では、構成図を交えながら、設計の変遷を示します。

「なぜこのクラスを分けたのか」「どこまでAndroid Frameworkに依存させるか」などの理由を残すことで、今後の改善や再利用の土台になればと思います。


初期構成: MainActivity単体による処理集中

初期は、アプリアイコンをクリックしたら、決った秒数に設定を変更するだけの機能だったため、MainActivity単体による処理になっている。


通知機能の追加

通知機能を追加するにあたり、当初は MainActivity に直接実装する方針だったが、以下の理由から通知機能を独立させ、MainActivity から利用する構成とした。

  • MainActivity は点灯時間の制御を担っており、通知機能を加えると責務が過剰になる
  • 通知はUIやユーザーへのフィードバックに関わるため、制御ロジックとは関心が異なる
  • 今後の拡張(通知種別の追加、通知タイミングの柔軟化)を見据えると、独立した構成の方が保守性が高い

この変更により、通知機能は NotificationManager クラスとして切り出し、MainActivity からは明示的に呼び出す形とした。


MainActivityに通知機能を追加


MainActivityから通知機能を分離


通知機能の説明


通知処理シーケンス

設定したScreen timeout時間を通知する処理


点灯時間の設定機能を追加


最新

  • 点灯時間切り替えのスケジュール機能を追加
    • スケジュール設定されたら AlarmSchedulerが スケジュール設定
    • スケジュールされた時間の処理は、TimeoutRececiverが実行
  • 下記を実現するため起動時の処理を追加
    • スケジュール処理のアラームの再設定
    • SharedPreferenceで記録している設定の再設定
  • SharedPreference には、スケジュールが有効かどうかと、スケジュールの時間, 点灯時間と分けて設定を実施

※以下の構成図は、全体像を俯瞰するためのものと、Android Frameworkとの接点を明示するものを使い分けています。
設計判断の背景についての説明は、後者の図を参照しています。


アプリコードのみ


設定のみ


消灯時間設定機能のみ

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?