集まれKotlin好き!Kotlin愛好会 vol.14に参加しました
ウォンテッドリー株式会社さんのおしゃれなオフィスで開催されたKotlin愛好会 vol.14に参加しました。
Kotlin愛好会は初参加です。
ビールで乾杯しながら談義スタート。
Realm Cloudを使ったオフラインファーストなアプリ開発
直前で発表内容が変わったみたいです。
Connpassに資料は貼られてなかったので、Speaker Deckから資料引用↓
オフラインファーストで考えればRealm CloudもFirebaseに負けてないぞ!という話
差別化できる点としては
・RDBなのでクエリで直接いじれる
・オフライン時の処理が強い(電波不安定な時はローカルDB優先)
実際の登録・使用方法が載ってるので簡単に試せそう
さらにRealm Cloudを知りたい人は、下記の技術書を買おう、とのこと
夏のDispatchers.Main探検
今Kotlin界で熱い(当社比)Coroutineの、Dispatcher.Mainに絞ったなかなかマニアックな内容
Kotlin Coroutine contextとDispatcherに関しては以下を参照
メインの話としては、R8(コード圧縮ツール)を導入するとMETA-INFディレクトリを正しく認識できるため、ServiceLoaderが正しく動作し、Dispatcher.Mainのinit処理が高速化される、とのこと
ただ、Android Gradle Plugin 3.6以降なので、未来のお話
最近のTips集
Kotlinの便利機能に関する発表
trimMargin()は利用することで複数行Stringのインデントが揃えられるので、可読性向上!
FragmentがActivityを呼ぶときnullableになってしまうのを、requireActivity()を使うことでnon-nullで返してくれる(ただ、Activityがnullだと落ちるので注意が必要らしい)
SnackBarはFragmentを表示しているActivityの親Viewを指定せずFragmentのViewを指定すると、余白が大きくなる…
Jetpack Composeをさわってみた
今年のDroid Kaigiで知り合ったkenkenさんの発表
Jetpack Composeという、コードを書くだけでUIも作れちゃうSwiftUIのAndroid版みたいなやつ(雑な理解)
KotlinというかAndroidの話だけど、Kotlinで書くから問題なし!
ConposeでHello Worldを書くと、例えば↓の感じ
class SampleActivity : Activity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
CraneWrapper {
MaterialTheme {
val textColor = Color(0xFFFF0000.toInt())
Text(
text = "Hello World!",
style = +themeTextStyle { h2.copy(color = textColor) }
)
}
}
}
}
}
・SetContentでRoot ViewとなるFrameLayoutを描画
・CraneWrapperで引数のコンポーネントを受け取りAndroidCraneViewに追加
・MaterialThemeでコンポーネントの設定を記述
※styleの右辺には先頭に「+」が必要らしい(お作法?)
コンポーネントやモデルを定義できるが、先頭にアノテーションを付与しないと認識してくれないので注意
モデルを使うには「+state」関数を利用しなきゃいけないなど、まだ利用するには辛いところがあるが、pre-α版なので今後に期待!
※他飛び入り談義がありましたが、資料がないので割愛します
感想
Kotlinの勉強会と言っても、発表された談義のジャンルは様々でした。
知らない単語が出たりで調べながら聞くのは大変でしたが、とてもいい勉強になりました!
次回以降気軽に登壇してください!と主催の方がおっしゃってたので、発表できるネタができたらいつか登壇してみようかなぁ…
この記事が気に入ったらサポートをしてみませんか?