kotlin.connpass.com
LINEに初めて足を踏み入れました。カフェお洒落。
HAVE A NICE KOTLIN!
, Don't have a IC Card!
が今回の鉄則です。
linedevday.linecorp.com
LINEの技術カンファレンス。技術の話聞けて参加費無料!
気になりますね👀行ける様に調整しよう。
以下セッションの内容のメモです。あまり追いついてない上に自分が気になるところ程度のメモなので悪しからず。()は自分の心の声です。
「KotlinConf 2018 カンファレンス概要とトピックOverview」
www.slideshare.net
オランダ/アムステルダムで開催された
KotlinConfにかかわるセッション以外の空気感、カンファレンスの概要
およびイベントを通して感じたトピックをギュッと圧縮してお届けします。
発表者:mhidaka (@mhidaka) | Twitter
カンファレンスと本の編集でお馴染みのエンジニアの日高さん。
空気感や基調講演などをメインとした発表。
今回からはオランダのアムステルダム になった。遠い。12時間くらい掛かる。
街は歴史ある感じ。(行きたい。非常に行きたい。ヨーロッパ行ってみたい。)
東京も寒かったけど、あちらではダウンがいるくらい寒い。
マリファナ が合法なのでよく吸ってる人がいるらしく、臭いが強い。(タバコ苦手だから辛そうだなぁ🤔)
元証券取引所 。(まじか、ステンドグラス無かったっけ?👀)
1日目はワークショップで、2, 3日目はセッション。
参加者数は1200+で、セッションルームは5つ。
テーマはモバイル・サーバー ・学術など偏らず、難易度的にも偏らない様に注意されている印象。
皆ネットワーキングを目的に参加しているので、常にコミュニケーション取れる場所が提供されている。
良かったと思うセッション3つ
セッション自体は50くらいあるので、その中の厳選3つをご紹介。
Keynote by Andrey Breslav
VIDEO www.youtube.com
一通りわかる優れもの
Shaping Your App's Architecture with Kotlin and Architecture Components by Florina
VIDEO www.youtube.com
会社の人と一緒に観て欲しい、とうい一本。
Rxをcoroutineでこう変えられるよねなど、今書くならこう書けるよね!というのが分かりやすくて一押し!
Kotlin Coroutines in Practice by Roman Elizarov
VIDEO www.youtube.com
分かりやすく話してくれている良いセッション。
ダメな書き方をまず教えてくれてから良くしていくという流れで、ステップを踏ませてくれる。
上記3つは英語があまり分からなくても、スライドが良くまとまっているので、見るだけでもある程度分かるものになっているのが推しポイントの一つ。
(どれもすごく気になる内容なので、ちゃんと観てチームで共有しようと思います。)
告知
droidkaigi.jp
初心者だけど、こう学んだよ、というのでも是非。
(と仰っていたので、そんな感じの内容のプロポーザルもさっき追加で出してきました👍)
「KotlinConf 2018 のワークショップに参加してきました」
speakerdeck.com
今年の KotlinConf は初日が Workshop Day でした。
丸一日のワークショップに参加してきたのでその内容と様子についてお伝えします。
発表者:Yuki Anzai (@yanzm) | Twitter
ワークショップは今年から始まった。
649ユーロ = 8万以上!!9:00-17:00で結構ハード!受付は8時。
(受付から会場までの写真良いですね。追体験 してるみたいで面白い。)
コースは5つ用意されていて、講師が豪華!Kotlin in Actionの著者の方だったり。JetBrainの方やGooglerの方々など。
github.com
github.com
ここら辺にスライドや使っていたコードに似た様なものが、どことは言わないけど上がっていそうな感じ。Workshopという名前のね。どことは言わないけど。
注意点として、ヨーロッパのカンファレンスに行く人はくぼみに入る変換アダプタを持ってきた方が良い。
(これ最大の罠感ある。危ない。覚えておこう。)
やんざむさんが受けたのはコルーチンのコース。
一通り触ってみる感じの内容。デスクトップアプリといくつかの小さいデモコードがある。
メインのデスクトップアプリ
非同期で処理していくに当たって、非常によく考えられている構成だった。
今までのやり方だとどうなるか、それがコルーチンだとどうなるか、という感じ。
単純にコルーチンを使うだけでなく、repositoryごとにデータを取ってくるのを並列化してみるとか。
blocking = UIが止まっても良いから取ってくるというもの
複数のリポジトリ にコントリビュートしてる人はUserIdが重複しているが、同じIDがあったら足していって、という処理をする。それに対して、はいやってみて、と始まったので、なかなか難易度高いワークショップだった。
これの答えとして、講師はgroupingBy
というのを使っていた。
Groupingというクラスがある。こういうところも勉強になる。
Retrofitのenqueueを利用。callbackはaggregateをするのが大変。
1個目取ってきたリポジトリ のcallbackを呼んで、そのリポジトリ のcallbackを呼んで〜、とcallabckだと大変。
それがcoroutineだとこう書けるから良いよね、という紹介。
Cancelable, Concurrent, Future, ChannelとActor, Gather...
詳細は先ほどのどことは言わなかったリポジトリ を見てください。
(リポジトリ のコードにあるデスクトップアプリの方ではなく、小さいデモコードの方をまず動かしてみるのが良いのでは、と懇親会で教えて頂いたので、そうしてみようと思います。面白いですね、コルーチン。)
「KotlinConf 2018 Android 編」
KotlinConf 2018のAndroid開発に関わるセッションをまとめてお伝えいたします。
Coroutine, KTXなどなどです。
発表者:akira108 (@hoshi_gaki) | Twitter
Android のセッション3つを15分で伝える取り組みに挑戦!
LINE LIVE のエンジニアの方。Java に出くわしたらKotlinに変えていく勢いでやっている。
Android Suspenders by Chris Banes
VIDEO youtu.be
サポートライブラリ作っている人で有名。
なぜコルーチン?
→I/O処理に良い, 限られたハードウェアの中で使いやすい, Rxより簡単
全部cancel書いてたら辛い!
→parentのjobを指定すればまとめてcancel出来るから安心!
が、まだ辛いのがある。parentのjobがない時。終わるまで生き続けてしまう。
CoroutineScopeを使う必要がある構成になった?何かがdeprecatedになった。(理解が追いつかなかったので、資料公開され次第そちらをご覧ください。)
これによってJobがcancelされるようになる。
Rxを置き換えられるのかという心配ありますよね。大丈夫!できます!
Retrofitではawaitを書く必要もなくなるらしい?soon.
Shaping Your App's Architecture with Kotlin and Architecture Components by Florina
VIDEO youtu.be
コルーチンなぜ使う? → 学ぶの簡単ほか
コルーチンどこで使うの? →ほぼ全部に使おう!
API どうやって使うの?
Resultで包むのを推奨していた(ioschedであったな🤔)
コルーチンすごい!でもJava 残ってるんだけど!Java から使うとコルーチン入れるの辛い...
→Callbackに入れてしまおう、という良い妥協。
インラインクラスを使うことで生成されまくることがなくなる。
UseCaseは一つの責任しか持ってはいけないはずだから、publicな関数は1つにすべき。
だからinvoke オペレータを実装してしまえば良い。
命名 相談してUseCaseつけなければ完全に関数名になるし。
Android KTX : A Dash of Kotlin Makes All the Difference! by Dan Kim
VIDEO youtu.be
KTX の1.0出た!alpha取れたよ!(betaの時とどこが変わったのか調べておくか...)
AOSPにも入ってるから、コントリビュートしてね!やり方教えるね!(これは気になりますなぁ👀)
すごく駆け足だから後でこのセッションの動画観てみてね!
「KotlinConf から見る、最近の Kotlin サーバー サイド事情」
発表者:Hirotaka Kawata /てくの (@hktechno) | Twitter
完全にサーバー サイドのエンジニアの方。
IoTサービスのバックエンドをKotlinで書いている。
思ったよりサーバー サイドのセッションもあった。
何かをやってみたの話が多かった。言語としてはKotlinを使ったよ、みたいな感じの。
サーバー サイド側でも非同期をちゃんとしないと大変なので、コルーチンが熱い。
アメリ カよりヨーロッパでカンファレンスやって欲しい。(ここで日高さんがわかる〜と仰ってたのが面白かった😂)
(スライドの情報量が濃かったので、スライド上がったら是非そちらご覧ください。)
良く使われているWebフレームワークは3つ?
全部入りがほしければSpring
Webフレームワーク比較
業務として使うとなるとまだKtorだと足りないが、コルーチン使いたい場合はKtor。
KotlinNativeを使うにもKtorが可能性ありそう。
業務としてはSwaggerとか使えないと厳しいから、Ktorの今後に期待。
Ktorだとかなりファンクショナルにサーバー が立てられる。アノテーション とか使わなくて良い。
SpringFu, KoFu
(ここら辺理解が追いつかなかった。)
REST API そろそろオワコンじゃない?という話を良く聞いた。
型がないの辛い、Json はパースが重い →GraphQL, gRPC
どこのサーバー を辿っているかを見るのすごく辛い?
→分散Tracing:色々なサーバー 立ち上げて、API たタックという時に必要になっていくのでは。
Kotlin/Nativeの可能性 →まだ辛そう。今後に期待。
JVM は起動が遅いから、Kkotlin/NativeよりはGraalVM の方に期待した方が良さそう?
発表者:たろう (@ngsw_taro) | Twitter
「最後に、KotlinConfに行かれなかった太郎さんお願いします。」
お留守番枠だったから一生懸命ビデオを観て発表!
LINEスタンプ売っている。(先ほどTwitter でツイートされていましたね。)
VIDEO youtu.be
JUnit4
companion objectやJava に寄せるためのアノテーション 、var、従来のモックライブラリだと工夫が必要、whenをバッククォートで囲む必要性、あまり情報を得られないエラーメッセージ...
テストクラスは毎回インスタンス が生成される。
インスタンス に紐づくのではなく、クラスに紐づくstaticが欲しくなる。
JUnit5
上記の様なことがあるから、JUnit5を使おう!という話。
共通のものをstaticにおく必要もなくなる。
ライフサイクルのデフォルト設定が出来る。
@Nestedでグルーピングして読みやすいメソッド名に出来るし、関数名にバッククォートを使うことでスペース入れられたりと人間に読みやすい名前もつけられる。
セッションの人は、JUnit5 + MockK + AssertJ
という組み合わせを使うそう。
モック生成は高コスト。テストで時間がかかってしまう。clearMocksを使うことで都度リセットする方法を使おう、という注意。
今まで話したものを含めてKotlinで書くとこうなる。
(まとめのメモ忘れた...。資料楽しみにしましょう。)
「build.gradle.kts」
speakerdeck.com
発表者:Panini (@callipan) | Twitter
最後に
いやー面白かったー。久しぶりにブログに書くかーと思うくらいには楽しみだったので、参加できて良かったです。こういう内容共有会本当にありがたいですね。
太郎さんみたくお留守番枠でも動画一生懸命観て何か自分も発表する!みたいな気持ちでやるのも良さそうだなぁ、などの刺激もしっかり受けましたし、良かった。
懇親会も良かったですね。ご飯美味しかった。LINEありがとう。やんざむさんに講義してもらうという贅沢もした。いや、いつも質問しまくって時間頂いてるんですけど。本当にいつもありがたいです🙏
追伸:参加してきた記事が何本か既に出てて、すごいなぁと思いました。
HAVE A NICE KOTLIN!