radioc@?

レディオキャットハテナ

【勉強会メモ】CA.kt #5 @大阪

cyberagent.connpass.com

CA.ktはCyberAgentさんが主催するKotlinの勉強会で、今回が初の大阪開催でした。テーマは11月にサンフランシスコで開催された Kotlin Conf の内容を実際に現地で参加してきた方々にフィードバックしていただくという内容でした。当日の様子は動画やブログに公開されていて把握することができますが、実際に参加してきた方々から直接話を聞くことで現地の盛り上がりを感じることができました。個人的にはSpring BootでのサーバサイドKotlinはそろそろ手を出してみても良いかもと(何の根拠もないですが)思い始めました。

Kotlin ConfではJetBrainの人が最後に "Have a Nice Kotlin!" と言ってプレゼンを終えていたそうだ。今回の登壇者の方々もこれを合言葉のように使ってたところにKotlin愛を感じた。その雰囲気を感じていただければと思います。

Have a Nice Kotlin!

Kotlin Conf Overview + Keynote + and more

藤原 聖さん

speakerdeck.com

Kotlin Conf

  • 主催:JetBrains
  • 場所:サンフランシスコ沿岸部

www.kotlinconf.com

Kotlin Conf Session

Keynote

詳細はブログ参照

blog.jetbrains.com

Sessions

  • 44 sessions
  • 3 tracks
  • TBA sessions:kotlin/Nativeの話
  • セッション用アプリあり

主なセッションの内容

Kotlin Conf Apps

www.kotlinconf.com

Top 5 Rated Talks

  • Kotlin Puzzlers by Anton Keks
    • Kotlin 言語仕様を使ったクイズ⇒詳細は3番目のプレゼンで紹介
  • The Road to Kotlintown by Huyen Tue Dao and Christina Lee
    • コードでプレゼン資料が作られている
    • 前半はジェネリクスの話
    • 後半は拡張関数、ラムダ、DSL
  • Tow Stones, One Bird: Implementation Tradeoffs by Christina Lee
  • Party Keynote by Michael Carducci
    • マジック…

youtu.be

  • How to Kontribute by Yoshinori Isogai
    • @shiraj_i ※日本から
    • KotlinのContributerになるまでの手順
    • Podcastのdex.fmでも当日の事を紹介

http://dex.fm/post/168154381478/037-how-to-kontribute
dex.fm

Pickup Sessions

  • Kotlin Types
  • Bootiful Kotlin
  • React app in Kotlin
  • Testing Kotlin at Scale

Kotlin Types

  • Kotlin In Action の6章の内容からの抜粋 ※詳細は2番めのプレゼン
  • 著者の1人 @sveta_isakova

Kotlinイン・アクション

Kotlinイン・アクション

Kotlin Conf 報告会 - Kotlin Types

荒谷 光さん

speakerdeck.com

@sveta_isakova のセッションの紹介

Kotlin types, Java types

  • Kotlinの IntJavaint
  • Kotlinの Int?JavaInteger
  • doubleなど他のプリミティブ型も同じ

kotlin.Stringjava.lang.String

  • Javaの場合
    • "one.tow.".replaceAll(".", "*") ⇒ "*******"
  • Kotlinの場合
    • "one.tow.".replace(".", "") ⇒ "onetow*"

Any, Unit, Nothing, void

Collections

  • kotlin.MutableListkotlin.List
  • Read-only ≠ immutable
  • JavaArrayListの親クラスが kotlin.MutableList,kotlin.List`

Kotlin Puzzlers

仙波 拓さん

  • Programing Puzzlers
    • 小さいコードで奇妙な動きをするプログラム集

github.com

紹介されたコードを見たほうが分かりやすいと思うので転載。実行結果がa)〜d)のどれになるか考えて見て下さい。答えはリンク先。

Q1: https://github.com/angryziber/kotlin-puzzlers/tree/master/src/bugs/inclusiveRange

package bugs.inclusiveRange
// inspired by AndroidPub

val i = 10.5

when (i) {
  in 1..10 -> println("in")
  !in 1..10 -> println("!in")
  else -> println("else")
}

// What will it print?
// a) in
// b) !in
// c) else
// d) will not compile

when の中がIntのためIntで比較される

Q2: https://github.com/angryziber/kotlin-puzzlers/tree/master/src/properties/override

package properties.override

open class Named {
  open var name: String? = null
    get() = field ?: "<unnamed>"
}

class Person: Named() {
  override var name: String? = null
    get() = super.name
    set(value) { field = "Mr $value" }
}

val person = Person()
person.name = "Anton"
println(person.name)

// What will it print?
// a) Anton
// b) Mr Anton
// c) <unnamed>
// d) null

field は別モノ

Q3: https://github.com/angryziber/kotlin-puzzlers/tree/master/src/syntax/weirdChaining

package syntax.weirdChaining
// by Kevin Most @kevinmost

fun printNumberSign(num: Int) {
  if (num < 0) {
    "negative"
  } else if (num > 0) {
    "positive"
  } else {
    "zero"
  }.let { println(it) }
}

printNumberSign(-2)
printNumberSign(0)
printNumberSign(2)

// What will it print?
// a) negative; zero; positive
// b) negative; zero
// c) negative; positive
// d) zero; positive

⇒ ifは式であり else ifelse と if式

Q4: https://github.com/angryziber/kotlin-puzzlers/tree/master/src/nullability/theOrder

package nullability.theOrder
// inspired by Adam Arold @addamsson

class Order {
  private val c: String
  init {
    the()
    c = ""
  }
  private fun the() {
    println(c.length)
  }
}

Order()

// What will it print?
// a) 0
// b) null
// c) will not compile
// d) none of the above

c はイニシャライズ前に呼ばれるためNPE

LT

懇親会中のLTでメモを取っていなかったのでうろ覚えです。

Koreferenceの話

AndroidのSharedPreference用のライブラリの話

github.com

Reified の話

たぶんこのへんの話だったように思うけどうろ覚え。

Inline Functions and Reified Type Parameters - Kotlin Programming Language

KtorでサーバサイドKotlinの話

speakerdeck.com

RancherとOpenFaaSでサーバレスKotlinの話