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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Kenta Suzuki
November 22, 2017
Technology
2.2k
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ポストRailsとしてのKotlin + Spring Boot #m3kt
どこでもKotlin #4 〜秋のLT大会 その弐〜
https://m3-engineer.connpass.com/event/70561/
Kenta Suzuki
November 22, 2017
More Decks by Kenta Suzuki
See All by Kenta Suzuki
レガシーアプリケーションのリニューアルにNuxt.jsで戦う #vuefes_reject
suusan2go
9
22k
rescue されない例外?! / A Exception not rescue #megurorb
suusan2go
0
3k
Rails サービスクラス再考 / have a rethink on Rails service class
suusan2go
8
12k
フロントエンドエンジニアも知っておきたいgRPC
suusan2go
18
11k
Flutterでアプリ作ってる話
suusan2go
2
3k
Nuxt.js + TypeScript = Great!
suusan2go
8
42k
gRPC on Spring Boot
suusan2go
0
3.2k
ずっとRubyをやっていたエンジニアがGoに入門して挫折して再挑戦した話
suusan2go
2
5.4k
非SPAなRailsアプリでレールに乗りつつReactを使う話
suusan2go
6
7.9k
Other Decks in Technology
See All in Technology
関西に縁あるMicrosoft MVPsが語るCopilotの未来
kasada
0
1.2k
製造業のクラウド活用最適解〜AI,DXを加速するデータ基盤の作り方〜
hamadakoji
0
390
「嘘をつくテスト」の失敗例から学ぶ 良いテストコード #frontend_phpcon_do
asumikam
0
480
Agentic Web
dynamis
1
140
ポケモンの型をTypeScriptの型システムで表現してみた
subroh0508
0
330
AI Engineering Summit Tokyo 2026 AIの前に、やることがある 〜医療データ企業の4フェーズ〜
dtaniwaki
0
1.9k
2026.06.13_AI時代に事業会社が「SIer出身エンジニア」を求める理由 / Why Businesses Seek Engineers with a System Integrator Background in the AI Era
jumtech
0
520
新アーキテクチャ「TiDB X」解説とDedicated比較 TiDB Cloud Premiumのゲーム運用活用を検証
staffrecruiter
0
110
Unlocking the Apps
pimterry
0
230
EventBridge Connection
_kensh
4
570
Cloud Run のアップデート 触ってみる&紹介
gre212
0
320
生成 AI × MCP で切り拓く次世代 SRE!自律型運用への挑戦と開発者体験の進化
_awache
0
150
Featured
See All Featured
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.5k
Test your architecture with Archunit
thirion
1
2.3k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
The Curious Case for Waylosing
cassininazir
1
370
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
390
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.8k
Statistics for Hackers
jakevdp
799
230k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
200
Large-scale JavaScript Application Architecture
addyosmani
515
110k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.3k
Music & Morning Musume
bryan
47
7.2k
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