ジョナサンの「十年」ブログ

日本生活10年目のきっかけ、前向きに開発日記、日常生活など記録する

【断食トラッカー】共通で同じ機能を実現できるの難関

今回のテーマは第一段階の成功までの難題です。

目標

タイマーとデータストアを使って、iOSAndroidとも動けるプログラム

技術

  • Jetpack Compose + Coroutine + Flow
  • Google Datastore (新しいライブラリ:1.1.0-alpha04)
  • 共通の時間ライブラリ(kotlinx.datetime)

Android

  • 大体一週間ぐらい動ける

難関

  • ライブラリの配置:今回の考えはUseCaseまで共通部を持って、ViewModelはそれぞれを実装する(共通viewModelのライブラリはGoogle管理ではない懸念があります)→他のプロジェクトはViewModelまで共通にするケースが多いみたいです。
  • 初のFlowで学習時間が必要です。(既存のプロジェクトはLiveData + 強引にコールーチン変換)
  • UIStateの本格的採用はすこく楽しいかったですが、最適化が必要です。
  • 時間のフォーマットは本来JavaのTimeFormatterを利用すべきですが、原因未究明の前提で、中学時代の計算レベルで処理しました。(意外に面白いですよ)

iOS

  • 曖昧な時期が長いですが、同じ機能レベルまでは大体一週間

難関

  • 初のSwiftUIですが、慣れたUI部品なので、軽めに使えるアイコンを調査すると、Androidの仮画面より納得できる(Figmaと似てる)
  • Android共有部のライブラリ配置が影響大きいでした。(それぞれのUseCaseでも共通部でKoin導入しないといけない)
  • コンセプトの共通変換(Flow vs Publish)
    →ここだけ2−3日かかりました。
    →いろいろな情報ですが、実際iOS側で変換クラスだけで解決
  • 2−3年だけほとんど触ってないだけで、新しい部分は多すぎて、新しい言語として扱ってもいいと思います。
  • 実機で試してみたいですが、いろいろエラーがあって…一時的には無料でもリリース前に実機で検証できますが、現在多分課金が必要そうですね。(ゆくゆく調べてみます)

参考文献