Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ポストRailsとしてのKotlin + Spring Boot #m3kt
Search
Kenta Suzuki
November 22, 2017
Technology
4
2.1k
ポストRailsとしてのKotlin + Spring Boot #m3kt
どこでもKotlin #4 〜秋のLT大会 その弐〜
https://m3-engineer.connpass.com/event/70561/
Kenta Suzuki
November 22, 2017
Tweet
Share
More Decks by Kenta Suzuki
See All by Kenta Suzuki
レガシーアプリケーションのリニューアルにNuxt.jsで戦う #vuefes_reject
suusan2go
9
21k
rescue されない例外?! / A Exception not rescue #megurorb
suusan2go
0
2.8k
Rails サービスクラス再考 / have a rethink on Rails service class
suusan2go
8
11k
フロントエンドエンジニアも知っておきたいgRPC
suusan2go
18
11k
Flutterでアプリ作ってる話
suusan2go
2
2.9k
Nuxt.js + TypeScript = Great!
suusan2go
8
42k
gRPC on Spring Boot
suusan2go
0
2.9k
ずっとRubyをやっていたエンジニアがGoに入門して挫折して再挑戦した話
suusan2go
2
5.2k
非SPAなRailsアプリでレールに乗りつつReactを使う話
suusan2go
6
7.7k
Other Decks in Technology
See All in Technology
Oracle Cloud Infrastructure:2025年4月度サービス・アップデート
oracle4engineer
PRO
0
130
PagerDuty×ポストモーテムで築く障害対応文化/Building a culture of incident response with PagerDuty and postmortems
aeonpeople
2
410
テストって楽しい!開発を加速させるテストの魅力 / Testing is Fun! The Fascinating of Testing to Accelerate Development
aiandrox
0
110
Porting PicoRuby to Another Microcontroller: ESP32
yuuu
4
470
SREからゼロイチプロダクト開発へ ー越境する打席の立ち方と期待への応え方ー / Product Engineering Night #8
itkq
2
1k
CodePipelineのアクション統合から学ぶAWS CDKの抽象化技術 / codepipeline-actions-cdk-abstraction
gotok365
5
300
Стильный код: натуральный поиск редких атрибутов по картинке. Юлия Антохина, Data Scientist, Lamoda Tech
lamodatech
0
800
JPOUG Tech Talk #12 UNDO Tablespace Reintroduction
nori_shinoda
2
150
Amazon CloudWatch を使って NW 監視を行うには
o11yfes2023
0
180
Notion x ポストモーテムで広げる組織の学び / Notion x Postmortem
isaoshimizu
1
120
Spring Bootで実装とインフラをこれでもかと分離するための試み
shintanimoto
7
880
勝手に!深堀り!Cloud Run worker pools / Deep dive Cloud Run worker pools
iselegant
4
510
Featured
See All Featured
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Thoughts on Productivity
jonyablonski
69
4.6k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
32
5.4k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.6k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Practical Orchestrator
shlominoach
186
11k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.1k
The Cult of Friendly URLs
andyhume
78
6.3k
Product Roadmaps are Hard
iamctodd
PRO
52
11k
How STYLIGHT went responsive
nonsquared
99
5.5k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Transcript
Copyright © 2017 M3, Inc. All Rights Reserved ポストRailsとしての Kotlin
+ Spring Boot #m3kt どこでもKotlin #4 @suusan2go
自己紹介 鈴木健太 (@suusan2go) エムスリー株式会社 (2017/11/1〜) これまではRails / Ruby / JSの開発がメイン
趣味含めてKotlin歴3ヶ月くらい
アジェンダ • Rails使ってたときに感じていた課題からポスト Railsな構成を考える • Kotlin + Spring Bootを触ってみて所感
初めに言っておくと タイトルは若干釣りです :bow: • ポストRailsというよりは、大規模になってきた Railsアプリケーションを分割していくときの選択 肢としてKotlin + Spring Bootもあるよ!みたい
な話をします。
創業3年目〜のRailsの 会社に話を聞きに行くと 大体皆さん言うこと
型がほしい
型がほ しい
なぜか • アプリケーションが複雑になってくると コード変 更の影響が読みきれなくなってくる ◦ なんでこのメソッドにこんなオブジェクトが入ってくるんだ … • 型・インターフェースが欲しくなってくる ◦
このメソッドにわたるオブジェクトはこのメソッド、このプロ パティを持っていることを保証したい ◦ でもテストやコードレビューだけでは保証しきれない…
とはいえ • 仕様がシンプルな機能や画面ではRailsの生産 性はかなり高い • ユーザーにHTMLを返す部分もやっぱりRailsは 強いと思う ◦ 豊富なGemを持つRubyのエコシステム、Railsの便利機 能はやっぱりすごい
※SPAになるとまたちょっと状況は違うが…
Rails => Rails + X なアプリケーション構 成の可能性 重要・複雑で精密さが求められる部分やアプリ間で重複するロジックを、 Railsから固く作れる別アプリケーションにしていく構成は結構アリなので は?
型のある何か
None
None
よさそう
でもRailsエンジニアが Kotlinとか本当にやれる の?
やって みた
Gistっぽい何かGyst(仮)構成 • バックエンドはSpringBoot • フロントはVue.jsのSPA • 休日の夜をつかって2ヶ月くらい(学習込み) REST swagger-codegenで APIクライアント自動生成
DEMO https://github.com/suusan2go/gyst
実際触ってみてどうだったの?(1) • IntelliJのJava => Kotlin変換が優秀 ◦ ググって出てきたものがJavaのコードでもそんなに困ら ない ◦ 多少の変換は自分で必要な場合も多いけど優秀
(nullable、var、val など)
実際触ってみてどうだったの?(2) • SpringはJSONサーバとして(・∀・)イイ!! ◦ @RestcontrollerつけるだけでレスポンスがJSONにな る! ◦ null-safeなKotlinのお陰で、モデルを見ればNullが入るこ とがあるのか自明になる ◦
Springからほぼ自動でAPI Doc / Clientが生成できる (Swagger Codegenで APIクライアントgem 自動生成 ) ◦ (当たり前だけど)型がある
実際触ってみてどうだったの?(3) • Kotlin書いていて結構楽しい ◦ 結構Rubyに似たシンタックスでいける ◦ こんな感じでかけないかなーというのが大体用意されて る
リスト操作 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}
if式 Ruby Kotlin val job = if (name == "taro")
{ "エバンジェリスト" } else { "エンジニア" } job = if name == "taro" "エバンジェリスト" else "エンジニア" end
拡張関数 Ruby Kotlin fun Int.print(): Unit = println(this) 1.print() class
Integer def print; puts self; end end 1.print
実際触ってみてどうだったの?(3) • Kotlin書いていて結構楽しい ◦ スコープ関数(let, apply , run とか)がうまくハマると気持 ちいい
実際触ってみてどうだったの?(4) • とはいえJavaのことはわかってないとハマりが ち ◦ 特にアノテーション周り ◦ KotlinがJava的には何をしているのか?は知っておいた ほうが良さそう ◦
一ヶ月くらいはJavaの復習やってました
実際触ってみてどうだったの?(5) • KotlinよりもSpringの理解が大変だった ◦ 本を買ったりしました(Spring徹底入門 Spring FrameworkによるJavaアプリケー ション開発) ◦ Spring5からKotlinサポートも入ったけど、マイクロサービ
スなバックエンドサーバーとしては、もうちょいシンプルな FWが欲しい ◦ KtorなどKotlin製のFWに期待!
まとめ • Kotlin はRubyエンジニアでもとっつきやすい言 語になっていて怖くないよ! • JSONを返すサーバーとしてはKotlin + Spring Bootの開発体験は結構良い!
• Railsをフロント・SpringBootをバックエンドとする 構成は結構アリな気がする
One More Thing
Kotlin + Spring Boot + gRPC な新プロジェクトが進行中! JOIN US! GateWay