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.2k
ポスト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
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.1k
ずっとRubyをやっていたエンジニアがGoに入門して挫折して再挑戦した話
suusan2go
2
5.3k
非SPAなRailsアプリでレールに乗りつつReactを使う話
suusan2go
6
7.9k
Other Decks in Technology
See All in Technology
us-east-1 に障害が起きた時に、 ap-northeast-1 にどんな影響があるか 説明できるようになろう!
miu_crescent
PRO
13
4.2k
Datadog の RBAC のすべて
nulabinc
PRO
3
440
JAWS FESTA 2025でリリースしたほぼリアルタイム文字起こし/翻訳機能の構成について
naoki8408
1
290
Claude Codeが爆速進化してプラグイン追従がつらいので半自動化した話 ver.2
rfdnxbro
0
490
複数クラスタ運用と検索の高度化:ビズリーチにおけるElastic活用事例 / ElasticON Tokyo2026
visional_engineering_and_design
0
130
「ストレッチゾーンに挑戦し続ける」ことって難しくないですか? メンバーの持続的成長を支えるEMの環境設計
sansantech
PRO
3
630
When an innocent-looking ListOffsets Call Took Down Our Kafka Cluster
lycorptech_jp
PRO
0
120
AIエージェント、 社内展開の前に知っておきたいこと
oracle4engineer
PRO
2
100
トップマネジメントとコンピテンシーから考えるエンジニアリングマネジメント
zigorou
4
840
生成AIの利用とセキュリティ /gen-ai-and-security
mizutani
1
1.6k
タスク管理も1on1も、もう「管理」じゃない ― KiroとBedrock AgentCoreで変わった"判断の仕事"
yusukeshimizu
5
2.5k
JAWS Days 2026 楽しく学ぼう! 認証認可 入門/20260307-jaws-days-novice-lane-auth
opelab
10
1.7k
Featured
See All Featured
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
480
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
310
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
290
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
250
Unsuck your backbone
ammeep
672
58k
Discover your Explorer Soul
emna__ayadi
2
1.1k
Navigating Weather and Climate Data
rabernat
0
130
How to Ace a Technical Interview
jacobian
281
24k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
60
42k
Between Models and Reality
mayunak
2
230
AI: The stuff that nobody shows you
jnunemaker
PRO
3
370
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
1.8k
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