この記事で分かること
- 個人で作った Android アプリ「サブスク番人」でできること
- どんな技術を使って作ったか
- 作っている途中でつまずいたところと、その直し方
アプリはこちら
「サブスク番人」は Google Play で公開しています(Android 向け・無料)。
https://play.google.com/store/apps/details?id=com.subs_keeper
サブスクの更新日前に通知。解約か継続か、忘れる前に決められる。登録は端末内だけ、アカウント不要。
なぜ作ったか
「無料期間だけのつもりが、気づいたら課金されていた」「使っていないサブスクに、今月もお金を払っていた」。こういう経験がある人は多いと思います。
サブスクは、ひとつひとつの金額は小さくても、足すと意外と大きくなります。しかも更新日はサービスごとにバラバラで、全部を覚えておくのはむずかしいです。
そこで、更新日の前にスマホが教えてくれて、そのとき「続ける」か「やめる」かを決めるだけ、というシンプルなアプリを作ることにしました。
わたしは普段システムエンジニアとして働いていて、休日に「あったらいいな」と思ったものをアプリにしています。このアプリもそのひとつです。
できること
- サブスクを登録すると、更新日の前の朝9時に通知が届きます(1日前・2日前・3日前・5日前・7日前から選べます)
- 通知が来たら、アプリで「続ける」か「解約した」を選ぶだけ。何もしなければ、実際のサブスクと同じように自動更新として次の更新日に進みます
- 毎月の合計金額がひと目で分かります。年払いのものは12で割って月の金額として足します
- ドル建てのサービスにも対応しています。円への換算レートは自分で設定します
- メモに解約ページの URL を入れておけば、そこからすぐ解約ページを開けます
- URL やサービス名を貼るだけで、サービス名と参考価格のプランの候補が出ます
- 有名なサービスは、名前を入れるだけでアイコンが自動で付きます
- 解約したサブスクは「節約中」のリストに移り、やめた成果が見えます
- Amazon の定期おトク便のような「定期便」も登録でき、「スキップ」もできます
- 登録した内容は端末の中だけに保存されます。アカウント登録は不要で、広告もありません
無料版はサブスクを5件まで登録できます。それ以上登録したい場合や、過去12ヶ月の支払いの推移グラフを見たい場合は、Pro版(買い切り・300円)があります。
技術構成
| 項目 | 使ったもの |
|---|---|
| アプリの作り方 | Flutter(Dart) |
| 対応 OS | Android(Google Play で公開中) |
| 通知 | flutter_local_notifications(スマホの中だけで完結する通知) |
| データの保存 | shared_preferences(端末内に保存) |
| グラフ | fl_chart |
| アプリ内課金 | in_app_purchase(Google Play の課金) |
| 参考価格の表 | ネット上に置いた価格表(JSON ファイル)を12時間ごとに読み込み |
| ビルドと公開 | GitHub Actions で Google Play へ自動アップロード |
データを預かるサーバーは使っていません。通知もスマホの中で予約して出しているので、ネットにつながっていなくても動きます。
つまずいたところ
1. ネットの価格表が、アプリの中の一覧を消してしまった
サブスクは値上げがよくあります。値上げのたびにアプリを更新するのは大変なので、値段の表をネットに置いて、アプリがそれを自動で取りに行く仕組みを作りました。
いっぽうで、アプリの中にも「登録できるサービスの一覧」を持たせていて、この一覧は AI に手伝ってもらいながら少しずつ増やしていました。
ところが、ネットの表を読み込むと、アプリの中の一覧がまるごと上書きされていたのです。ネットの表は23件しかなかったので、あとから足したサービスがすべて消えていました。
今は「上書き」ではなく「合体」させる作りに直しました。ネットの表にあるサービスは新しい値段を使い、ネットの表にないサービスはアプリの中の一覧をそのまま残します。直した時点で約60件になっていました。
2. 月末の更新日が、少しずつずれていくバグ
「毎月31日に更新」のサブスクで、次の更新日を「1ヶ月後」として計算すると、2月31日のような存在しない日になってしまい、日付がずれていくバグがありました。
今は、その月にその日がない場合は月末にそろえるようにしています(たとえば1月31日の次は2月28日)。
3. メールから自動で登録する機能は、あえて作らなかった
「メールを読んで、サブスクを自動で登録してくれたら便利なのに」と考えたこともあります。ただ、Gmail を読む権限は、審査やセキュリティの評価がとても重いものです。個人開発で手を出すのはやめておきました。
その代わりに、URL やサービス名、注文確認メールの本文などを貼るだけで入力できるようにしました。ほかのアプリの「共有」から送ることもできます。読み取りはスマホの中だけで行っています。
まとめ
- 「サブスク番人」は、サブスクの更新日の前に通知してくれる Android アプリです
- 通知が来たら「続ける」か「解約した」を選ぶだけ。毎月の合計もひと目で分かります
- 登録は端末内だけで、アカウントは不要です
- 作る途中では、ネットの価格表がアプリの中の一覧を消してしまうバグなどにつまずきました
解約し忘れが気になる人は、ぜひ使ってみてください。
https://play.google.com/store/apps/details?id=com.subs_keeper
ほかに作ったアプリは https://nano-toy-lab.com/works/ にまとめています
ナノトイラボ 
