見出し画像

初めて作ったFlutter開発アプリを公式リリースした経緯と裏話

こんにちは。42Tokyoに通っているkkamashiです。

Q:私はどんな人ですか?
A:自己紹介はこちらで書いています。


画像1

前回書いた記事「エンジニアのバイトをGETした一連の求職活動」にて、面接でアピールできるモノとしてスマホアプリ制作をしたことに触れました。

その面接後、面接用にFlutterで開発したスマホアプリを公式リリースしようと思い立ちました。

そして、面接が終わった翌日から準備を開始し、iOS/Android版でリリースするための審査に申請&承認されて、公式リリースされました!


画像2

ダウンロードはこちらから

iOS版
http://is.gd/BR7vTr
Android版http://is.gd/B6Ki2H
アプリの概要

メルカリの販売利益をシンプルに登録して、管理できちゃう便利アプリ


今回の記事では、僕が初めて個人開発して、初めて公式にリリースしたFlutter開発アプリ「MerProfit」の作った経緯とその裏話をしたいと思います。


なんでこのアプリを作ったのか?

画像3

フリマアプリのメルカリ、皆さんもこれまでに一度は使ったことがあるのではないでしょうか?

僕が作ったアプリは、このメルカリで販売して出た利益を簡単に登録して、そのデータを閲覧できたり、カウントした今月や今日の利益の集計をメイン画面で確認できる便利ツールアプリです。


なぜ、このアプリを作ろうと思ったのか?

このきっかけは、僕の妻でした。


妻は、メルカリで着なくなった衣服やアクセサリー、靴とかを販売することが趣味で、毎日のようにメルカリを使っています。

メルカリ大好きな妻には不満がありました。

それは、メルカリでは自分が売ったアイテムの利益を集計したり、蓄積したデータをユーザー側が確認することができないことです。

その声がアイディアとなって、今回のアプリを作ろうと思いました。


なんで公式リリースしようと思ったのか?

画像7

当初は面接用にだけ作っていたアプリだったので、公式にリリースしようとは全く考えていませんでした


では、なぜ公式にリリースしたのか?

それは、同じ42Tokyoに通う生徒から「アプリの公式リリースをしているのか?」という質問を受けたことがきっかけでした。

面接前に作ったアプリのプロトタイプに関してどう思うか気になったため、42Tokyoの生徒たちに意見をもらおうと思いました。

そして、僕が開いたフィードバック会に参加してくれた生徒の一人が、以下のようなことを言ってくれました。

「アプリの公式リリースはしていますか?(僕:してないです)アプリの公式リリースは業績の一つに挙げられるよ。今回は時間がないから無理だけど、時間があったら次回してみるといいよ」

業績の一つ・・・

そう、まだプログラミングを始めたばかりの僕は、何の業績もないエンジニアです。

でも、今回のアプリを公式にリリースしたら、一つレベルアップができるかもしれない

そう思って、面接が終わった翌日から公式にリリースすべく計画を立て始めました。


面接用のプロトタイプ→リリース用のアプリへの変更点

画像4

面接用に制作したプロトタイプのアプリでは、登録した利益データを保存するデータベースとして、Google Cloud Platformが提供するクラウド・データベースのFirebaseを使用していました。

その理由は、Flutterの学習に利用したUdemyのチュートリアル教材で習った唯一のデータベースがこのFirebaseだったからです。そして、導入するのがすごい簡単だからです。


ただし、今回作ったアプリは各ユーザーのデータが蓄積されれば良いのだけの話で、ローカルのデータベースに利益データを保存&参照すればいいのではないかと考えました。

Googleで探すうちに、SQLiteを使ったローカルのデータベースにデータを蓄積して、データを永続化する方法が適していると判断しました。

【参考資料】SQLiteでのデータ永続化

SQLiteの導入はそれほど難しくなかったです。

通っている42Tokyoの課題の中で、ちょうどMySQLを学習していたこともあり、データベース管理システムについても知識があったことも幸いでした。


Flutterの状態管理パターン導入との闘い

画像5

FlutterはUI部分が簡単に、そして本格的に作れるため、Flutter初心者でも簡単にそれなりのアプリを作れる素晴らしいフレームワークだと思います。

僕もFlutterを学習し始めたころ、わずか数時間しか学習していないのに、こんなアプリも作れちゃうことに感動しました。


しかしながら、本格的な自作アプリ、とりわけ少し複雑な処理をともなう部分を作ろうとすると、大きな壁に直面することになりました。

その一つが、状態管理パターンです。

技術的なことに関して深く触れませんが、何かしらのアクションで持つ値の中身に変化が生じる変数を複数のWidget間で共有するために、ChangeNotifieとProviderを導入しています。

このProviderに関しては一度チュートリアルで触れたことがあるような気がしますが、深く理解していなかった&自分だけの力で実装したことがなかったので、導入になかなか苦戦しました。


それ以外にも、StreamBuilderの導入などにも手こずりました。勉強不足です。

そんな分からないことだらけでのアプリ制作でしたが、MediumやStack Overflowの情報に多々助けられながら実装することができました。


いよいよ、公式にリリース

画像6

さて、リリース用の実装も良い感じで終わり、あとはリリースするためにApp Store(iOS)/Google Play Store(Android)に申請するフェーズへと入ります。

ここでも、申請する準備に意外と手こずりました。Androidの方はすんなり申請作業ができたのですが、App Storeの方ではXcodeのエラーもあって、一日かかっても終えられなかったです!笑

最終的には、App Storeから却下されることなく、一発で承認を受けて、公式にリリースすることができました!


終わりに

今思い返すと、アプリを0から自分で作ることの大変さがあった一方で、アプリが公式にリリースされた時に感じた喜びと大きな達成感がありました

もちろん、完璧なアプリを作れたわけでもないし、もっとよくできる箇所は多々あります。また、コードもリファクタリング作業をして、保守管理しやすいコードにする必要があります。

しかし、今回のプロジェクトを自分の力だけで、アプリの公式リリースというゴールまで持っていけたことは、素晴らしい経験を得られ、大きな自信になりました。

今後も、趣味と自分の技術向上のためにモバイルアプリ開発を趣味で続けていけたらと思います。


この記事を読んで、僕が作ったアプリを試してみたいという心優しい方がいらしたら、以下のリンクから是非ダウンロードしてみてください!


ダウンロードはこちらから

iOS版
http://is.gd/BR7vTr
Android版http://is.gd/B6Ki2H


この記事が気に入ったらサポートをしてみませんか?