Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
20200427 Kotlin愛好会発表 『2週間前にリリースされたばかりのgRPC Koli...
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
doyaaaaaken
April 28, 2020
Technology
440
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
20200427 Kotlin愛好会発表 『2週間前にリリースされたばかりのgRPC Kolinライブラリについて調べてみた』
20200427 Kotlin愛好会発表 『2週間前にリリースされたばかりのgRPC Kolinライブラリについて調べてみた』
doyaaaaaken
April 28, 2020
More Decks by doyaaaaaken
See All by doyaaaaaken
コンパウンドスタートアップの“疎結合すぎない”チーム設計
doyaaaaaken
5
1.7k
スマートラウンドで試してみた ChatGPT活用成功/失敗事例8選!
doyaaaaaken
3
4.6k
Kotlin製自作OSSの普及戦略 ~kotlin-csvの実例を元に~ @Kotlin Fest 2022
doyaaaaaken
3
1k
20220721 小規模フルリモート組織における入社者オンボーディング設計
doyaaaaaken
0
480
エンジニアによる事業指標計測のススメ
doyaaaaaken
1
500
プラットフォーム型SaaSにおけるマルチテナント設計
doyaaaaaken
5
3k
考えることを仕組み化する
doyaaaaaken
1
780
プルリクへのセルフコメントという小技
doyaaaaaken
0
690
先取りKtor2.0
doyaaaaaken
1
730
Other Decks in Technology
See All in Technology
トークン化預金DCJPYの取り組みと活用ユースケース
finengine
0
220
freeeにおけるSoftware Factory
freee
PRO
0
270
CSS2026:OWS研究会・招待講演「世界観を、実装する」
atsush1_sada
2
160
DBについての基礎説明(MySQL編) - コロプラ 2026年度 新卒研修
colopl
0
160
DGX Spark でどこまでハッキングができるのか?
kash1064
3
1.4k
AIネイティブ企業への変革。パーソルキャリアが挑む「データメッシュ×ガバナンス」のアーキテクチャ戦略
techtekt
PRO
0
120
野蛮なアジャイル [サイボウズ発!]組織の常識を覆した反骨のスクラム実践記 / Barbaric Agile - Enterprise Agile Study Group
ama_ch
0
120
野良MCPサーバーを排除せよ!MCPサーバーのガバナンス
yukiogawa
1
140
FinOps Agentが生んだ技術負債:コスト自動調査の落とし穴と解消までの道のり
oasis1994liveforever
3
250
その Valkey 使いこなしていますか?
onk
PRO
5
1.8k
データエンジニアの次の戦場は "プロセスエンジニアリング"
sansantech
PRO
1
150
Turning Repos into the Product Second Brain with an LLM Wiki
linedevth
0
130
Featured
See All Featured
Embracing the Ebb and Flow
colly
88
5.2k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
430
We Have a Design System, Now What?
morganepeng
55
8.4k
A designer walks into a library…
pauljervisheath
211
25k
Paper Plane
katiecoart
PRO
5
54k
Speed Design
sergeychernyshev
33
2.2k
30 Presentation Tips
portentint
PRO
1
430
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
850
Abbi's Birthday
coloredviolet
4
10k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.7k
4 Signs Your Business is Dying
shpigford
187
23k
Six Lessons from altMBA
skipperchong
29
4.5k
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