【勉強会メモ】CA.kt #5 @大阪
- 日時:2017/12/18(月) 19:15 〜 21:45
- 場所:㈱サイバーエージェント大阪支社
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
藤原 聖さん
Kotlin Conf
- 主催:JetBrains
- 場所:サンフランシスコ沿岸部
Kotlin Conf Session
Keynote
- Kotlin for Multiplatform
- Androidだけでなく、iOS、Browser、サーバもKotlinで書ける
- Kotlin 1.2RC(マルチプラットフォーム対応)
- Kotlin/Native iOS Support
- Android Kotlin Guides
詳細はブログ参照
Sessions
- 44 sessions
- 3 tracks
- TBA sessions:kotlin/Nativeの話
- セッション用アプリあり
主なセッションの内容
- 言語について
- Tool
- マルチプラットフォーム
- Spring Boot(Kotlinのサーバサイド)
- コルーチン
Kotlin Conf Apps
Top 5 Rated Talks
- Kotlin Puzzlers by Anton Keks
- Kotlin 言語仕様を使ったクイズ⇒詳細は3番目のプレゼンで紹介
- The Road to Kotlintown by Huyen Tue Dao and Christina Lee
- Tow Stones, One Bird: Implementation Tradeoffs by Christina Lee
- 二石一鳥(二律背反なものは議論して使おう)
- @RunChristinaRun
- PintarestのAndroidエンジニア
- Google I/O 17にも呼ばれていた
- Party Keynote by Michael Carducci
- マジック…
- How to Kontribute by Yoshinori Isogai
Pickup Sessions
- Kotlin Types
- Bootiful Kotlin
- React app in Kotlin
- Testing Kotlin at Scale
Kotlin Types
- Kotlin In Action の6章の内容からの抜粋 ※詳細は2番めのプレゼン
- 著者の1人 @sveta_isakova
- 作者: Dmitry Jemerov,Svetlana Isakova,長澤太郎,藤原聖,山本純平,yy_yank
- 出版社/メーカー: マイナビ出版
- 発売日: 2017/10/31
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
Kotlin Conf 報告会 - Kotlin Types
荒谷 光さん
@sveta_isakova のセッションの紹介
Kotlin types, Java types
kotlin.String
⇒ java.lang.String
- Javaの場合
"one.tow.".replaceAll(".", "*")
⇒ "*******"
- Kotlinの場合
- "one.tow.".replace(".", "") ⇒ "onetow*"
Any, Unit, Nothing, void
- Anyは全てのクラスのスーパークラス
- Nothing ≠Unit void
- Unit = void :意味のない型を返す
- Nothing:インスタンスがなくて存在しない, 値は返さない
- Nthing?⇒ある
Collections
kotlin.MutableList
→kotlin.List
- Read-only ≠ immutable
- JavaのArrayListの親クラスが kotlin.MutableList
,
kotlin.List`
Kotlin Puzzlers
仙波 拓さん
- Programing Puzzlers
- 小さいコードで奇妙な動きをするプログラム集
紹介されたコードを見たほうが分かりやすいと思うので転載。実行結果が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 if
は else
と 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用のライブラリの話
Reified の話
たぶんこのへんの話だったように思うけどうろ覚え。
Inline Functions and Reified Type Parameters - Kotlin Programming Language