個人で作ったイベントスケジュール管理アプリをリリースしました
個人で作ったイベントスケジュール管理アプリ「通知くん」をリリースしました!
リリースしたアプリ
iOS版
Android版
どんなアプリなのか
その名の通り、イベントのスケジュールを管理するアプリです!そして通知します!
例えば、「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アップデートが有名ですが、今回は使わない方針にしました。
理由は使っているとxcodebuildが全然通らなかったから。
expo-updatesが原因っぽいエラーが吐かれていて消したら通った経験があったので、それで諦めるかとなりました。
後述しますが、もしかしたらxcodebuildが通らなかった原因は別にあってexpo-updatesは関係ないかもしれないです。
※OTAアップデートについてはExpoのOTA updateの仕様についてが分かりやすかったです
強制アップデートの仕組みを作っておく
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レビューお願いします!
フィードバックなどはTwitterのDM等で頂ければと思います。