2021年4月にアンガーログを行うスマートフォンアプリ「鬼ロク」をリリースしたので、個人開発するにあたって苦労した話やアプリの紹介を書いておこうと思います。
個人開発を行ってみたいという方や、流れが気になる方は読んでみてください!
アプリの紹介
このアプリを使って怒りをキロクして分析することで、自身の「コアビリーフ(ゆずれないこと)」を把握して怒りをコントロールする手法「アンガーマネジメント」を実践することが出来ます。
![](https://tokku-engineer.tech/wp-content/uploads/cocoon-resources/blog-card-cache/bd95586663423526540cc32532a9a7da.png)
UI
Flutterのmaterialで作っています。トップ画面はこんな感じ
![](https://tokku-engineer.tech/wp-content/uploads/2021/09/Simulator-Screen-Shot-iPhone-8-Plus-2021-04-07-at-00.01.51-1-576x1024.png)
アンガーマネジメント
このアプリのコンセプトはアンガーマネジメントです。
アンガーマネジメントとは、日々感じる怒り(アンガー)が発生する原因を分析して、適切に怒りの感情をコントロールすることにより、自分や周りの人間との関係を良くしていこうという考え方です。
現代のハラスメントが問題になっている社会情勢にはピッタリの考え方で、自分でも是非実践したいと思い、日々の怒りを記録できるアプリを開発しました。
多くの人に使ってもらい、怒りをコントロールするのに役立ててほしいです。
機能紹介
怒りを感じたときに、怒りを感じたことと怒りのレベルを記録することができます。記録した怒りのレベルがグラフで表示されます。
分析画面では、怒りをよく感じている場所や、頻度などが表示されます(分析項目は少ないです ><)
工程
自分一人で開発したので、きちんと工程を分けたわけではないですが、ざっくり以下のような流れで開発を勧めました。
企画と機能洗い出し
そもそも11月頃からFlutterを勉強し始め、Kotlinでのアプリ開発よりかなり早く開発ができると感じていたので、Flutterでなにか一つアプリを作りたいなーと考えていました。
こういうアプリがあったらいいな〜というアプリのアイディアの中から、比較的実装が簡単そうなこのアンガーマネジメントのアプリを作成することにしました。
アプリのコアとなる部分は、怒りを記録することなので、要するにメモアプリです笑
メモアプリを単なるメモアプリとせず、付加価値をつけることでサービスとして成り立つのではないかな?思いました。
機能としては開発当初は以下を想定していました。
開発準備
開発に必要なものを準備していきます。
これまで主にWindows機を使っていたのですが、Flutterで開発するならiOSでもリリースしたかったので、これを機にMac Book Proを買いました。
MacBookProきた pic.twitter.com/9vghSyd9qC
— とっく/ITインフラ&Flutter💙(ex.ggrks) (@tokkuu) September 29, 2020
M1が出るまでまとうか迷いましたが、CPUのアーキテクチャが変わると主に仮想化技術周りで苦労することは目に見えていたので、待たずにM1がでるぎりぎり前のモデルにしました。
環境構築についてもYouTubeなど見ながら難なく行えました。
デザイン
デザインは誰とも共有する必要もなかったので、作りながら決めていきました。
FlutterはWidgetを組み合わせて画面を作っていくので、とりあえず適当に画面を作っていき後でまとめて修正することにしました。
今作ってるアプリ。色が散らかってるので統一感持たせたい。 pic.twitter.com/gDIZfRDRy9
— とっく/ITインフラ&Flutter💙(ex.ggrks) (@tokkuu) December 3, 2020
アプリのロゴとアプリ名
Twitterで見つけたロゴ制作を主に行っている 723.Design(なつみデザイン) さんにお願いしました。ココナラからお願いできるようです。
ココナラでイラストを発注
723.Designさんにはアプリのコンセプトや、ペルソナのイメージをお伝えして、アプリの名前も案を頂きました。
全体的な色味と、アプリのフォント選定にもお力添えを頂きました。デザイナーの方と初めて仕事を一緒にした瞬間でもありました。
コーディングとテスト
この時点でコーディングは着々と進んではいるのですが、テストを少し組み込みました。
テストのやり方についてはこちらで登壇もしました。
特に大した統計処理はしていないものの、内部で計算している部分があるのでそのあたりはケースをいくつか分けてテストを行いました。
基本的にUnitTestのみで、上記の登壇でもあったように、GitHub Actionsとcodecovでカバレッジ計測まで自動化しています。
Qiitaで記事も書いているので、詳しくはそちらを御覧ください。
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9JUUzJTgwJTkwRmx1dHRlciVFMyU4MCU5MUdpdEh1YkFjdGlvbnMlRTMlODElQTclRTMlODMlODYlRTMlODIlQjklRTMlODMlODglRTMlODElQTglRTklOUQlOTklRTclOUElODQlRTglQTclQTMlRTYlOUUlOTAlRTMlODIlOTIlRTglODclQUElRTUlOEIlOTUlRTUlOEMlOTYlRTMlODElOTklRTMlODIlOEImdHh0LWFsaWduPWxlZnQlMkN0b3AmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZzPTJlZDE5ZWI4YmUzODU4MjAyNGEyODdlZGRjZmQ1YTQz&mark-x=142&mark-y=57&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDB0b2trdW41NTUyJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz01NWMyYzE5YTlhOWM5YWIwNWI4NDczMjRkZmYxODkyNA&blend-x=142&blend-y=436&blend-mode=normal&txt64=aW4gRmx1dHRlcuWkp-Wtpg&txt-width=770&txt-clip=end%2Cellipsis&txt-color=%23212121&txt-font=Hiragino%20Sans%20W6&txt-size=36&txt-x=156&txt-y=536&s=51530e36bc14b3a24eeb6fbd7e3cd3bc)
リリース
初めての個人アプリということで、リリースは結構苦戦しました。
AndroidのGoogle Playへのリリースははじめ鍵の設定がうまく行かずやり直す羽目に、、、
iOSの方も、証明書周りで苦戦してやっとのことで審査に出しても3回ほどリジェクト喰らいました、、、
これを乗り越えないとリリースできません、、、厳しいですね
リリースについての記事もいつか書こうと思います。
FirebaseでLPも作成
せっかくFirebase使っているので、アプリのLPも作成しました。
![](https://tokku-engineer.tech/wp-content/uploads/cocoon-resources/blog-card-cache/bd95586663423526540cc32532a9a7da.png)
テンプレートを無料のものを探してカスタマイズして使っています。
LPを作る以外にも、iOSでの審査の際にプライバシーポリシーをアプリをインストールしていない状態でも表示できるようにしておく必要があるとのことでしたので、プライバシーポリシーのページも兼ねて作っています。
まとめ
初めての個人アプリのリリースについてメモ書き程度にまとめてみました。
個人でなにか作りたくて、特にネイティブアプリを作ろうと考えている人はFlutterがおすすめです。
KotlinやSwiftで書くとAndroid/iOSでリリースしようとしたときに、それぞれコードを書かなくてはいけないことと、最近ではほとんどネイティブでできることはプラグインのおかげでFlutterでもできるようになっています。
また、ネイティブの開発よりも、ホットリロードなどが効くため、書いていて気持ちいいです笑
モチベーションを保つためにもこれは結構大事かなと思います。動きが変わる様子がすぐに確認できるので、作っていて面白いです。
コメント