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
サーバーとは。(あとゲーム) / server
Search
misoobu
September 13, 2016
Technology
0
76
サーバーとは。(あとゲーム) / server
学生さん向け資料。
misoobu
September 13, 2016
Tweet
Share
More Decks by misoobu
See All by misoobu
論理削除と、そこでのElasticsearch活用 | 論理削除 Casual Talks #1 / soft_delete
misoobu
9
21k
平和なエンジニア生活を送りたい
misoobu
0
870
Other Decks in Technology
See All in Technology
デザインとエンジニアリングの架け橋を目指す OPTiMのデザインシステム「nucleus」の軌跡と広げ方
optim
0
120
ViteとTypeScriptのProject Referencesで 大規模モノレポのUIカタログのリリースサイクルを高速化する
shuta13
3
220
入院医療費算定業務をAIで支援する:包括医療費支払い制度とDPCコーディング (公開版)
hagino3000
0
120
Okta Identity Governanceで実現する最小権限の原則
demaecan
0
160
SRE × マネジメントレイヤーが挑戦した組織・会社のオブザーバビリティ改革 ― ビジネス価値と信頼性を両立するリアルな挑戦
coconala_engineer
0
290
ざっくり学ぶ 『エンジニアリングリーダー 技術組織を育てるリーダーシップと セルフマネジメント』 / 50 minute Engineering Leader
iwashi86
4
1.8k
ラスベガスの歩き方 2025年版(re:Invent 事前勉強会)
junjikoide
0
470
.NET 10のBlazorの期待の新機能
htkym
0
150
Okta Identity Governanceで実現する最小権限の原則 / Implementing the Principle of Least Privilege with Okta Identity Governance
tatsumin39
0
180
スタートアップの現場で実践しているテストマネジメント #jasst_kyushu
makky_tyuyan
0
140
アノテーション作業書作成のGood Practice
cierpa0905
PRO
0
130
OPENLOGI Company Profile for engineer
hr01
1
45k
Featured
See All Featured
It's Worth the Effort
3n
187
28k
A Modern Web Designer's Workflow
chriscoyier
697
190k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.7k
Intergalactic Javascript Robots from Outer Space
tanoku
272
27k
Building Applications with DynamoDB
mza
96
6.7k
Navigating Team Friction
lara
190
15k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Building Better People: How to give real-time feedback that sticks.
wjessup
369
20k
BBQ
matthewcrist
89
9.9k
Balancing Empowerment & Direction
lara
5
700
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.5k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
253
22k
Transcript
αʔόʔͱɻ ͏ͪʹ͓͚Δαʔόʔͱɻ 2016/09/07 ֶੜ͚Πϕϯτ ฤू൛
αʔόʔͱ ήʔϜʹ͓͚Δαʔόʔͱ ༷ʑͳσʔλʹ͍ͭͯ ήʔϜͰͲͷΑ͏ͳ௨৴͕͋Δͷ͔ αʔόʔʹٻΊΒΕΔ͜ͱ ͢͜ͱ
αʔόʔͱɺ ΫϥΠΞϯτ ͷཁٻʹର͠ɺ αʔϏεΛఏ ڙ͢Δͷɻ αʔόʔ
༷ʑͳαʔόʔ ͳͲͳͲ… ݕࡧͷαʔόʔ ϑΝΠϧͷαʔόʔ ϝʔϧͷαʔόʔ ϞόΠϧήʔϜͷαʔόʔ Web αʔϏεͷαʔόʔ
Web αʔϏεͱήʔϜʹ͓͚Δαʔόʔ ΫϥΠΞϯτΞϓϦ͔Βͷ ϦΫΤετʹର͠ॲཧΛͯ͠ JSON Ξʔτૉࡐɺ εΫϦϓτͳͲͷ ඞཁͳίϯςϯπΛฦ͢ ϒϥβ͔Βͷ ϦΫΤετʹର͠ॲཧΛͯ͠
HTML/JSON Ξʔτૉࡐɺ εΫϦϓτͳͲͷ ඞཁͳίϯςϯπΛฦ͢ Web αʔϏε ϞόΠϧωΠςΟϒήʔϜ
Web αʔϏεͱήʔϜʹ͓͚Δαʔόʔ ͍͍ͩͨಉ͡ ΫϥΠΞϯτΞϓϦ͔Βͷ ϦΫΤετʹର͠ॲཧΛͯ͠ JSON Ξʔτૉࡐɺ εΫϦϓτͳͲͷ ඞཁͳίϯςϯπΛฦ͢ ϒϥβ͔Βͷ
ϦΫΤετʹର͠ॲཧΛͯ͠ HTML/JSON Ξʔτૉࡐɺ εΫϦϓτͳͲͷ ඞཁͳίϯςϯπΛฦ͢ Web αʔϏε ϞόΠϧωΠςΟϒήʔϜ ͔͜͜Βɺͬͪ͜ˢΛྫʹΛ͢Δ
ʹݟ͑Δ෦ɺେମΫϥΠΞϯτ ΞϓϦʹΑΔ࣮ αʔόʔΛඞཁͱ͠ͳ͍ήʔϜଟ͍ αʔόʔ͕͋ΔͱԿ͕Ͱ͖Δͷ͔ʁ ʢαʔόʔԿΛ͢Δͷ͔ʁʣ ήʔϜʹ͓͚Δαʔόʔ
ԕ͘ͷ୭͔ͱܨ͕Δ ్தͰήʔϜ༰ͷΞοϓσʔτɺ੍ޚ ΞΧϯτཧʹΑΔɺෳͷڥͰͷ ϓϨΠ ӡӦଆͱͯ͠ɺϢʔβʔͷߦಈΛੳ αʔόʔ͕͋ΔͱԿ͕Ͱ͖Δͷ͔
ԕ͘ͷ୭͔ͱܨ͕Δ ్தͰήʔϜ༰ͷΞοϓσʔτɺ੍ޚ ΞΧϯτཧʹΑΔɺෳͷڥͰͷ ϓϨΠ ӡӦଆͱͯ͠ɺϢʔβʔͷߦಈΛੳ αʔόʔ͕͋ΔͱԿ͕Ͱ͖Δͷ͔ ରઓɺϥϯΩϯάɺڠྗ
ԕ͘ͷ୭͔ͱܨ͕Δ ్தͰήʔϜ༰ͷΞοϓσʔτɺ੍ޚ ΞΧϯτཧʹΑΔɺෳͷڥͰͷ ϓϨΠ ӡӦଆͱͯ͠ɺϢʔβʔͷߦಈΛੳ αʔόʔ͕͋ΔͱԿ͕Ͱ͖Δͷ͔ ৽͍͠ΠϕϯτͷՃ
ԕ͘ͷ୭͔ͱܨ͕Δ ్தͰήʔϜ༰ͷΞοϓσʔτɺ੍ޚ ΞΧϯτཧʹΑΔɺෳͷڥͰͷ ϓϨΠ ӡӦଆͱͯ͠ɺϢʔβʔͷߦಈΛੳ αʔόʔ͕͋ΔͱԿ͕Ͱ͖Δͷ͔ Λͳͯ҆͘͠৺
ԕ͘ͷ୭͔ͱܨ͕Δ ్தͰήʔϜ༰ͷΞοϓσʔτɺ੍ޚ ΞΧϯτཧʹΑΔɺෳͷڥͰͷ ϓϨΠ ӡӦଆͱͯ͠ɺϢʔβʔͷߦಈΛੳ αʔόʔ͕͋ΔͱԿ͕Ͱ͖Δͷ͔ ੳɾվળɺϢʔβʔαϙʔτ
σʔλͷཧɺαʔόʔͷେࣄ ͳࣄͷͻͱͭɻ αʔόʔ͕͋ΔͱԿ͕Ͱ͖Δͷ͔ σʔλͰɺ৭ʑͳ͜ͱ͕Ͱ͖Δɻ
Ϛελʔσʔλ Ϣʔβʔσʔλ ͪΐͬͱผ͔࣠ΒɺΞʔτؔ࿈σʔλ ʢը૾, 3D ૉࡐ…ʣ ༷ʑͳσʔλ ͦΕͧΕɺѻ͍͕ҟͳΔ
ӡӦଆ͕ఆٛ͢Δɺجૅใͱͳ Δσʔλ ݻఆతͳσʔλ ྫ: ͜ΜͳΩϟϥ͕͍ͯɺ͜Μͳύ ϥϝʔλʔͰ… ༷ʑͳσʔλ Ϛελʔσʔλ
ϢʔβʔͷߦಈʹΑͬͯͰ͖Δɺग़དྷࣄΛ ه͢Δσʔλ ྲྀಈతͳσʔλ ྫ: Ϣʔβʔ͕ॴ͍࣋ͯ͠Δɺͱ͋ΔΞΠ ςϜͷݸ ༰ྔ͕େ͖͘ͳΓ͍͢ ༷ʑͳσʔλ Ϣʔβʔσʔλ
αʔόʔ ଞʹɺϦΞϧλΠϜαʔόʔͳͲɻ 8FC"QQ 8FC"QQ 8FC"QQ 3%# 8FC"QQ ,74 -PBE #BMBODFS
-PBE #BMBODFS "TTFUT "TTFU 8FC"QQ #BUDI Web API ϢʔβʔσʔλͳͲ Ϛελʔσʔλ ΞʔτσʔλͳͲ => ͜͜Ͱ·ͱΊͯ ϦιʔεͱݺͿ $%/ 8FC"QQ
1. ήʔϜىಈ •ϩάΠϯ POST /session •Ϧιʔεʹߋ৽͕͋Ε DL 2. ϗʔϜը໘ •͓ΒͤΛऔಘͯ͠දࣔ
GET /notices 3. ΫΤετΛબΜͰ։࢝ •ϦιʔεͷϚελʔσʔλ͔ΒɺΫΤετͷҰཡΛಘΔ •։࢝ POST /user_quests 4. ΫΤετͷϓϨΠ݁ՌΛૹͬͯऴྃ PUT /user_quests/1234/finish •༩͞Εͨใुͷσʔλฦͬͯ͘Δɺ݁Ռදࣔ ࣮ࡍͷήʔϜϓϨΠͰͷ௨৴ྫ
ଟͷ Web API ͕Ͱ͖Δ API ͔Γ͘͢ͳͯ͘ͳΒͳ͍ HTTP ϝιου, ύε… ܗࣜͷ౷Ұ
=> RESTful API API ΠϯλʔϑΣΠεͷ౷Ұ
ن͕େ͖͘ͳΔͱɺαʔόʔɾΫϥΠΞϯτͰ࣮ऀ͕ มΘΔ͜ͱ͕ଟ͍ REST ʹͬͯڞ༗ࣄ߲ґવଟ͍ ύϥϝʔλʔ, Ϩεϙϯεͷܗࣜ… ϓϩάϥϚϒϧͳυΩϡϝϯτԽ, ڞ௨Խͷҝʹɺ JSON Hyper-Schema
 Open API API ͷόʔδϣχϯά αʔόʔͱΫϥΠΞϯτͰଉΛ߹ΘͤΔ
