見出し画像

集まれ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の勉強会と言っても、発表された談義のジャンルは様々でした。
知らない単語が出たりで調べながら聞くのは大変でしたが、とてもいい勉強になりました!
次回以降気軽に登壇してください!と主催の方がおっしゃってたので、発表できるネタができたらいつか登壇してみようかなぁ…

この記事が気に入ったらサポートをしてみませんか?