クソアプリアドベントカレンダー2022 13日目を担当させていただきますたかぎとねこです。
このアドベントカレンダーのテーマはご存知の通りクソアプリです。
なので、クソデブだった僕がダイエットの停滞期を迎えた時に、モチベーションを落とさない為に作り続けたアプリ(略してクソアプリ)の開発からリリースまでの経緯を紹介をしようと思います。
TL;DR
今回リリースしたのは「トレメモ」というアプリです。Google Play Storeでのみ配信中ですので、Androidユーザーの皆様には、ぜひご利用いただけると嬉しいです。
ダイエットを決意したきっかけ
振り返れば今年の1月、夜中に松屋の牛めしを1杯とセコマのおにぎり5個をたいらげた僕は幸せに満ち溢れていました。このときはまだ、自分が太っている存在なのだと気づいてはいなかったのです。
それもそのはず。このとき、僕の家に体重計と呼べるものはありませんでした。そして、自分は75キロくらいなのだろうと信じていた。
しかしその過信は、アプリと連動できる体重計を購入したことをきっかけに、激震へと変わっていきました。
なんと、体重85.2kg!!!自分が想像していた体重よりも10kgのオーバー。それはまだ1月10日のこと。新春にもかかわらず僕の心はトンネルへと入っていきました。
食事制限の開始と減量の兆し
これではまずいと思い立ち、新春からダイエットを開始。まずは食べ過ぎだった食事量の改善に努めました。
半年かけて、なんとか食事の改善に成功し、85.2kgあった体重は6月までに75kgにまで減量させることができました。
しかし約10kgの減量に成功と言っても、デブがぽっちゃりに変わっただけのこと。ここからが停滞期の始まりでした。75kgをいったりきたりする時期が約1ヶ月間続くことになるのです。
停滞期と筋トレの開始
食事制限に限界を感じていた最中、ただ痩せるだけなのは勿体無いと思い筋肉をつけようと考えました。
そこで、前々からやってみたいと思っていた腹筋ローラーを購入してみることにしました。
もちろん最初から腹筋ローラーをうまく使いこなせるわけもなく、すぐさま諦めムードになったのですが、YouTubeの動画を何度もみたりしながら少しずつやっていこうと決心することで、回数は少ないながらも毎日続けることができるようになりました。
この辺りから、他の筋トレメニューも取り入れて朝と夜のルーティンで行うようにしていきました。
メニューは次の通りです。
- 腹筋ローラー
- 100回
- ニートゥチェスト
- 120回
- プランク
- 1分間
- 腕立て伏せ
- 30回
- スクワット
- 60回
- ランニング
- 5km
そして、やった回数を覚えておく為に、行った回数をTwitterの下書きに残したりGoogleのKeepメモに残したりするようになりました。
効果がではじめたのが筋トレを開始してから約1ヶ月後の7月初旬。今まで75kgを往復していたグラフは一気に下降傾向に入りはじめました。
React Nativeでアプリを作る
ただ、僕も普通の人間なのでやる気が出ないこともあり、無意味に筋トレをしたり痩せることの意味を考えはじめたりすることもしばしばありました。
そこで思いついたのが、自分がヘビーユーザーになれるアプリを作ることでした。
今までTwitterの下書きやGoogleのKeepメモで手打ちするのがとても面倒くさい状況だったので、これを専用のアプリで簡単にできるように実装したいと思い、筋トレメモアプリの開発に着手することになります。
今振り返ってみると、この時に自分が一番使いたいアプリを作ること選択をしたことこそが、ダイエットと個人開発の両方のモチベーションの維持に貢献したのだなと思います。
最初は普段開発に使用しているReact Nativeを使ってAndroidアプリを作り始めることにしました。
デザインのワイヤーフレームは次のような感じで作成していました。
構成としては、クライアントをReact Native(Expo)で開発し、認証機能やBFFとしての役割をFirebaseで実装し、サーバーサイドをConohaのVPSで動くNestJSで実装するという内容にしていました。
実際に完成したアプリの画面が次のようになります。
アプリを開発しはじめたことが功を奏し、アプリが完成する頃にはなんと67kgに到達していました。
やはり、開発中のアプリを改善する為に毎日筋トレを行う必要がある状況に自分の身を置くことが、ダイエット停滞期の最大のブーストになりました。この期間にランニングもはじめたので、フィットネスを中心とした生活に向かいはじめていきました。
しかし、このアプリに採用した構成や実装方法が大きな原因なのですが、アニメーションがもっさりしていたり、データの読み込みに時間がかかったりしていて、使うたびにストレスが溜まるようになっていきました。改善方法はいろいろと思いつくのですが、今更React Nativeアプリのリファクタリングを行うにあたってはモチベーションが下がりつつありました。
AndroidアプリをKotlinで作りたいという衝動
そんな時、僕はGalaxy Z Flip3という折りたたみスマホと運命的な出会いをすることになりました。
この端末のために、Kotlinで書かれたアプリを作りたいと思うようになってしまい、そこからKotlinを勉強し始めることに。そして、Droid Kaigi 2022が開催される頃には簡単なアプリ程度なら作れるようになっていました。このDroid Kaigi 2022の開催がちょうどこのブーストされた時期に重なってくれたことがきっかけで、さらにKotlin熱とAndroid熱が加速していくことになります。
今までReact Nativeで開発していた画面構成を基にJetpack Composeで再構築し、デザインにはMaterial Design 3を採用しました。プロジェクトの構成としてはマルチモジュールを採用し、よりモダンな開発体験を得られるように設計を心がけました。
Hiltを積極的に活用し、DIを使用したテストのしやすさも意識しました。
...
@InstallIn(SingletonComponent::class)
@Module
class DatabaseModule {
@Singleton
@Provides
fun provideAppDatabase(@ApplicationContext context: Context): AppDatabase
{
return AppDatabase.getDatabase(context)
}
}
ただ、マルチモジュールにおけるfeature
やcore
といったモジュールに切り分ける際の名前の付け方や、ドメインごとの配置方法だったりは未だに悩む部分であり、これから開発をたくさん重ねて解消していきたいです。
マルチモジュールを意識した開発を行う際に参考にしたのがnowinandroidのリポジトリです。コードを読めば読むほど勉強になることがありすぎるので本当にオススメです。
20kgの減量を達成
そして、悲劇を味わった1月から約11ヶ月後の11月6日、僕の体重はなんと64.2kgに到達しました!!!つまり1年かけて約20kgもの減量に成功したというわけです!!!
ようやく正常な体重に戻ることができました😭
雨の日も風の日も走り続けて良かった。
会社の健康診断の時に、計測された体重計の表示を見て「前回と大きな差がありますが、これで間違いありませんか?」と確認されたことは地味に嬉しかったです。
そしてリリースへ
Androidの開発を本格的に始めてから約3ヶ月後のことです。
晴れて2022年12月8日、Google Play Storeに、1年間に及ぶダイエットの集大成である「トレメモ」をリリースすることができました。
まとめ
個人開発でアプリやサービスを作る際に大事なのは、どんな状態だったとして作りきってしまうことだとよく言われています。
ただ、作り切るまでに作りたいものが変わってしまったり、開発を続ければ続けるほど完成まで果てしない道なのがわかってしまい、途中で諦めてしまうということを今まで何度も経験してきました。
今回、たまたま僕のダイエットと作りたいアプリの内容をマッチさせることができたため、アプリをリリースするまでに到達することができたと思っています。
今年1年を振り返って、自分が1番のヘビーユーザーになれるアプリを作ることこそが、個人開発のモチベーションを維持する上でとても大事なことなんだと改めて気付かされました。
そして、今年思ったことはAndroid最高!筋トレ最高!アプリ開発最高!ということです。
筋トレもダイエットもアプリ開発も、毎日コツコツやってたらなんとかなるので、もし同じように壁にぶち当たっている人がこの記事を読んで来年から少しずつやってみようと思っていただけたら嬉しいです!
みなさん引き続きクソアプリ Advent Calendar 2022をよろしくお願いいたします。