ৗʹෆਖ਼νʔτʹૂΘΕΔ ྫ͑ɺΫϥΠΞϯτͰͷॲ ཧ݁ՌΛվมͯ͠ɺͦΕΛαʔ όʔʹ͛ͤ͞Δ αʔόʔͱΫϥΠΞϯτͷॲཧͷڥք
αʔόʔɺجຊతʹΫϥΠΞϯτ͔ΒͷϦΫΤετ৴༻ͯ͠ ͳΒͳ͍ ௨৴ͷ҉߸Խ ৗʹɺ͓͔͘͠ͳ͍͔֬ೝ͢Δ ॏཁͳॲཧඞͣαʔόʔͰ࣮ߦ ྫ: Ψνϟͷநબ ݕ͘͠ʹ͍͘ͷͰɺ໌Β͔ʹո͚͠ΕӡӦʹ௨ => BAN
αʔόʔͱΫϥΠΞϯτͷॲཧͷڥք
ʮಈ͘ʯ͚ͩͰͳ͘ʮޙͷ͜ͱߟ ্ྀͨ͠Ͱಈ͘ʯ ͱΓ͋͑ͣಈ͚ͩ͘ͳΒ͙͕ͩ͢… ଟ͘ͷϢʔβʔΛࢧ͑ΒΕΔ͜ͱ ޙͷӡ༻͕Γ͍͢͜ͱ αʔόʔʹٻΊΒΕΔ͜ͱ
ଟ͘ͷϢʔβʔΛࢧ͑ΒΕΔ͜ͱ ෛՙରࡦ ΫΤϦվળ DB ׂ Ωϟογϡ ͳͲͳͲ ڊେͳσʔλɺϩάͷཧ αʔόʔʹٻΊΒΕΔ͜ͱ
ޙͷӡ༻͕Γ͍͢͜ͱ ઃܭίʔυ͕͔Γ͍͢ɺ৮Γ͍͢ ϚελʔσʔλͷՃमਖ਼ͷ࡞ۀ͕؆୯ ϢʔβʔσʔλΛݟ͘͢ཧը໘ʹ දࣔ͠ɺϢʔβʔαϙʔτͷޮԽ αʔόʔʹٻΊΒΕΔ͜ͱ
αʔόʔσʔλͷΛ͞Βͬͱͨ͠ ΤϯδχΞϦϯάͷੈք͘ਂ͘ɺͦͯ͠໘ന͍ ͏ͪʹɺͦͦ͜͜ͷنͷαʔϏε͕͍ͭ͋͘Δ ৽͍͠ͷ૿͍͑ͯΔ ൺֱతͷ͋Δʮ͍͍ࣄʯͷػձಘ͍͢ => ܦݧΛஷΊ͍͢ڥͩͱࢥ͏ కΊ
͓·͚: ϝοηʔδ ͦͷҝʹ… ৫ͰΤϯδχΞͱͯ͠ࣄΛ͢ Δͱ͍͏͜ͱɺ༷ʑͳೳྗͷ૯ ྗઓɻ ͦͷதͷʮٕज़ྗʯΛຏ͘ͱ͍͏ ʹ͓͍ͯɺࢲ͕େͩͱࢥͬͨ ͜ͱΛհ͓ͯ͘͠ɻ
࣮ݱͤ͞Δ͜ͱ ࣗͷཧΛ࣋ͭ͜ͱɺ ͦ͜Λࢦཱ͔ͯͪ͠͏͜ͱ ͓·͚: ϝοηʔδ ͦͷҝʹ…
ਅࣅͯͭ͘͠Δ => ࣗͰߟ͑ͯͭ͘Δ ษڧΛ͢Δɺ͚ͭͮ͠Δؾ࣋ͪ ΞϯςφΛுΓɺʹΠϯσοΫεΛͭ͘Δ దͳϓϥΠυ ʮࣗͰΓΔʯͱʮཔΔʯͷόϥϯε ͍͠… ͓·͚: ϝοηʔδ