🙄

個人の中規模アプリ開発での課題とアプローチ

2024/01/25に公開

はじめに

最近、Flutterを使って個人でアプリを開発しております。
配信サービスのAPIから情報を取得して、見れるようにしてます。

私にとって初めての中規模アプリ開発であり、多く課題が発生しました。そこで実行したアプローチをいくらかアウトプットします。

結論.楽をする

これからお伝えすることは、これに集約されます。

1.コードがごちゃごちゃする。

A.アーキテクチャを採用する

中規模となるとコードは肥大化するので、必然的にコードを管理することは必要になりました。
具体的にはコードの役割を明確にして、フォルダ/ファイルに分けるようになりました。

アーキテクチャとしては、Clean AchitectureとMVCとアトミックデザインをかけ合わせたようなものになっています。

Figmaにまとめましたが、画像で貼ったら見にくかったのでFigmaのリンク貼ります。

https://www.figma.com/file/0krIUUNL7hwRnx8sdeAgOv/無題?type=design&node-id=0%3A1&mode=design&t=VhuWcVJsjshlNoRu-1

逆三角形っぽくなってるのは、View側もDB側もレイヤーが深くなるにつれて数が増えているため、ピラミッドに似ているなと思ったためです。

2.API処理がまとまらない

A.DBからの情報取得を一元化する

アプリのやりたいことは結局、配信サービスAPIから取得した情報をフロントに表示することだけです。そのため、一部保存が必要な情報のみFirebaseに保存してからアプリで取得して、保存不要な情報は配信APIから直接アプリで取得していました。
そのため、コードが肥大化して管理がめんどくさくなりました。以下の三つのコードが必要だからです。

  1. Firebaseから情報を取得するコード
  2. 配信サイトAから情報を取得するコード
  3. 配信サイトBから情報を取得するコード

そこで、保存不要な情報もFirebaseに保存してしまうことで、情報の取得方法を一元化して設計を楽にしました。結果、以下のコードだけになりました。

  1. Firebaseから情報を取得するコード

それまでは、配信サービスごとに分けてapi処理を管理していたのですが、Firebaseに一元化してDB周りの処理が大体消えました。

(補足ですが、Firebaseへの配信情報保存はFirebase Functionsで行なっています。)

3.やる気

A.めんどくさいことはやらない

納期と責任はありません。あるのは企画のモチベーションだけです。そのため、モチベーションが尽きないようにすることは最重要タスクです。モチベーションが失われてしまえばその企画はボツです。

具体的には自分がめんどくさいと感じること、やりたくないと感じることは極力減らしてあげる必要があります。やる気が尽きないように自分の面倒を見てあげる必要があります。

開発ツール

Git以外は現状めんどくさいので使っていません。
Git以外では、せいぜいmacのメモアプリで思考整理するくらいです。
WBSやJiraでPJ徹底管理などあり得ません。やる気が死んでしまいます。
なんなら、Gitもめんどくさくなったら使いません。

コードのコメント

自分がわかればイイので、しっかりdocを書くことなんてしません!うまくコメントを書く暇があれば少しでもコードを書いたり、デザインを考える時間に当てます。
そもそもコメントを書かなくてもいいように、わかりやすいコードを書くことは一応意識しています。そのためのアーキテクチャです。
後から見返した時に、たまーに自分のコードがわからなくなることはあります。

テスト

もちろん不具合の少ないアプリにすることは重要ですが、テストはそこまでしっかりしません。せいぜい単体テストくらいです。マトリクスは組んでいません。
そもそも、テストに大きく時間を割くくらいなら、不具合の根本である設計/コードを見直した方が有意義だと感じております。
一度、マトリクスを組んで試験ケース数を導き、エクセルにまとめようと思ったら「私は何をしているんだろう」と悲しくなったので、やらないことにしました。

設計書

ここまで来れば当たり前ですが、当然設計書なんてありません。

まとめ

とにかく、お金もかけず自分というリソースのみで開発する上で、思考の手間を極力削減することが必要に感じました。

アーキテクチャでの開発を実行するのもコード管理を効率化するため、DBの一元化もDB設計を効率化するため、要は楽をしたいからです。

できるだけ頭を悩ませる時間を減らし、ノンストレスでどれだけ開発できるか。
それが個人での開発の肝な気がしています。

個人開発者、その他何か取り組む方に刺さる記事であれば幸いです。

Discussion