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
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
460
エンジニアによる事業指標計測のススメ
doyaaaaaken
1
490
プラットフォーム型SaaSにおけるマルチテナント設計
doyaaaaaken
5
3k
考えることを仕組み化する
doyaaaaaken
1
770
プルリクへのセルフコメントという小技
doyaaaaaken
0
680
先取りKtor2.0
doyaaaaaken
1
730
Other Decks in Technology
See All in Technology
Redmine 7.0で私が開発した新機能の狙いと背景
vividtone
1
110
いかに伝えるか 〜新卒エンジニアの教育のための、ライトノベル活用の一例
ikedon
1
200
Genie Code ワークショップ 応用編 / Genie-Code-Workshop-advanced
databricksjapan
PRO
0
340
どんな手を使っても絶対間に合わせるスケジューラ
asari194617
0
1.6k
多層防御と最⼩権限で実現する、安全なAIエージェント設計パターン
lycorptech_jp
PRO
0
190
深夜のクラウド懺悔室 1:29:300 or 1:0:0
kazzpapa3
0
170
「重なり」は迎える側がつくる ― 人もAIエージェントも歓迎するプロダクトエンジニアリング ―
go0517go
PRO
0
240
スクラムで身についていた動き方を、XPで捉え直してみた
codmoninc
PRO
1
210
Beyond the Hype: Practical AI for Your Oracle Database with MCP
thatjeffsmith
1
260
【Oracle AI Spotlight ウェビナー】AWSか、Azureか、Google Cloudか。その議論にオラクルを含める意義。
oracle4engineer
PRO
2
230
Microsoft 365 Copilot chat -tekoälypalvelun tietosuojaongelmat
hponka
0
210
PfEingのアプローチで働こう
rindrics
0
180
Featured
See All Featured
How to train your dragon (web standard)
notwaldorf
97
6.8k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Abbi's Birthday
coloredviolet
3
9.8k
How to Talk to Developers About Accessibility
jct
2
540
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.6k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
New Earth Scene 8
popppiees
3
2.5k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
2
3.8k
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
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