【勉強会メモ】Osaka Mix Leap Study #21 - Server Side Kotlin
- 日時:2018/08/09(木) 18:30 〜 21:00
- 場所:ヤフー株式会社 大阪グランフロントオフィス
KotlinといえばAndroidの開発言語というイメージが定着しつつありますが、実際には今回のLTでも話がありましたがマルチプラットフォームに対応した言語です。サーバサイドKotlinの話は時々聞きはしますが、どうなんだろう?ということで興味を持って参加しました。
実際にはDBアクセスまわりなど、サーバサイドを全面的に置き換えるにはまだ課題がありそうですが、ヤフーさんのように既に部分的にKotlinへの置き換えが進んでいる事例は思ったよりありそうだと感じました。イメージ的にはAndroidアプリ開発者がサーバサイドもKotlinで書きたいというモチベーションで導入しているのかと思っていましたが、PHPからKotlinへの置き換えというケースは少し意外でした。しかし現地の他の人からも少し話を聞いてみると言語仕様的にPHPからKotlinはそれほどハードルが高くないとのこと。確かにKotlinの型推論などはPHPerからするとJavaよりとっつきやすいものなのかもしれません。
今回、遅れて参加したりいろいろあってメモが雑ですがご容赦ください。
Kotlinのサーバサイド事情を俯瞰する
@ngsw_taro さん
Ktor(KotlinのWebフレームワーク)
Exposed(DBアクセスライブラリ)
Koin(KotlinのDIライブラリ)
- Kotlin x Spring
- Web Fluxに着目
※メモ
- Reactorのコルーチン
zip
とかのAPIを覚える必要ない
※メモ
3. Spring Fu
- Kotlin向けマイクロフレームワーク
- GraalVMのAOTを狙っている?
まとめ
- Spring Bootは王道
- コルーチンのおかげでReactorをしらなくてもOK
- Spring Fuは開発途上
- 気になるのはDBアクセス周り
- (実際のプロジェクトではExposeはまだ使いにくい)
サーバーサイドKotlinとSpring5の Kotlin support
@bulbulpaul さん
Yahoo!カレンダーの技術ポートフォリオ@Server Side
なんでKotlin?
- 制約と規律
- Null Safe
- sealed class
- 高い利便性
- 巨人の肩に乗れる
- Javaのエコシステムを使える
⇒開発が楽しい!
利用技術
- Javaライブラリ
- Athenz(認証/認可)(米Yahoo製)
- Pulsar(MQ)
- Hystrix(サーキットブレーカー)
- Kotlin対応ライブラリ
- SpringBoot(Fw)
- Moshi(Json)
ライブラリのKotlin対応
- サポートされていないからKotlinが動かないことはない
- Kotlinらしいコードで書けるための処理対応
- 場合によってはJavaとの境界でNull Safeが守られない
GsonではNullSafeの定義をしてもNullが入ることがある
Spring Boot
- Spring Fu
- Spring Initializr
- Spring Boot v2
Kotlin Support
- idikomatic Kotlin code
- Annotations
- RouterFunctions
- Bean definition DSL
Kotlinらしいコードが書ける
- Extension functions
- Reified type parameters
- Javaのコンパイルで消えてしまうジェネリクスの型をinline展開して処理中に参照する
- Class
で受け取る処理が多いので細々としたところの記載がKotlinらしく書ける
まとめ
- SpringBootはKotlinの特性を邪魔せずに書ける
- Kotlinはサーバサイドでも十分活用できる
- Javaのライブラリも問題なく使える
LT
KHipster ~JHipsterで始めるKotlin Web プログラミング~
@s_kozake さん
JavaのScaffoldツール(例えばSpringBoot+Angularの環境のようなアプリの雛形を自動生成してくれる)JHipstet の紹介と、それのKotlin版であるKHipsterの紹介。
KHipsterはまだ開発中(現在 v0.5.0
)なのでデフォルト設定を変更すると動かないので注意が必要とのこと。
multi platform kotlin
Multiplatform Projects - Kotlin Programming Language
Kotlinのマルチプラットフォームについて
マルチプラットフォームのサービスのドメイン層をDDDで設計してKotlinで実装するための考え方について本家サイトに公開されている解説を元にまとめた内容の発表。
- 環境構築が大変
- gradleとwebpack連携など
javaタヒねとさけんでた
Kotlinのコードの書きやすさ、見やすさについて。
Arrayの使い方でJavaだと for(int i = 0; i < list.size(); i++){ }
のような煩雑な書き方をしないといけない。Kotlinは快適という話。