個人の中規模アプリ開発での課題とアプローチ
はじめに
最近、Flutterを使って個人でアプリを開発しております。
配信サービスのAPIから情報を取得して、見れるようにしてます。
私にとって初めての中規模アプリ開発であり、多く課題が発生しました。そこで実行したアプローチをいくらかアウトプットします。
結論.楽をする
これからお伝えすることは、これに集約されます。
1.コードがごちゃごちゃする。
A.アーキテクチャを採用する
中規模となるとコードは肥大化するので、必然的にコードを管理することは必要になりました。
具体的にはコードの役割を明確にして、フォルダ/ファイルに分けるようになりました。
アーキテクチャとしては、Clean AchitectureとMVCとアトミックデザインをかけ合わせたようなものになっています。
Figmaにまとめましたが、画像で貼ったら見にくかったのでFigmaのリンク貼ります。
逆三角形っぽくなってるのは、View側もDB側もレイヤーが深くなるにつれて数が増えているため、ピラミッドに似ているなと思ったためです。
2.API処理がまとまらない
A.DBからの情報取得を一元化する
アプリのやりたいことは結局、配信サービスAPIから取得した情報をフロントに表示することだけです。そのため、一部保存が必要な情報のみFirebaseに保存してからアプリで取得して、保存不要な情報は配信APIから直接アプリで取得していました。
そのため、コードが肥大化して管理がめんどくさくなりました。以下の三つのコードが必要だからです。
- Firebaseから情報を取得するコード
- 配信サイトAから情報を取得するコード
- 配信サイトBから情報を取得するコード
そこで、保存不要な情報もFirebaseに保存してしまうことで、情報の取得方法を一元化して設計を楽にしました。結果、以下のコードだけになりました。
- Firebaseから情報を取得するコード
それまでは、配信サービスごとに分けてapi処理を管理していたのですが、Firebaseに一元化してDB周りの処理が大体消えました。
(補足ですが、Firebaseへの配信情報保存はFirebase Functionsで行なっています。)
3.やる気
A.めんどくさいことはやらない
納期と責任はありません。あるのは企画のモチベーションだけです。そのため、モチベーションが尽きないようにすることは最重要タスクです。モチベーションが失われてしまえばその企画はボツです。
具体的には自分がめんどくさいと感じること、やりたくないと感じることは極力減らしてあげる必要があります。やる気が尽きないように自分の面倒を見てあげる必要があります。
開発ツール
Git以外は現状めんどくさいので使っていません。
Git以外では、せいぜいmacのメモアプリで思考整理するくらいです。
WBSやJiraでPJ徹底管理などあり得ません。やる気が死んでしまいます。
なんなら、Gitもめんどくさくなったら使いません。
コードのコメント
自分がわかればイイので、しっかりdocを書くことなんてしません!うまくコメントを書く暇があれば少しでもコードを書いたり、デザインを考える時間に当てます。
そもそもコメントを書かなくてもいいように、わかりやすいコードを書くことは一応意識しています。そのためのアーキテクチャです。
後から見返した時に、たまーに自分のコードがわからなくなることはあります。
テスト
もちろん不具合の少ないアプリにすることは重要ですが、テストはそこまでしっかりしません。せいぜい単体テストくらいです。マトリクスは組んでいません。
そもそも、テストに大きく時間を割くくらいなら、不具合の根本である設計/コードを見直した方が有意義だと感じております。
一度、マトリクスを組んで試験ケース数を導き、エクセルにまとめようと思ったら「私は何をしているんだろう」と悲しくなったので、やらないことにしました。
設計書
ここまで来れば当たり前ですが、当然設計書なんてありません。
まとめ
とにかく、お金もかけず自分というリソースのみで開発する上で、思考の手間を極力削減することが必要に感じました。
アーキテクチャでの開発を実行するのもコード管理を効率化するため、DBの一元化もDB設計を効率化するため、要は楽をしたいからです。
できるだけ頭を悩ませる時間を減らし、ノンストレスでどれだけ開発できるか。
それが個人での開発の肝な気がしています。
個人開発者、その他何か取り組む方に刺さる記事であれば幸いです。
Discussion