開発
個人開発
Flutter
Rails
SonicGarden Gym

【Flutter 個人開発】スマホアプリ「どのドア」をリリースしました

created: 2023-03-29
399 views

表題の通りですが、初めて製作したスマホアプリがリリースされました!
iOS と Android で若干機能が異なるのですが、どちらでもお使いいただけます。
iOSはこちら / Androidはこちら / サポートページもどうぞ

アプリストアのスクリーンショット
アプリストアのスクリーンショット。検索すると自分の名前が出てくるのはいつも感慨深い

今回は、このアプリについて紹介します。

経緯

2021年12月から ソニックガーデンジム というプログラミングジムに参加しておりまして、2022年12月から3期目を迎えました。

ソニックガーデンジムは、上のリンクには「プログラミング合宿」と記載がありますが、オンラインで3ヶ月ほどの期間限定で開催されるプログラムです。主には、お題に沿ったサービスを実装してひたすらレビューを受け続け、どのように設計すべきなのか、良いコードとは何かについて学び続ける内容になっています。かなり厳しいレビューがバンバン飛んでくるので、ジム生はかなり濃密な3ヶ月を過ごすことになります。僕もジムに参加してかなり成長を実感することができました。
このジムはコミュニティとしての側面も持っており、レビューを受け続けて一通り成長した暁には、次の期でソニックガーデン社員の方々に混じってレビューする側に回ることになります。さらにその次の期は、ジム生同士でお互いにレビューをしながら、自分の好きなサービスを作ることになっていました。

いつかネイティブアプリを作りたいと思っていたし、クロスプラットフォームで開発をしたいなと思っていたので、React Native または Flutter がやりたいと言っていたのですが、 Flutter なら社員の方でレビューができる方がいらっしゃるとのことで、Flutter を選択しました。個人開発なのに友人と一緒に頑張るのでサボってしまうこともなく、さらにレビューもしてもらえるというこれ以上ない環境。とてもありがたいです。

アプリのコンセプト

電車の乗り換えの際、どのドアから乗車したら効率が良いかを教えてくれるアプリを作りました。
乗り換えに便利な乗車位置を把握することはもちろん、大きな駅で多くの人が降りるであろう乗車位置を把握し、座席を確保する確率を上げるためにもお使いいただけます。

父親が電車に乗る時は必ず乗り換えに便利なドアに乗車するのを子供の頃から見ていて、自分が通学に電車を使うようになってからも目の前に階段がくるようなドア番号を探すことが多くありました。今も、乗り換えのたびに案内板を確認して階段に近い場所に乗車しますが、わざわざ案内板を探すのも面倒だし、そもそも案内板では情報量が足りないので、不便に感じていました。では作ってしまおう、というのがこのアプリになります。

使用技術

アプリは Flutter で、API とサポートサイトは一体となったアプリケーションとして Ruby on Rails で実装しました。Rails アプリケーションは AWS にデプロイし、BugSnag でエラー監視を行っています。

苦労した点

一番苦労したのは、実は駅のデータを投入する部分だったかもしれないです。乗り換えに便利なドア番号などというマイナーな情報を提供してくれるAPIなんて(おそらく)存在しないので、全て僕が手入力しているのですが、山手線のデータを入れるだけでもかなりしんどかったです。3,4 路線くらい対応してからバージョン1のリリースをする予定だったはずが、あまりにもしんどかったので山手線だけ対応してリリースする形になってしまいました。これからじわじわ対応していきますので、気長にお待ちいただければ。

リリース段階でも苦労があったのですが、それは別の記事に譲ります。
【Flutter 個人開発】iOSアプリレビューの Minimum Functionality を突破するためにやったこと | ryoito.jp

こだわりポイント

デザインに割とこだわりました。「スマート」「先進的」「速い」イメージで商用利用可能なフォントを探し、アイコンのフォントには851ゴチカクットを選定しました。また、画面が文字文字しくならないように、アイコンの色などで情報を表示するように努めました。

お世話になったサイト

Flutter実践入門 - Zenn
Flutter の基礎的なところはほとんどこのサイトで勉強しました。網羅的に色々なことが書いてあり、とても参考になりました。

サルでもできる!? Rails6 のアプリをAWS EC2にデプロイするまでの全手順【前半】(VPC, RDS, EC2, Capistrano) - Qiita
今回APIのインフラにはAWSを使ってみようと思っていたのですが、AWSでイチからリリースをするのも初めてだったので、この記事をかなり参考にしていました。

これらのサイトで基本を勉強しつつ、詰まったところはひたすらググってなんとか実装し、レビューをいただいてコードを整えるというサイクルでした。

今後

  • まずは、路線の拡充が急務ですね。利用者数の多い路線を中心に頑張っていこうと思っていますが、ご要望があったらお知らせください。
  • 今データの投入は seed ファイルをちょっと改造したシステムで行っているのですが、データ投入のたびに PR を作るのも面倒なので、管理画面を作りたいです。
  • アプリに広告を入れたら、ゆくゆくは AppStore への登録料くらい相殺できないかなあ。

以上です!ぜひ使ってください!