Open9
DroidKaigi 2024 メモ
- Kotlin 2.0.0 より、.kotlin が生成されるようになるので、.gitignore に登録しておく
- kotlinOptions を、kotlin の compilerOptions に書き換える
- IntelliJ IDEA の Setting → Language & Frameworks → Kotlin → Enable K2 Kotlin Mode にチェックを入れることで、IDE にて Kotlin 2.0 で Analyze されるようになる
- サポートされている機能とサポートされていない機能があるので、モバイル開発者はもう少し待った方が良いかも
- Backing Fields により、ViewModel で StateFlow を扱う際に private な MutableStateFlow を定義する必要がなくなる
FirstViewModel.kt
class FirstViewModel: ViewModel() {
val isLoading: StateFlow<Boolean>
field = MutableStateFlow(false)
fun startLoading() {
isLoading.value = true
}
}
build.gradle.kts
kotlin {
sourceSets.all {
languageSettings.enableLanguageFeature("ExplicitBackingFealds")
}
}
- AutoClosable
- Power Assert
- ユニットテストにおけるアサーションでより詳細なメッセージが表示されるようになる
- Strong Skip Mode
- @Immutable と @Stable はいずれも Unstable なものを Stable と認識させるためにつける
- 違いとしては Instance Equals か Object Equals の違い
- API や DB から取得した際など、同じ値でも毎回インスタンスが変わる場合は @Immutable をつけるのがよいかも
- Strong Skip Mode が有効でも頻繁に Recompose させたい場合は @NonSkippableComposable をつける
- 関数内で定義されている lambda を再生成してくれない場合は、そこに @DontMemoize をつける
- @Immutable と @Stable はいずれも Unstable なものを Stable と認識させるためにつける
- 海外就職は選択肢を広げるための手段
- ただし、選択肢が多すぎると混乱を招くこともある
- 明確なキャリア目標、「こうなりたい」というイメージを持つ
- 選択は努力より重要、努力を正しい方向で行うこと
- 同じ業界や仕事内容でも、海外ではより高い給料を得られることがある
- 自分にとってちょうどいい難易度の仕事をすることで急成長できる
- 可能性、給与水準、良い成長環境、どれもすでに満足しているなら海外就職について考慮する必要はない
- スライド
- イベントはイベント名と複数のパラメータで構成されている
- パラメータは Key-Value 形式となっている
- イベント名、Key は最大50文字
- Firebase に送信されたすべてのイベントを BigQuery にエスクポートできる
- Firebase 上でも基本的な分析は可能だが、BigQuery 上ではより様々な分析ができる
- RDB と同様にテーブルがあり、SQL で集計できる
- ユーザ ID を保存するには、FirebaseAnalytics#setUserId を使用する
- user pseudo(スードウ) id は自動的に設定され、同じデバイスの同じアプリはずっと同じ文字列
- BigQuery を集計するには BigQuery Studio が便利、表やグラフを共有したいときはスプシが便利
- Firebase A/B Testing で簡単に AB テストができる
- 有意差検定周りも面倒見てくれる
- A と B それぞれのパターンにおいて、期待動作が行われたらイベントを送信し、集計を行う
- Firebase Remote Config でユーザの振り分けやコード分岐ができる
- AB テストで使える
- 画面遷移イベント送信
- イベント名は screen_view、イベントパラメータには screen_class(Activity、ViewController クラス名が自動設定) と screen_name(手動で設定) がある
- イベントパラメータは BigQuery では firebase_screen_class, firebase_screen となる
- すべての画面で送ることで、少なくともファネル分析がすぐに行える
- 画面遷移の種類として、Activity, Fragment(Jetpack Navigation), Compose(Navigation Compose)があるが、Activity 以外は自前で送信処理を実装する必要がある
- onResume で送信することが推奨されている
- イベント名は screen_view、イベントパラメータには screen_class(Activity、ViewController クラス名が自動設定) と screen_name(手動で設定) がある
- Kyash 社では、実装に差異が出ないよう YAML ファイルでイベント仕様を定義したものをそれぞれ iOS / Android 向けに自動生成する仕組みを構築している
- YAML ファイルから自動生成するには以下のライブラリを使用する
- detekt を使ってイベントの送信し忘れを検知するようにしている
- カスタムルールを作るには、抽象構文木(AST)を使う、PSI Viewer で閲覧可能
- konsist のほうが導入が簡単なので、こちらの使用を検討することもおすすめ