個人開発したサブスク管理アプリsubskunの振り返り
この記事にはアフィリエイトリンクが含まれています。
はじめに
今年の9月にsubskunというサブスク管理のモバイルアプリを個人開発してPlayStoreでリリースした。
そこから年内はsubskunの様々な改善をしてきた。今回は開発したきっかけやそれによる学びなどをまとめておく。
作成のきっかけ
作りたかったというのが一番。他の理由としては、今年はしっかりアウトプットをしていきたかったこと、ちょうど仕事の忙しさが落ち着いてきたこと、当時は業務でFlutterを扱っていたがそこでは扱っていない技術にも触れておきたかったこと、などがある。
夏ぐらいに開発に着手して1ヶ月くらいで最低限の機能を持ったものができたのでストアにリリースした。
技術スタック
フレームワークとインフラ
subskunはFlutterで作成しており、裏側は全てFirebaseを使っている。
データストアとしてFirestoreを使用したが、業務ではFirestoreもNoSQLも触ったことがなかったので調べつつ試行錯誤しながら一般的な使い方を学ぶことができた。
アーキテクチャ
アーキテクチャとしては、よくある3層のレイヤードアーキテクチャでCleanArchitectureに則ったものを採用した。また、その際のディレクトリの切り方を技術による分割ではなくドメインによるものにした。この切り方は『ソフトウェアアーキテクチャの基礎』で知ってずっとやってみたかったので個人開発の場がちょうど良い実験場になった。ちなみにミノ駆動さんの『良いコード/悪いコードで学ぶ設計入門』の中では技術による分割を技術駆動パッケージング
と呼んでいた。
Flutterでのドメイン駆動パッケージングについては以下の記事を参考にしてsubskunにも適用した。
ドメイン駆動パッケージングは今回初めて使用したが、あるドメインに関するファイル群が近くにあって開発しやすく個人的にはかなり好みだった。一方で、レイヤーなどの技術構成が隠れてしまうため、例えば協力会社を利用してチームメンバーがよく入れ替わったり各レイヤーに対する知識が薄いエンジニアが多かったりする開発環境においては技術駆動パッケージングの方が学習コストも小さく分かりやすくて良いのではと思った。
CI/CD
CI/CDはGitHubActionsを使った。個人開発ではよく使っていて好きだったことと、モバイルアプリのCI/CDとしては使用したことがなかったので利用した。
モバイルアプリでも使えるのかと最初は不安はあったものの、特に不満や不足なく使うことができた。むしろ便利なActionがたくさんあるし、GitHubとの連携関連が簡単なので使いやすいくらいだった。
利用事例についてはいくつか記事にもまとめたので興味があればあれば読んでみてほしい。
- Flutterで作ったAndroidアプリをGitHubActionsを使ってAppDistributionに自動デプロイする
- Flutterで作ったAndroidアプリをGitHubActionsを使ってGooglePlayに自動デプロイする
- FlutterアプリをGitHubActionsでビルドする際にコミット数をビルド番号として設定する
- GitHubActionsを使ってmainブランチへのマージ時にタグとリリースノートを自動生成する
- Flutter製のAndroidビルドでGitHubActionsを使ってCrashlyticsに難読化解除用のシンボルファイルを送信する
- Flutterアプリのリリース直前にpubspec.yamlのバージョンを上げる作業をGitHubActionsを使って自動化する
現時点までの状況
最新のバージョンは1.8.0
で総リリース数は17
、総コミット数は432
だった。
また、Firebaseで計測しているユーザーのアクティビティについては以下。
MAU200を目下の目標としていたが届かなかった。そもそも、上記の数字にストア経由でインストールしたユーザーはほぼおらず、ほとんどがストアで審査する人と自分のアクティビティの数字であり、まったく使われないアプリとなってしまった。
誰にも使われない結果となった理由としては、ストアで「サブスク 管理」などで検索をしてもまったく検索結果に表示されないことが大きかったように思う。どんなに機能を実装してリリースを重ねても、そのアプリの存在を知られなければ使われることもないのだと痛感した。
もちろんアプリに需要があるのかや使いやすいかどうかも考える必要はあるが、その入り口にすら立てなかったのはつらかった。マーケティングの本を読み始めるきっかけにもなった。
その他学んだこと
ストア用画像などの作成にFigmaを利用したが、Figmaの使い方についてかなり詳しくなった。
また、業務で体験したことがない技術を積極的に触ってみた。ドメイン駆動パッケージングもそうだが、テーマ別アプリアイコンやダークモード対応、いろんなライブラリを触ってみたりしてFlutterに関する知見を深めることができた。
さらにそこで学んだことをブログにアウトプットすることで知識を整理することができた。アウトプットを主軸としながら関連したインプットもすることができて、良い学習のリズムができたように思う。
今後の目標
subskunを使われるアプリにすることもできなかったし、開発自体は年内までを一つの区切りに考えていたのでここまでとする。
来年はsubskunとは別のアプリを作りたい。すでに作りたいものは決まっている。今度はちゃんと使ってもらえるようなアプリを作りたい。
おわり
使われるアプリにすることはできなかったが、やはりモノづくりは楽しい。それを使ってもらったり良いリアクションをもらったりすればもっと楽しくなるんだろうなと夢想する。
来年こそは使ってもらえるものを作り、また、それを通していろんなことを学び続けたい。