クソデブだった僕のプラトー現象を救う為にAndroidアプリを作った話

[クソアプリアドベントカレンダー2022 13日目](https://qiita.com/advent-calendar/2022/kuso-app)を担当させていただきます[たかぎとねこ](https://twitter.com/takagimeow)です。

このアドベントカレンダーのテーマはご存知の通りクソアプリです。

なので、**クソ**デブだった僕がダイエットの停滞期を迎えた時に、モチベーションを落とさない為に作り続けた**アプリ**（略してクソアプリ）の開発からリリースまでの経緯を紹介をしようと思います。

## TL;DR

今回リリースしたのは「トレメモ」というアプリです。Google Play Storeでのみ配信中ですので、Androidユーザーの皆様には、ぜひご利用いただけると嬉しいです。

https://play.google.com/store/apps/details?id=com.takagimeow.trainingnoteapplication

## ダイエットを決意したきっかけ

振り返れば今年の1月、夜中に松屋の牛めしを１杯とセコマのおにぎり５個をたいらげた僕は幸せに満ち溢れていました。このときはまだ、自分が太っている存在なのだと気づいてはいなかったのです。
それもそのはず。このとき、僕の家に体重計と呼べるものはありませんでした。そして、自分は７５キロくらいなのだろうと信じていた。
しかしその過信は、アプリと連動できる体重計を購入したことをきっかけに、激震へと変わっていきました。

![名称未設定 (480 × 270 px) (7).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577119/af07b0fa-e691-96f1-03a7-3d2b8334c5f0.png)

なんと、体重**85.2kg**！！！自分が想像していた体重よりも**10kg**のオーバー。それはまだ1月10日のこと。新春にもかかわらず僕の心はトンネルへと入っていきました。

## 食事制限の開始と減量の兆し

これではまずいと思い立ち、新春からダイエットを開始。まずは食べ過ぎだった食事量の改善に努めました。
半年かけて、なんとか食事の改善に成功し、**85.2kg**あった体重は６月までに**75kg**にまで減量させることができました。

![名称未設定 (480 × 270 px) (8).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577119/b8c7ff41-3c07-5bca-205c-3837eed7a761.png)

しかし約**10kg**の減量に成功と言っても、デブがぽっちゃりに変わっただけのこと。ここからが停滞期の始まりでした。**75kg**をいったりきたりする時期が約１ヶ月間続くことになるのです。

## 停滞期と筋トレの開始

食事制限に限界を感じていた最中、ただ痩せるだけなのは勿体無いと思い筋肉をつけようと考えました。
そこで、前々からやってみたいと思っていた腹筋ローラーを購入してみることにしました。

https://www.amazon.co.jp/gp/product/B088G8MN3K/ref=ppx_yo_dt_b_asin_title_o07_s00?ie=UTF8&psc=1

もちろん最初から腹筋ローラーをうまく使いこなせるわけもなく、すぐさま諦めムードになったのですが、YouTubeの動画を何度もみたりしながら少しずつやっていこうと決心することで、回数は少ないながらも毎日続けることができるようになりました。

https://www.youtube.com/watch?v=kpPOgkmRkNc&t=267s

この辺りから、他の筋トレメニューも取り入れて朝と夜のルーティンで行うようにしていきました。

メニューは次の通りです。

- 腹筋ローラー
    - 100回
- ニートゥチェスト
    - 120回
- プランク
    - 1分間
- 腕立て伏せ
    - 30回
- スクワット
    - 60回
- ランニング
    - 5km

そして、やった回数を覚えておく為に、行った回数をTwitterの下書きに残したりGoogleのKeepメモに残したりするようになりました。

![名称未設定 (480 × 270 px) (9).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577119/be218720-279d-4f4c-9f16-efcc7e8c3b8e.png)


効果がではじめたのが筋トレを開始してから約１ヶ月後の7月初旬。今まで**75kg**を往復していたグラフは一気に下降傾向に入りはじめました。

![名称未設定 (480 × 270 px) (10).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577119/03c323e3-8df7-b108-985a-e738812f3875.png)


## React Nativeでアプリを作る

ただ、僕も普通の人間なのでやる気が出ないこともあり、無意味に筋トレをしたり痩せることの意味を考えはじめたりすることもしばしばありました。
そこで思いついたのが、自分が**ヘビーユーザー**になれるアプリを作ることでした。
今までTwitterの下書きやGoogleのKeepメモで手打ちするのがとても面倒くさい状況だったので、これを専用のアプリで簡単にできるように実装したいと思い、筋トレメモアプリの開発に着手することになります。

今振り返ってみると、この時に自分が一番使いたいアプリを作ること選択をしたことこそが、ダイエットと個人開発の両方のモチベーションの維持に貢献したのだなと思います。

最初は普段開発に使用しているReact Nativeを使ってAndroidアプリを作り始めることにしました。

デザインのワイヤーフレームは次のような感じで作成していました。
![名称未設定 (480 × 270 px) (11).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577119/0c49026d-1d85-8169-7b45-b8edc9099f8d.png)

構成としては、クライアントをReact Native(Expo)で開発し、認証機能やBFFとしての役割をFirebaseで実装し、サーバーサイドをConohaのVPSで動くNestJSで実装するという内容にしていました。

実際に完成したアプリの画面が次のようになります。

![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577119/d3ca2902-1a38-e010-daec-45b0d10d3de8.png)

![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577119/47628d23-2270-61bb-f558-d9cfca52630c.png)

![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577119/19388d54-aa0f-ba88-25ba-8216a382ddfa.png)

アプリを開発しはじめたことが功を奏し、アプリが完成する頃にはなんと**67kg**に到達していました。
やはり、開発中のアプリを改善する為に毎日筋トレを行う必要がある状況に自分の身を置くことが、ダイエット停滞期の最大のブーストになりました。この期間にランニングもはじめたので、フィットネスを中心とした生活に向かいはじめていきました。

![名称未設定 (480 × 270 px) (12).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577119/7759381b-bffa-f989-7a05-2e5417748443.png)

しかし、このアプリに採用した構成や実装方法が大きな原因なのですが、アニメーションがもっさりしていたり、データの読み込みに時間がかかったりしていて、使うたびにストレスが溜まるようになっていきました。改善方法はいろいろと思いつくのですが、今更React Nativeアプリのリファクタリングを行うにあたってはモチベーションが下がりつつありました。

## AndroidアプリをKotlinで作りたいという衝動

そんな時、僕はGalaxy Z Flip3という折りたたみスマホと運命的な出会いをすることになりました。

![名称未設定 (480 × 270 px) (13).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577119/5367ffe5-4f91-12c5-a870-f604ab8bf794.png)

この端末のために、Kotlinで書かれたアプリを作りたいと思うようになってしまい、そこからKotlinを勉強し始めることに。そして、[Droid Kaigi 2022](https://droidkaigi.jp/2022/)が開催される頃には簡単なアプリ程度なら作れるようになっていました。この[Droid Kaigi 2022](https://droidkaigi.jp/2022/)の開催がちょうどこのブーストされた時期に重なってくれたことがきっかけで、さらにKotlin熱とAndroid熱が加速していくことになります。

今までReact Nativeで開発していた画面構成を基にJetpack Composeで再構築し、デザインにはMaterial Design 3を採用しました。プロジェクトの構成としてはマルチモジュールを採用し、よりモダンな開発体験を得られるように設計を心がけました。

![名称未設定 (480 × 270 px) (14).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577119/8b827282-3a1e-0347-f096-4a0540b3cc1b.png)

Hiltを積極的に活用し、DIを使用したテストのしやすさも意識しました。

```kotlin
...
@InstallIn(SingletonComponent::class)
@Module
class DatabaseModule {

    @Singleton
    @Provides
    fun provideAppDatabase(@ApplicationContext context: Context): AppDatabase
    {
        return AppDatabase.getDatabase(context)
    }
}
```

ただ、マルチモジュールにおける`feature`や`core`といったモジュールに切り分ける際の名前の付け方や、ドメインごとの配置方法だったりは未だに悩む部分であり、これから開発をたくさん重ねて解消していきたいです。

マルチモジュールを意識した開発を行う際に参考にしたのが[nowinandroid](https://github.com/android/nowinandroid)のリポジトリです。コードを読めば読むほど勉強になることがありすぎるので本当にオススメです。

## 20kgの減量を達成

そして、悲劇を味わった1月から約11ヶ月後の11月6日、僕の体重はなんと**64.2kg**に到達しました！！！つまり１年かけて約**20kg**もの減量に成功したというわけです！！！

![名称未設定 (480 × 270 px) (15).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577119/99d33caa-7215-94c6-d76b-f03efbfb0719.png)

ようやく正常な体重に戻ることができました😭
雨の日も風の日も走り続けて良かった。
会社の健康診断の時に、計測された体重計の表示を見て「前回と大きな差がありますが、これで間違いありませんか？」と確認されたことは地味に嬉しかったです。

## そしてリリースへ

Androidの開発を本格的に始めてから約３ヶ月後のことです。
晴れて2022年12月8日、Google Play Storeに、１年間に及ぶダイエットの集大成である「トレメモ」をリリースすることができました。

https://play.google.com/store/apps/details?id=com.takagimeow.trainingnoteapplication

![名称未設定 (480 × 270 px) (16).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577119/9dcba136-52cc-8cd4-4ac3-faef7afcbd34.png)


## まとめ

個人開発でアプリやサービスを作る際に大事なのは、どんな状態だったとして作りきってしまうことだとよく言われています。
ただ、作り切るまでに作りたいものが変わってしまったり、開発を続ければ続けるほど完成まで果てしない道なのがわかってしまい、途中で諦めてしまうということを今まで何度も経験してきました。

今回、たまたま僕のダイエットと作りたいアプリの内容をマッチさせることができたため、アプリをリリースするまでに到達することができたと思っています。
今年１年を振り返って、自分が１番のヘビーユーザーになれるアプリを作ることこそが、個人開発のモチベーションを維持する上でとても大事なことなんだと改めて気付かされました。

そして、今年思ったことはAndroid最高！筋トレ最高!アプリ開発最高！ということです。
筋トレもダイエットもアプリ開発も、毎日コツコツやってたらなんとかなるので、もし同じように壁にぶち当たっている人がこの記事を読んで来年から少しずつやってみようと思っていただけたら嬉しいです！

みなさん引き続き[クソアプリ Advent Calendar 2022](https://qiita.com/advent-calendar/2022/kuso-app)をよろしくお願いいたします。