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
410
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.6k
スマートラウンドで試してみた ChatGPT活用成功/失敗事例8選!
doyaaaaaken
3
4.4k
Kotlin製自作OSSの普及戦略 ~kotlin-csvの実例を元に~ @Kotlin Fest 2022
doyaaaaaken
3
860
20220721 小規模フルリモート組織における入社者オンボーディング設計
doyaaaaaken
0
380
エンジニアによる事業指標計測のススメ
doyaaaaaken
1
420
プラットフォーム型SaaSにおけるマルチテナント設計
doyaaaaaken
5
2.9k
考えることを仕組み化する
doyaaaaaken
1
710
プルリクへのセルフコメントという小技
doyaaaaaken
0
640
先取りKtor2.0
doyaaaaaken
1
660
Other Decks in Technology
See All in Technology
結局QUICで通信は速くなるの?
kota_yata
8
7.5k
夏休みWebアプリパフォーマンス相談室/web-app-performance-on-radio
hachi_eiji
1
270
MCPサーバーを活用したAWSコスト管理
arie0703
0
130
ウォンテッドリーのアラート設計と Datadog 移行での知見
donkomura
0
150
Foundation Model × VisionKit で実現するローカル OCR
sansantech
PRO
1
420
はじめての転職講座/The Guide of First Career Change
kwappa
5
4.4k
Oracle Exadata Database Service on Cloud@Customer X11M (ExaDB-C@C) サービス概要
oracle4engineer
PRO
2
6.4k
AI時代の大規模データ活用とセキュリティ戦略
ken5scal
1
260
[kickflow]20250319_少人数チームでのAutify活用
otouhujej
0
170
Cloud WANの基礎から応用~少しだけDeep Dive~
masakiokuda
3
120
Amazon Q と『音楽』-ゲーム音楽もAmazonQで作成してみた感想-
senseofunity129
0
170
コミュニティと計画的偶発性理論 - 出会いが人生を変える / Life-Changing Encounters
soudai
PRO
7
610
Featured
See All Featured
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.4k
How to Think Like a Performance Engineer
csswizardry
25
1.8k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Facilitating Awesome Meetings
lara
55
6.5k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
It's Worth the Effort
3n
186
28k
The Language of Interfaces
destraynor
159
25k
Balancing Empowerment & Direction
lara
2
570
Designing Experiences People Love
moore
142
24k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
183
54k
Navigating Team Friction
lara
188
15k
The World Runs on Bad Software
bkeepers
PRO
70
11k
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