個人で作ったイベントスケジュール管理アプリをリリースしました

個人で作ったイベントスケジュール管理アプリ「通知くん」をリリースしました!

リリースしたアプリ

"通知くん"

iOS版

‎「通知くん - イベントスケジュール管理」をApp Storeで
‎◆主な機能 • 新商品の発売開始、スマホゲームのイベントなどのスケジュールを登録できます • 登録したイベント開始日時の前にプッシュ通知で開始をお知らせします • アカウント連携で機種変更してもデータを引き継げます 利用規約:https://shining-tank-11e.notion.site/7bcc38e153f34ba5bae8096f39ca4eb6 プライバシーポリシー:https://shining-tank-11e.notion.site/2efd5fbf95ed4b419b0f5b589fa8bae9
apps.apple.com

Android版

通知くん - イベントスケジュール管理 - Apps on Google Play
Register the event! Don't forget with notifications
play.google.com

どんなアプリなのか

その名の通り、イベントのスケジュールを管理するアプリです!そして通知します!

例えば、「iPhoneの予約開始日時の5分前に通知で知らせてくれる」みたいな使い方が出来ます。

正直なところ、現状カレンダーアプリでできることと大差はないんですが、通知周りを改善して細かく設定ができるようになる予定です。

なぜ作ったのか

きっかけは友人が複数のソシャゲのイベント管理を他のアプリ(カレンダーアプリではない)で無理くりやっていると聞いて。

カレンダーには入れたくないけど日時の管理をしたいという需要がありそうだと気付き、必要な機能も少なくそんなに時間をかけずに作れそうだったので作ってみることにしました。

他にも自分で作ったと対外的に言える名刺代わりになるアプリ、サービスが欲しかったというのもあります。

技術スタック

  • アプリ
    • 開発:React Native(Expo Bare Workflow)
    • 通知:expo-notifications
    • テスト配布:Firebase App Distribution、TestFlight
  • バックエンド
    • 認証:Firebase Authentication
    • DB:Firestore
    • アプリ設定:Remote Config
    • 解析:Google Analytics
    • クラッシュレポート:Firebase Crashlytics、Sentry

基本的にはReact NativeとFirebaseで構成しました。やっぱりFirebaseは使いやすいですね。

工夫したこととか

OTAアップデートをどうするか

Expoといえばexpo-updatesを使ったOTAアップデート1が有名ですが、今回は使わない方針にしました。

理由は使っているとxcodebuildが全然通らなかったから。

expo-updatesが原因っぽいエラーが吐かれていて消したら通った経験があったので、それで諦めるかとなりました。

後述しますが、もしかしたらxcodebuildが通らなかった原因は別にあってexpo-updatesは関係ないかもしれないです。

強制アップデートの仕組みを作っておく

OTAアップデートはしないことにしましたが、セキュリティや重大なバグがあったときに強制的にアップデートしたいことがあるので指定したバージョン以下のアプリを使っているときにストアへ誘導する仕組みを作りました。

これを実現するのにRemote Configを使っています。

仕組みは単純でRemote Configにバージョン番号を入れておいて、それと現在のバージョンを比較する感じです。

Remote Configだとプラットフォームごとや国ごとなど様々な条件ごとに値を設定できるのが便利だったので使うことにしました。

JSONなどのファイルでも出来ますがそれだと、どこにどうホスティングするか、どういう条件があるか、など色々考えないといけないのが、ちょっと辛かったのもありファイルでやるのはやめました。

大変だったこと

Expo Managed WorkflowからBare Workflowへの移行

Firebase Remote Configなどネイティブ部分に関わるライブラリをいくつか使いたくなったのでManaged WorkflowをやめてBare Workflowへ移行しました。

通常ならejectするだけで良いんだと思うんですが、それでは上手く動かなかったのでBare Workflowのプロジェクトを別で立ち上げてそこにReact Nativeのコードを移行する形で実装しました。

Fastlane(xcodebuild)動かん問題

本当に動かなくなります。

全く同じコードでも昨日は動いたのに今日は動かないとかザラです。辛い…

** ARCHIVE FAILED **
Exit status: 65

よくみんなこんなもので開発やってるなと愚痴ったこともありましたが、最終的には事前にMetroとiPhoneシミュレーターを起動しておくことで回避出来ました。たぶん。

もっといい方法、本当は何が原因なのか分かる方教えてください。

2021年8月5日追記

どうやらプロジェクトのディレクトリ名が問題だったみたいです。

通知くんは Notifications というディレクトリ名になってましたが、これを notifications に変更したら発生しなくなりました。

最後に

ということで、ご興味あれば是非使ってみてください。星5レビューお願いします!

‎「通知くん - イベントスケジュール管理」をApp Storeで
‎◆主な機能 • 新商品の発売開始、スマホゲームのイベントなどのスケジュールを登録できます • 登録したイベント開始日時の前にプッシュ通知で開始をお知らせします • アカウント連携で機種変更してもデータを引き継げます 利用規約:https://shining-tank-11e.notion.site/7bcc38e153f34ba5bae8096f39ca4eb6 プライバシーポリシー:https://shining-tank-11e.notion.site/2efd5fbf95ed4b419b0f5b589fa8bae9
apps.apple.com
通知くん - イベントスケジュール管理 - Apps on Google Play
Register the event! Don't forget with notifications
play.google.com

フィードバックなどはTwitterのDM等で頂ければと思います。

deg84

フリーランスでWeb系のエンジニアとスクラムマスターをやっています。

© 2020 deg84