🚀

【個人開発】飲んだ日本酒を記録できるアプリをリリースしました

2024/10/17に公開

ご覧いただき、ありがとうございます。
この度、個人開発アプリをリリースいたしました。

どんなアプリをリリースした?

飲んだ日本酒を記録することができるアプリです。
ダウンロードはこちらから
https://apps.apple.com/jp/app/日本酒ログ/id6590626875

  • 日本酒の登録
    • メタ情報:名称、酒蔵など
    • レビュー:評価や味わいなど
  • 一覧画面で閲覧・検索
    • 飲んだ・飲みたいに分けて閲覧、ソート可能
    • 銘柄・酒蔵で検索

なぜ作った?

日本酒を飲むのが好きで、普段から居酒屋や酒屋で買って飲んでいます。

なるべく、色々な種類を飲みたいので、毎回別の銘柄を飲んでいるのですが、『どれを飲んで、どんな味だったか』を覚えれられずにいました。

そこで、AppStoreで飲んだ日本酒を記録するアプリを探してみたのですが、有名アプリがプライベートSNSになっていて、個人的に機能が重すぎると感じました。

もっとシンプルな機能でいいのにと思ったので、「自分で作ってみよう。」となりました。

目指してる姿

機能自体はシンプルに登録と検索だけでいいのですが、UI/UXにはこだわりたいです。
日本酒は酔った状態で登録することが多いので、ユーザの負担にならないような導線にしたいです。

自分がユーザ1号なので、気づいた点は改善を繰り返していこうと思います。

まだ決まりきってないですが、、、
記録する楽しさをユーザに感じてもらうためにゲーム要素を取り入れたり、SNSに日本酒の感想を書いている層を取り込むような機能も増やしていきたいです。

使用技術

用途 技術
モバイル Flutter
API FastAPI
インフラ AWS(API Gateway / Lambda / Dynamo DB / S3)

各選定理由

Flutter

  • 将来的にandroidのリリースも見据えて
  • swiftはxcodeが重い印象あったので

FastAPI

  • Java/Kotlinと静的型付け言語は学んだので動的もやってみよう
  • Fast APIはpythonフレームワークの中でgitスター数が3位かつ伸びている
  • APIだけなので軽量フレームワークがいい

AWS

  • 本業で使っているので勉強も兼ねてAWSを選定
  • サーバ代がなるべくかからないように、最小コストが低いサービスを選定

わざわざバックエンドにapiを立てなくても、サーバレスを使用すれば簡単でしたが、その辺りは勉強も兼ねて、選定しました。
次回作成するときは、Firebaseを使用してみたいです。

工夫した点/大変だった点

画像周り

「日本酒の画像を登録できて、一覧画面と詳細画面で表示で可能」と仕様としてはシンプルなのですが、フロント側を普段触らないので、実装に苦労しました。

意外と考慮すべきパターンが多いと感じました。

  • 画像が登録されていなければ、Picture IconNo Image Iconを表示
  • 保存ボタンを押さずに戻った場合は、画像を登録しない
  • 2枚目のみ登録された場合

また、表示する際にS3から取得しており、毎回取得するのは、UX上良くないと思いました。
ユーザ目線で通信量がかかるし、表示までの待ち時間も発生するので、デバイスにキャッシュする仕組みにしています。

複数パターンにキャッシュが組み合わさったことによって、さらに難易度が上がりました。
Flutter側のコードが冗長になりつつあるので、リファクタしたいです。

RDBからNoSQL

DBに、最初はMySQLを使用していました。
ところが、AWSの設計をするフェーズ入り、RDSを使用すると、DynamoDBより金額がかかりそうなことに気づきました。

この時点でプロトタイプを作成していたので、再度DB設計とライブラリ選定をする羽目になりました。

認証周り

認証周りは外部サービスを利用すれば、あまり意識する必要はなかったのでしょうが、API側で自前で実装いたしました。

こちらの記事にもしました。
https://zenn.dev/tnakano/articles/a2245ec1b55c63
https://zenn.dev/tnakano/articles/072ee0fcd93433

ログインの仕組み自体は、そこまで難しくなかったのですが、認証期限が切れた場合の挙動などは、Flutter側の制御に苦労しました。

最後に

初めて、App Storeにアプリをリリースしてみて、苦労した点や学べた点、様々見つかりました。
本業の実務では、なかなか自由にプロダクトを開発することはできないので、技術選定から開発は新鮮で楽しかったです。
技術よりではない感想は、Noteに記事を出す予定です。
アプリはリリースしてからが、本題なので、これからも改善を続けていきたいと思います。

最後まで読んでいただき、ありがとうございます。

Discussion