Kotlin Conf 2018 参加報告会 を見てきたメモ
10/15 と 10/19 に行われた Kotlin Conf 2018 の参加報告会を聞いてきた。
CA_kt の Kotlin Conf 2018 参加報告会
こちらは 10/15 に行われたサイバーエージェント主催の参加報告会。
Kotlin Conf 2018 Keynote Overview @satorufujiwara
Kotlin Conf 2018 Keynote を振り返る内容。
- Kotlin Conf について
- 今回で2回め
- 参加者は 1300+
- 今回はオランダ、アムステルダムで開催。前回はアメリカで開催だった
- セッションはすべて動画で公開されている。見よう
- 内容としてはコルーチン、マルチプラットフォーム、サーバサイドの話が多く、Android に関するセッションは 3 つ
- キーノート
- Kotlin 言語のデザイナー Andrey Brslav によるセッション
- Be Pragmatic
実装者の考えをコードに落とし込めるようにしたい
- Consicion < Readability
- 簡潔さより読みやすさ
- ボイラープレートは減らし、書いたコード全てに意味があるように
- Expressiveness < Reuse
- 表現力のためでなく、再利用のため
- 標準ライブラリによく使われるパターンを入れている
- Originality < Interoperability
- 独自性<相互運用性
- 他の言語にすでにある機能・知見を取り入れる
- Soundness < Safety / Tooling
- 言語的な堅牢さより、安全さ、ツールによるサポート
- 静的型付き言語なのでツールも作りやすい
- Consicion < Readability
- Kotlin 1.3
- Coroutines -> stable
- kotlin/native -> beta
- build -> faster 75%
- おすすめのセッション
- coroutine exporing coroutines in kotlin
- kotlin coroutines in practice
- mutliplatform
- kotlin/native concurrency
- おすすめの Kotlin 教材
- Courseara の Kotlin for Java Developers
- 新しい本 "Atomic Kotlin"
Kotlin 1.3 新機能 @_a_akira
- 元になったセッションは New Type Inference and Related Language Features by Svetlana
- Experimental features
- Experimental features の目的は、アーリアダプターになるべく早く新しい機能を試してもらうこと
- 使いかた
- migration 1.2 to 1.3 * AndroidStudio で Tools > Kotlin > Enable migration option を選択
- gradle
kotlin { experimental { coroutines 'enable' } }
- 1.2 と 1.3 の import 違い
- 1.2
import kotlinx.coroutines.experimental.*
- 1.3
imoprt kotlinx.coroutines.*
- 1.2
- ユーザ定義の experimental を作ることができるようになった
@Experimental
アノテーションを使う- 使うときは
@UseExperimental(<API名、クラス名>)
- Contracts
- New Type Inference
- gradle で
kotlin { experimental { newInference 'enable ' }}
- SAM conversions
- SAM = single abstract method の引数型が推論されるようになった
sequence<int> { yield 11, yield 42 }
の<int>
を書かなくてもよい
- SAM = single abstract method の引数型が推論されるようになった
- Inference for call chains
- Intersection types
- gradle で
優れたコードは小説のようか? @kaelaela31
- 「よくかけたコード=小説」ということで文法に影響する Kotlin の機能の紹介
- Kotlin Conf では表現について言及したセッションが多かった
- Next Level DSLs
- Writing The Next Great Kotlin Novel
- Writing The Next Grewat Kotlin Novel
KotlinConf Report @takusemba
- Best Practices for Unit Tesint in Kotlin, Phillipp Hauer から
MockK
MockK<HogeFactory>
verify()
べんり メソッドがどのように呼ばれるかを検査できるJUnit5
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
- テストごとにクラスを再生成できる
@Nested
- テスト結果をグルーピングして IDE とかで見やすくなる
- バッククォートでテスト名を記述できる
- テスト結果などがかなり見やすくなる
JKUG の Kotlin Conf 2018 参加報告会
こちらは 10/19 に行われた Kotlin ユーザグループによる参加報告会。 会場は Line Cafe でとてもキレイな場所だった。
KotlinConf 2018 カンファレンス概要とトピックOverview @mhidaka
CA_kt のセッションとかぶるので、おすすめのセッションだけ。
- おすすめのセッション
KotlinConf 2018 のワークショップに参加してきました あんざいゆき
今年の KotlinConf は初日が Workshop Day でした。 丸一日のワークショップに参加してきたのでその内容と様子についてお伝えします
ワークショップに参加してきた話
Kotlin Conf Workshop
- 649 ユーロ 8万くらい ちょっと高い
- 9:00 - 17:00
- 朝食・昼食あり
- 5 つのワークショップ
- 変換プラグが C type で、穴にはめるタイプなので、ヨーロッパ行く人は注意
Acynchronous Programming with Kotlin
- About
- 内容
- Asynchronous programming, introduction to coroutines ...
- coroutine について一通り
- サンプルプロジェクト
- デスクトップアプリ
- よく考えられたデモ
- ちっさなTips
- デスクトップアプリ
- Kotiln での並行処理
- thread
- ->
thread
トップレベル関数でバックグラウンド実行
- ->
- callbacks
- ->
Retrofit
のenqueue
を利用
- ->
- coroutine
- thread の場合とそれほど変わらない書き方になる。シンプル
- async, awaitAll
- future
- channel and actor
- thread
KotlinConf 2018 Android編 @hoshi_gaki
Android Ssupenders, chris bane
- coroutines on ndroid
- jobs, scopes, reactivity
- Reactivity
- Rx のものは coroutine で置き換えられる
Shaping your app's archiecture with kotlin and architecture components, Florina
- coroutine の why, where , how
- why -> ease of learning, single/maybe/completale -> suspend fn
- where -> ほぼ全部、どこでも使える
- how to use -> retrofit2-kotlin-coroutines-adapter
- Java とのつなぎ込み
- suspend あ Continue を返すのでこれをどうにかしないといけない
- callback 使うのが良さそう
- Typing
- これまで
data class UserId(val id: Long)
- kotlin 1.3
inline class UserId(val id: Long)
- これまで
- coroutine の why, where , how
「KotlinConf から見る、最近の Kotlin サーバーサイド事情」 @hktechno
- Server Side Kotlin
- Kotlin web framework
- 選択肢はいくつかある: Ktor, http4k, spring boot
- Spring Boot が多いっぽい
- Which to use
- Swagger, micrometer, zipkin を使う場合-> http4k, Spring Boot
- coroutine を使う場合 -> ktor, spring boot(ただし unofficial)
- Ktor は JetBrain 製なので coroutine もよく対応できている
- Spring Boot を Kotlin で使うには
- SpringFu, KoFu で Functional , DSL にできる(ただしincubating feature
- annotation 対応の cofiguration ができる
- annotation からは何が発生しているかが辿りにくい
- API / Micoservices
- Kotlin/Native
- kotlin/Native はサーバサイドでもつかえるか
- Concurrency 周りが難しそう
- Ktor に期待, native をサポートしてほしい
- Server-less な利用法では kotlin/jvm では startup time 問題があるので厳しい
- サーバレスで使いたいなら GraalVM に期待したほうが良さそう
- kotlin/Native はサーバサイドでもつかえるか
「Kotlinのユニットテスト ベストプラクティス」 @ngsw_taro
- Best Practices for Unit Testing in kotlin @philipp_hauer
- JUnit4
- JUnit5 を使うのがベスト
@TestInstance
junit.jupiter.tesinstancelifecycyle.defaut = per_class
@Nested
でグルーピング- バッククォートで読みやすいテスト名
- おすすめライブラリ
- どれもそこそこよい
- おすすめは: JUnit5, mockK, AssertJ
- mockK 注意
- モックの生成は重い
- 一度生成して
clearMocks
でクリアするのがよい
- アサーション
- データクラスのアサーション
- フィールド毎でなく、データクラスをそのまま
assertThat
に渡すとよい。Assertion の結果が読みやすくなる
- フィールド毎でなく、データクラスをそのまま
- データクラスのアサーション