Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Android値受け渡し大全 〜 設計を制する者が「渡す」を制す 〜

Avatar for みっちゃん みっちゃん
September 11, 2025
230

Android値受け渡し大全 〜 設計を制する者が「渡す」を制す 〜

DroidKaigi 2025 の登壇資料
https://2025.droidkaigi.jp/timetable/940354/

Avatar for みっちゃん

みっちゃん

September 11, 2025
Tweet

Transcript

  1. 自己紹介 • 名前:みっちゃん • 経歴: ◦ 22新卒でSTORES 株式会社に入社 ◦ STORES

    決済 や ブランドアプリ の開発 ◦ Android歴は4年目くらい ◦ DroidKaigiスタッフもしてます! X(Twitter): 🔗@mimimi_engineer 2/103
  2. • 値を渡す色々な方法 1. メソッドの引数に渡す 2. 画面遷移時に渡す 3. Pub-Sub 4. DI

    5. データホルダーを使って受け流す 本日のお品書き 12/103
  3. • 値を渡す色々な方法 1. メソッドの引数に渡す 2. 画面遷移時に渡す 3. Pub-Sub 4. DI

    5. データホルダーを使って受け流す 本日のお品書き 13/103
  4. • 値を渡す色々な方法 1. メソッドの引数に渡す 2. 画面遷移時に渡す 3. Pub-Sub 4. DI

    5. データホルダーを使って受け流す 本日のお品書き 15/103
  5. 2. 画面遷移時に渡す • Activityベース ◦ Intent • Fragmentベース ◦ FragmentTransaction

    / NavigationComponent • Composeベース ◦ NavigationCompose 値を渡す色々な方法 17/103
  6. • 値を渡す色々な方法 1. メソッドの引数に渡す 2. 画面遷移時に渡す 3. Pub-Sub 4. DI

    5. データホルダーを使って受け流す 本日のお品書き 31/103
  7. • 値を渡す色々な方法 1. メソッドの引数に渡す 2. 画面遷移時に渡す 3. Pub-Sub 4. DI

    5. データホルダーを使って受け流す 本日のお品書き 39/103
  8. 4. DI(Dependency Injection) • 別のクラスの値を参照したい時に、Daggerを利用して、そのクラスのイン スタンスを別のクラスに注入する 値を渡す色々な方法 // HogeClass HogeClass

    { val hoge = “hoge!!” … … } // FooClass FooClass @Inject constructor( val hoge: Hoge ) { // 参照できた val hoge = hoge.hoge // hoge!! } DI 40/103
  9. • 値を渡す色々な方法 1. メソッドの引数に渡す 2. 画面遷移時に渡す 3. Pub-Sub 4. DI

    5. データホルダーを使って受け流す 本日のお品書き 43/103
  10. 1. 良い設計の要素 ◦ SSOT ◦ UDF 2. Androidアプリ固有の問題 ◦ ライフサイクル

    ◦ 値を保持する方法 解決方法を評価するための観点2つ 59/103
  11. 1. 良い設計の要素 ◦ SSOT ◦ UDF 2. Androidアプリ固有の問題 ◦ ライフサイクル

    ◦ 値を保持する方法 解決方法を評価するための観点2つ 60/103
  12. • 正確な情報源を一つだけ作成しよう、という意味 • SSOTのみがそのデータの変更を行える • SSOTは不変の型を使用してそのデータを公開する • メリット ◦ データの変更を追跡できやすく、バグを発見しやすい

    ◦ 他の型によって改ざんされないようにデータを保護できる SSOT(信頼できる唯一の情報源) 参考:Android Developers 信頼できる唯一の情報源 62/103
  13. 1. 良い設計の要素 ◦ SSOT ◦ UDF 2. Androidアプリ固有の問題 ◦ ライフサイクル

    ◦ 値を保持する方法 解決方法を評価するための観点2つ 72/103
  14. 1. 良い設計の要素 ◦ SSOT ◦ UDF 2. Androidアプリ固有の問題 ◦ ライフサイクル

    ◦ 値を保持する方法 値の受け渡し方法を評価するための観点2つ 83/103
  15. 1. 良い設計の要素 ◦ SSOT→SSOTがないので❌ ◦ UDF→「いいね」情報の流れが一方通行でないので❌ 2. Androidアプリ固有の問題 と 値の保持

    ◦ ライフサイクルを乗り越えて値を保持できる →❓❓❓ A. 画面遷移時に「いいね」の情報を渡す 92/103
  16. 1. 良い設計の要素 ◦ SSOT→SSOTがないので❌ ◦ UDF→「いいね」情報の流れが一方通行でないので❌ 2. Androidアプリ固有の問題 と 値の保持

    ◦ ライフサイクルを乗り越えて値を保持できる →ViewModel側で状態を保持してれば画面回転は乗り越えられる が、永続化してないのでアプリキルするといいね情報が失われる A. 画面遷移時に「いいね」の情報を渡す 93/103
  17. 1. 良い設計の要素 ◦ SSOT→SSOTであるDBがあるので⭕ ◦ UDF→「いいね」情報の流れが一方通行なので⭕ 2. Androidアプリ固有の問題 と 値の保持

    ◦ ライフサイクルを乗り越えて値を保持できる →DBに永続化しており、画面回転もアプリキルも乗り越えられる ので⭕ B. データホルダーを使ってDBから「いいね」の情報を受け流す 95/103