個人開発のお話

個人開発のお話

こんにちは bannzai です。普段はちょっとしたツールやライブラリを作って営業力でスターをもらうことを生業としていますが今回はプライベートの時間で作っているアプリのお話と宣伝をしていきたいです

作っているアプリ

もともとohanamizukiさんが開発していたPilllというアプリを開発の方を引き継いで一緒に作っています。 Pilllについては下記のnoteを見てもらえたら概要や生まれた経緯が分かります。

note.com

簡単に言うとピルという薬の飲み忘れを防止するためにサポートするアプリになります。

引き継いで開発までの時系列をまとめると

  • ohanamizuki < Pilllに1万人以上ユーザーが付いてもっと良くしたいから開発の部分を引き継いで一緒にやってかない?
  • bannzai < よっしゃ
  • ohanamizuki < スケールさせたいしリプレイスしても良いくらいの気持ち
  • bannzai < よっしゃ
  • ohanamizuki < Androidもあったら良いよね
  • bannzai < よっしゃ

から始まりました。話自体はたしか2020年の6月くらいにもらいました。結果的にがっつりリプレイスもして2021/01/24にiOSアプリを、に少し時間を置いてAndroidのアプリもリリースすることができました 🎉 iOSについてはリプレイス後に一度計測もしたいし評価をリセットして出したのですが、執筆時の2021/5/01では1000件を超えるレビューと平均評価4.6が付けられていてとても嬉しいです。ユーザー数もちょうど2万人くらい(おそらくリプレイス後に+7kくらい)いて需要があることを体感しています

f:id:bannzai:20210429095542j:plain

以下に各プラットフォームのストアのリンクを該当ユーザーで使いたいという方はぜひ使用してみてください。あとスターください。Androidの方は最近出したばかりでもあるのでレビューもまだついていないのですがこちらの方も後述しますが現在はiOSと同じソースコードで動いているのでほぼiOSと体験は変わらないものとなっています。なのでアプリの内容としてはほぼ同一なものになっています。興味がある方は一度落として試してもらえたら嬉しいです。こちらもスターをもらえたら喜びます

AppStore Google Play Store

選定技術の変更

もともと純粋にSwiftのみで書かれていたiOSアプリだったのでそんなに癖はなかったのでそのまま使用しても良かったのですが、クライアントはFlutter、バックエンドはFirebase(系のサービスを中心に)を採用して開発をすることにしました。以下が決めるまでのその時の気持ちです

  • どうせならなにか馴染みのない技術を試したい
  • Androidも出したい気持ちがあった
  • DBがアプリ内のローカルのみだったので変更する必要があった
  • 通知もローカルからの発信/受信のみだったがバックエンド用意してリモートからも送りたいよね
  • 開発者は一人だからFirestore(スキーマレス)でも全く困らなさそう
  • アプリとしての複雑さやスケール具合はある程度天井が見えているからFrameworkやBaaSの普通にできる範囲で必要要件はカバーできそう
  • 例えば「Flutterでxは難しいけどyならすぐできる」と代案の提案等をしても通じやすい相手だし冒険しても良さそう

と、こんな具合でした。実質リプレイス前後含めて開発に半年程の期間で仕事の合間の時間を使って開発している程度ですが、上記の判断基準で選出した結果におそらく後悔は一度もして無く過ごせていると思います。同じように悩む方がいたら参考にしてください。とはいえ、やっぱり躓くところはあるので作りたいものに対して軽く検証はしておくと安心ですね。

その他細かいところでいうとPilllのFlutterのコードはGitHubに公開されています。利点としてはみなさんに スターがもらえる 事とGitHub ActionsやBitriseといったCIが広い範囲の無料枠の中で使えるのがとても嬉しいですね。ちなみにデメリットはbannzaiの綺麗じゃないコードが世の中の誰でも見ることができるところですね。謙遜とかじゃなくて「動いているからヨシ」だったり「あー、ここはもう過度に共通化しちゃえば良いや。オレ一人だし」みたいなコードが散見できる場所になっているので私の恥部を見たい人は覗いてください。

github.com

今使っているもの

使っている技術やツールについて改めてまとめます。bannzaiのことを知っている人たちは話のネタにでもしてください。

Flutter

pubspec を見れば分かるのですが主要なライブラリをざっくりと書きます。

freezed x riverpod x flutter_hooks は組み合わせで State Management で使用しています。楽にかけてとても良きですね。mockitoはUnitTestingの際によく使用します。Flutterはmockitoを使ったmockの準備やWidgetTestingが結構強力で「もうここ動作確認したくないや」ってときにテストを書くハードルが下がってとても良いです。

Firebase(and GCP)

使っているサービスをずらりと。これ以外にもあるかも

  • Analytics
  • Crashlytics
  • Cloud Firestore
  • Firebase Cloud Functions
  • Cloud Messaging
  • Firebase Auth
  • BigQuery

守備範囲が広く取れてFirebaseってやつは良いですね

CI

PRごとのテストはGitHub Actions, Deploy系はBitriseって分け方にしています。BitriseはCodemagicでも良いなと思ったのですが、OSSによるPricingの工面がサポートが連絡しないといけなかったのと、証明書等を預けておけてスクリプトが動けばどこでも良いな。って気持ちだったので慣れているBitriseにしました

Web Pages

FAQやリリースノートはWebで管理したほうが便利かつPilllではドキュメントはNotionを最近使用していました。なのでこういった静的に置くWebページもNotionで置いておけたら良い。かつNotionでもデザインをPilllらしくしていけたら良いよね。などの願望を叶えてくれるツールであるAnotionを使用しています。最近公開したばかりなのでコンテンツ等もまだ少ないのですがデザインがカスタマイズできてNotionで書いておけば気軽にホスティングできてとても良きです

Anotionで作ったPilllのページです pilll.anotion.so

楽しい?

ここまで読んで「と言いつつbannzaiは性別♂だから開発しててどうなの」って思う方がいるかもしれません(というか僕もどうなんだろうと思っていた)。最初はとりあえずohanamizukiさんと久しぶりに一緒に開発するのも楽しいし、やりたい技術を試したりできるのと理性で考えたときに市場規模が良い感じにニッチだけどそこそこ大きく、競合も少ないからそういう意味で可能性を感じて身を乗り出しました。それで実際やってみると機能開発等は二人で開発のコスパ含めて議論するのですが、課題自体は割と明確で(おそらくは)何の障害もなく使用者の気持ちになって良い提案ができていたり、その結果AppStoreでの評価や使用者数の数字が右肩上がりに出ているようにポジティブな評価が目に見えたり、意外だったのがアプリ内で用意している問い合わせ用のフォームから礼を言われることもしばしばあります。また、開発者が募るSlackで「最近こういうの作っているんですよ」っていうと意外とユーザーが身近に何人もいたりしてそういうこともありモチベーションは結構高いです。というわけで今楽しんで開発をしています。

まとめ

以上、最近こういう事もやっているよ活動報告でした。ユーザーの人は今後どんな機能追加するの。とか気になる人もいると思いますがそれは今後のお楽しみということで楽しみにしていてください。また機会があったら開発者向けのブログやらサービスを運用していての知見も記事にしていけたら良いなと思っています。

最後に一言だけ、GitHub,AppStore,Google Play Storeのアカウント持っている方へ。ぜひPilllのページまで行って

スターください 🌟

おしまい\(^o^)/