radioc@?

レディオキャットハテナ

【勉強会メモ】Osaka Mix Leap Study #21 - Server Side Kotlin

yahoo-osaka.connpass.com

  • 日時: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フレームワーク)

github.com

Exposed(DBアクセスライブラリ)

github.com

Koin(KotlinのDIライブラリ)

github.com

2. Spring Framework

  • Kotlin x Spring
  • Web Fluxに着目

※メモ

qiita.com

  • Reactorのコルーチン
  • zip とかのAPIを覚える必要ない

※メモ

www.cresco.co.jp

3. Spring Fu

github.com

まとめ

  • Spring Bootは王道
  • コルーチンのおかげでReactorをしらなくてもOK
  • Spring Fuは開発途上
    • DIが内蔵されているのがいいかも
    • REST API前提
    • Open APIで使用を定義してからコントローラのコードを自動生成するのが普通?
  • 気になるのはDBアクセス周り
    • (実際のプロジェクトではExposeはまだ使いにくい)

サーバーサイドKotlinとSpring5の Kotlin support

@bulbulpaul さん

speakerdeck.com

Yahoo!カレンダーの技術ポートフォリオ@Server Side

  • インフラ:openstack⇒Cloud Foundryとk8s
  • 言語:phpJava⇒KotlinとJava
    • 最終的にはKotlinだけにしたい

なんでKotlin?

  • 制約と規律
    • Null Safe
    • sealed class
  • 高い利便性
    • 型推論
    • Smart Cast
    • data classが便利
    • IDEのサポートが強力
  • 巨人の肩に乗れる
    • 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 さん

speakerdeck.com

JavaのScaffoldツール(例えばSpringBoot+Angularの環境のようなアプリの雛形を自動生成してくれる)JHipstet の紹介と、それのKotlin版であるKHipsterの紹介。

github.com

KHipsterはまだ開発中(現在 v0.5.0 )なのでデフォルト設定を変更すると動かないので注意が必要とのこと。

multi platform kotlin

Multiplatform Projects - Kotlin Programming Language

Kotlinのマルチプラットフォームについて

マルチプラットフォームのサービスのドメイン層をDDDで設計してKotlinで実装するための考え方について本家サイトに公開されている解説を元にまとめた内容の発表。

  • 環境構築が大変
    • gradleとwebpack連携など

javaタヒねとさけんでた

@furusin_oriver

Kotlinのコードの書きやすさ、見やすさについて。 Arrayの使い方でJavaだと for(int i = 0; i < list.size(); i++){ } のような煩雑な書き方をしないといけない。Kotlinは快適という話。