Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Copyright © 2017 M3, Inc. All Rights Reserved ポストRailsとしての Kotlin + Spring Boot #m3kt どこでもKotlin #4 @suusan2go
Slide 2
Slide 2 text
自己紹介 鈴木健太 (@suusan2go) エムスリー株式会社 (2017/11/1〜) これまではRails / Ruby / JSの開発がメイン 趣味含めてKotlin歴3ヶ月くらい
Slide 3
Slide 3 text
アジェンダ ● Rails使ってたときに感じていた課題からポスト Railsな構成を考える ● Kotlin + Spring Bootを触ってみて所感
Slide 4
Slide 4 text
初めに言っておくと タイトルは若干釣りです :bow: ● ポストRailsというよりは、大規模になってきた Railsアプリケーションを分割していくときの選択 肢としてKotlin + Spring Bootもあるよ!みたい な話をします。
Slide 5
Slide 5 text
創業3年目〜のRailsの 会社に話を聞きに行くと 大体皆さん言うこと
Slide 6
Slide 6 text
型がほしい
Slide 7
Slide 7 text
型がほ しい
Slide 8
Slide 8 text
なぜか ● アプリケーションが複雑になってくると コード変 更の影響が読みきれなくなってくる ○ なんでこのメソッドにこんなオブジェクトが入ってくるんだ … ● 型・インターフェースが欲しくなってくる ○ このメソッドにわたるオブジェクトはこのメソッド、このプロ パティを持っていることを保証したい ○ でもテストやコードレビューだけでは保証しきれない…
Slide 9
Slide 9 text
とはいえ ● 仕様がシンプルな機能や画面ではRailsの生産 性はかなり高い ● ユーザーにHTMLを返す部分もやっぱりRailsは 強いと思う ○ 豊富なGemを持つRubyのエコシステム、Railsの便利機 能はやっぱりすごい ※SPAになるとまたちょっと状況は違うが…
Slide 10
Slide 10 text
Rails => Rails + X なアプリケーション構 成の可能性 重要・複雑で精密さが求められる部分やアプリ間で重複するロジックを、 Railsから固く作れる別アプリケーションにしていく構成は結構アリなので は? 型のある何か
Slide 11
Slide 11 text
No content
Slide 12
Slide 12 text
No content
Slide 13
Slide 13 text
よさそう
Slide 14
Slide 14 text
でもRailsエンジニアが Kotlinとか本当にやれる の?
Slide 15
Slide 15 text
やって みた
Slide 16
Slide 16 text
Gistっぽい何かGyst(仮)構成 ● バックエンドはSpringBoot ● フロントはVue.jsのSPA ● 休日の夜をつかって2ヶ月くらい(学習込み) REST swagger-codegenで APIクライアント自動生成
Slide 17
Slide 17 text
DEMO https://github.com/suusan2go/gyst
Slide 18
Slide 18 text
実際触ってみてどうだったの?(1) ● IntelliJのJava => Kotlin変換が優秀 ○ ググって出てきたものがJavaのコードでもそんなに困ら ない ○ 多少の変換は自分で必要な場合も多いけど優秀 (nullable、var、val など)
Slide 19
Slide 19 text
実際触ってみてどうだったの?(2) ● SpringはJSONサーバとして(・∀・)イイ!! ○ @RestcontrollerつけるだけでレスポンスがJSONにな る! ○ null-safeなKotlinのお陰で、モデルを見ればNullが入るこ とがあるのか自明になる ○ Springからほぼ自動でAPI Doc / Clientが生成できる (Swagger Codegenで APIクライアントgem 自動生成 ) ○ (当たり前だけど)型がある
Slide 20
Slide 20 text
実際触ってみてどうだったの?(3) ● Kotlin書いていて結構楽しい ○ 結構Rubyに似たシンタックスでいける ○ こんな感じでかけないかなーというのが大体用意されて る
Slide 21
Slide 21 text
リスト操作 Ruby Kotlin a.map {i -> i * 10} a.reduce {sum,n -> sum + n} a.groupBy {i -> i % 2} a.filter {i -> i % 2 == 0} a.map {|i| i * 10} a.reduce {|sum,n| sum + n} a.group_by {|i| i % 2} a.select {|i| i % 2 == 0}
Slide 22
Slide 22 text
if式 Ruby Kotlin val job = if (name == "taro") { "エバンジェリスト" } else { "エンジニア" } job = if name == "taro" "エバンジェリスト" else "エンジニア" end
Slide 23
Slide 23 text
拡張関数 Ruby Kotlin fun Int.print(): Unit = println(this) 1.print() class Integer def print; puts self; end end 1.print
Slide 24
Slide 24 text
実際触ってみてどうだったの?(3) ● Kotlin書いていて結構楽しい ○ スコープ関数(let, apply , run とか)がうまくハマると気持 ちいい
Slide 25
Slide 25 text
実際触ってみてどうだったの?(4) ● とはいえJavaのことはわかってないとハマりが ち ○ 特にアノテーション周り ○ KotlinがJava的には何をしているのか?は知っておいた ほうが良さそう ○ 一ヶ月くらいはJavaの復習やってました
Slide 26
Slide 26 text
実際触ってみてどうだったの?(5) ● KotlinよりもSpringの理解が大変だった ○ 本を買ったりしました(Spring徹底入門 Spring FrameworkによるJavaアプリケー ション開発) ○ Spring5からKotlinサポートも入ったけど、マイクロサービ スなバックエンドサーバーとしては、もうちょいシンプルな FWが欲しい ○ KtorなどKotlin製のFWに期待!
Slide 27
Slide 27 text
まとめ ● Kotlin はRubyエンジニアでもとっつきやすい言 語になっていて怖くないよ! ● JSONを返すサーバーとしてはKotlin + Spring Bootの開発体験は結構良い! ● Railsをフロント・SpringBootをバックエンドとする 構成は結構アリな気がする
Slide 28
Slide 28 text
One More Thing
Slide 29
Slide 29 text
Kotlin + Spring Boot + gRPC な新プロジェクトが進行中! JOIN US! GateWay