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
20200427 Kotlin愛好会発表 『2週間前にリリースされたばかりのgRPC Koli...
Search
doyaaaaaken
April 28, 2020
Technology
0
400
20200427 Kotlin愛好会発表 『2週間前にリリースされたばかりのgRPC Kolinライブラリについて調べてみた』
20200427 Kotlin愛好会発表 『2週間前にリリースされたばかりのgRPC Kolinライブラリについて調べてみた』
doyaaaaaken
April 28, 2020
Tweet
Share
More Decks by doyaaaaaken
See All by doyaaaaaken
コンパウンドスタートアップの“疎結合すぎない”チーム設計
doyaaaaaken
5
1.5k
スマートラウンドで試してみた ChatGPT活用成功/失敗事例8選!
doyaaaaaken
3
4.3k
Kotlin製自作OSSの普及戦略 ~kotlin-csvの実例を元に~ @Kotlin Fest 2022
doyaaaaaken
3
820
20220721 小規模フルリモート組織における入社者オンボーディング設計
doyaaaaaken
0
360
エンジニアによる事業指標計測のススメ
doyaaaaaken
1
390
プラットフォーム型SaaSにおけるマルチテナント設計
doyaaaaaken
5
2.8k
考えることを仕組み化する
doyaaaaaken
1
680
プルリクへのセルフコメントという小技
doyaaaaaken
0
610
先取りKtor2.0
doyaaaaaken
1
630
Other Decks in Technology
See All in Technology
技術者はかっこいいものだ!!~キルラキルから学んだエンジニアの生き方~
masakiokuda
2
270
SREからゼロイチプロダクト開発へ ー越境する打席の立ち方と期待への応え方ー / Product Engineering Night #8
itkq
2
780
はてなの開発20年史と DevOpsの歩み / DevOpsDays Tokyo 2025 Keynote
daiksy
6
1.5k
Goの組織でバックエンドTypeScriptを採用してどうだったか / How was adopting backend TypeScript in a Golang company
kaminashi
6
5.7k
CloudWatch 大好きなSAが語る CloudWatch キホンのキ
o11yfes2023
0
180
The Tale of Leo: Brave Lion and Curious Little Bug
canalun
1
120
アセスメントで紐解く、10Xのデータマネジメントの軌跡
10xinc
1
430
地味にいろいろあった! 2025春のAmazon Bedrockアップデートおさらい
minorun365
PRO
1
110
4/16/25 - SFJug - Java meets AI: Build LLM-Powered Apps with LangChain4j
edeandrea
PRO
1
100
Linuxのパッケージ管理とアップデート基礎知識
go_nishimoto
0
240
AWSのマルチアカウント管理 ベストプラクティス最新版 2025 / Multi-Account management on AWS best practice 2025
ohmura
4
290
ワールドカフェI /チューターを改良する / World Café I and Improving the Tutors
ks91
PRO
0
120
Featured
See All Featured
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
Rails Girls Zürich Keynote
gr2m
94
13k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.2k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
The Power of CSS Pseudo Elements
geoffreycrofte
75
5.8k
Optimising Largest Contentful Paint
csswizardry
36
3.2k
Automating Front-end Workflow
addyosmani
1369
200k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.5k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.2k
Site-Speed That Sticks
csswizardry
5
490
Transcript
2िؒલʹϦϦʔε͞Ε͔ͨΓͷ gRPCͷެࣜKotlinϥΠϒϥϦʹ͍ͭͯௐͯΈͨ KotlinѪձvol.21 (2020/04/27) @doyaaaaaken (Twitter/Github/Qiita) খࢁ ݈ଠ
ࣗݾհ • ۀͰͬͯΔ͜ͱ • smartroundͱ͍͏SaaSελʔτΞοϓͰϦʔυΤϯδχΞͯ͠·͢ • αʔόαΠυʢKotlin JVMʣͷଞɺϑϩϯτʢVueʣɾΠϯϑϥʢAWSʣ৮ͬͯ·͢ • ࠷ۙFigmaGoogleAnalyticsΨγΨγ৮ͬͯ·͢
• OSSपΓͷ׆ಈ • KotlinOSSͷίϯτϦϏϡʔτ(ktor, Exposed, kotlintest, kohttp) • ktorͷυΩϡϝϯτຊޠ༁ϓϩδΣΫτͷ্ཱ͛ਓͰ͢ʢࢀՃऀৗ࣌ืूதʂʣ • kotlin-csvͱ͍͏ࣗ࡞OSS࡞ͬͯ·͢ʢStar80ͪΐ͍ɻPR͓ͪͯ͠·͢ʂʣ
smartroundʹ͍ͭͯ • ελʔτΞοϓͷࢿۚௐୡલޙͷۀΛ ޮԽ͢ΔαʔϏε܈Λఏڙ͍ͯ͠·͢ • LPɿhttps://jp.smartround.com/ • ࢿۚௐୡϚχϡΞϧແྉެ։தͰ͢ • KotlinJVMΛ͡Ίͱͨ͠Ϟμϯͳ
ٕज़ελοΫͰ͢ • ٕज़հࢿྉɿ https://gitpitch.com/smartround/ smartround-tech-presentation • ktorόʔδϣϯ1.0.0-betaͷ͔࣌Βಋೖ • KotlinJVMɺVueJsॻ͖͍ͨΤϯδχΞɺ ઈࢍେืूதͰ͢ʂʂ
ࠓճͷൃදͷ͓ • gRPC͕ެࣜʹKotlinΛαϙʔτͨ݅͠ • 2िؒલͷ4/10ʹϦϦʔε͞ΕͨgRPCެࣜͷϥΠϒϥϦʢv0.1.1ʣʹ͍ͭͯ • GithubͷStar͕Θ͔ͣ2िͰ240͑ • ʰKotlin, meet
gRPC: a new open-source project for modern appsʱ
gRPCެࣜυΩϡϝϯτવରԠ • 4/16͔ΒKotlinʹؔ͢ΔQuickStart͕Ճ͞Ε·ͨ͠ • https://grpc.io/docs/quickstart/kotlin/
ͦͦgRPCͱʁʢwikiతઆ໌ʣ • Google͕։ൃͨ͠OSSͷϦϞʔτϓϩγʔδϟίʔϧγεςϜ • RPCɿ͋ΔϓϩάϥϜ͔ΒผωοτϫʔΫʹ͋ΔϓϩάϥϜͷॲཧΛݺͼग़ͤΔ • Protocol Buffersͱ͍͏ݴޠͰΠϯλʔϑΣʔεΛఆٛ • ௨৴ʹHTTP/2Λ༻͍Δ
• ϝϦοτ • ݴޠඇґଘʢҟͳΔݴޠͷϚΠΫϩαʔϏεؒͷݺͼग़͠ɺϒϥβ㱺αʔόͷݺͼग़͠ʹར༻Մೳʣ • ߴʢσʔλΛγϦΞϥΠζܰ͠ྔʹ͢Δ͜ͱͰ࣮ݱʣ • ΠϯλʔϑΣʔεͷมߋ͕༰қʹʢProtocol BuffersʹଇΔ͜ͱͰ࣮ݱʣ • ※ Mericari, AbemaTV, dowangoͰ࠾༻͞Ε͍ͯΔ
Kotlinʹ͓͚Δࠓ·ͰͷgPRCϥΠϒϥϦͷঢ়گ • awsome-grpcͳΔυΩϡϝϯτʹ4ͭհ͞Ε͍ͯ·ͨ͠ • https://github.com/grpc-ecosystem/awesome-grpc#lang-kotlin • ※ grpc-kotlinͱ͍͏ಉ໊ͷผϥΠϒϥϦ͋ΔͷͰҙʂʂʢࠓճͷൃදgrpc/grpc-kotlinʣ • ※
Kotlin(JVM)͔ΒJavaͷϥΠϒϥϦ͕͑Δ͜ͱߟ͑Δͱɺ ࠓ·ͰgRPCΛ͑Δ͜ͱ͑ͨΑ͏Ͱ͢
ࠓճग़ͨϥΠϒϥϦΛ͏ϝϦοτ • μϯτπͰͰ͔͍ϝϦοτ ʰgRPC͕ެࣜϥΠϒϥϦͱͯ͠αϙʔτ͍ͯ͠Δ͜ͱʱ • ͦΕҎ֎ͩͱGoogle CloudͷϒϩάҎԼͷΑ͏ͳϝϦοτΛհ • KotlinϥΠϒϥϦͳͷͰcoroutineFlow APIΛ͍ඇಉظϓϩάϥϜ͕͖Ε͍ʹॻ͚Δ
• GCPͷCloud RunͰར༻Ͱ͖Δ
͔͜͜ΒαϯϓϧίʔυΛ งғؾϨϕϧͰݟͯΈ·͢
ࢀߟʹͨ͠υΩϡϝϯτ • gRPCެࣜυΩϡϝϯτͷҎԼ2ͭͷϖʔδ͕Θ͔Γ͍͢Ͱ͢ • QuickStart (https://grpc.io/docs/quickstart/kotlin/) • gRPC Basics -
Kotlin/JVM (https://grpc.io/docs/tutorials/basic/kotlin/)
ࠓճऔΓ্͛Δαϯϓϧίʔυͷશମਤ ΫϥΠΞϯταΠυ ϓϩάϥϜ (Kotlin) αʔόαΠυ ϓϩάϥϜ (Kotlin) gPPCଓ༻ ϓϩάϥϜ gPPCଓ༻
ϓϩάϥϜ gRPCݺͼग़͠ ΫϥΠΞϯταΠυ αʔόαΠυ ΠϯλʔϑΣʔεఆٛ .protoϑΝΠϧ ʢProtocol Buffersʣ .protoϑΝΠϧ͔Βੜ .protoϑΝΠϧ͔Βੜ
1. ΠϯλʔϑΣʔεఆٛʢ.protoʣϑΝΠϧʹ͍ͭͯ • ϝιουఆٛɺϦΫΤετɾϨεϙϯεܕఆٛͳͲ͕ Protocol BuffersʹΑΓهࡌ͞Ε͍ͯΔ
2. Protocol Buffers͔ΒϓϩάϥϜࣗಈੜʹ͍ͭͯ • Protocol BuffersίϯύΠϥprotocΛ༻͍.protoϑΝΠϧ͔ΒKotlinϓϩάϥϜ Λࣗಈੜ͢Δ ࣗಈੜ͞ΕͨίʔυͰ͢
3. αʔό͔ΒgRPCϓϩάϥϜΛར༻ • ࣗಈੜ͞ΕͨgPRCϓϩάϥϜΛ༻͍ͯ αʔόଆʹ͓͍ͯListen͢ΔgPRCΤϯυϙΠϯτΛఆ͓ٛͯ͘͠
4. ΫϥΠΞϯτ͔ΒgRPCϓϩάϥϜΛར༻ • ࣗಈੜ͞ΕͨgPRCϓϩάϥϜʹsuspend funϝιου͕͋ΔͷͰɺ ͦΕΛ࣮ߦ͢Δ͜ͱͰαʔόRPCͰ͖Δ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ by @doyaaaaaken