Skip to content

Instantly share code, notes, and snippets.

@YusukeMoriJapan
Created June 16, 2022 10:13
Show Gist options
  • Save YusukeMoriJapan/ae397e1478b0c6ac5799d35e6f3b52f6 to your computer and use it in GitHub Desktop.
Save YusukeMoriJapan/ae397e1478b0c6ac5799d35e6f3b52f6 to your computer and use it in GitHub Desktop.

携わった案件

  • Android ライブ配信アプリ (2021年7月~現在)
    • 言語
      • Kotlin
    • 実装した機能
      • バックグラウンド再生機能
      • 映像配信機能 (RTMPで映像送信)
      • 映像視聴機能 (HLS映像の視聴)
      • 視聴者コメントや視聴者数のリアルタイム取得 (WebSocket / FireStore Snapshot)
      • Jetpack Composeを使用した新規画面実装
        • 映像視聴画面
        • 映像送信画面
      • アプリ内課金機能
      • ディープリンクでのアプリ起動
    • アーキテクチャ
      • 単一方法データフローMVVM

    開発でこだわった点/苦労した点

    • Jetpack Compose + kotlin Coroutineを用いた配信/視聴画面のフルリプレイス
      • xmlを用いたUI実装 + RxJava3の組み合わせで実装されていた画面をフルリプレイスしました。
    • アーキテクチャ(単一方法データフローMVVM)の採用
      • Android開発があまり得意ではない別会社が開発していたものを引き継いだため、引き継ぎ時点では、アーキテクチャと呼べるものがない状態でした。 そのため、新規開発画面に関しては、Googleの公式ドキュメント(Guide to app architecture)を参考にしながら、「単一方法データフローMVVM」で開発を進めました。
    • マルチモジュールの導入
      • 大まかなモジュール構成 module_image
    • Jetpack Composeのパフォーマンスチューニング
      • Compose Compiler Metricsを用いてコンパイル後のComposable関数の解析を行い、無駄な再コンポーズをできる限り防ぎました。 (SkippableでないComposable関数を減らしました。)
    • DIパターンの採用
      • Dagger Hiltを用いて新規機能開発分についてはDIパターンを採用しました。
    • マルチスレッドを意識した実装
      • 複数スレッドで共有の値を参照するような場面では、Volatileを積極的に活用し、Happens Beforeを保証するコードを実装しました。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment