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
64
サーバーとは。(あとゲーム) / server
学生さん向け資料。
misoobu
September 13, 2016
Tweet
Share
More Decks by misoobu
See All by misoobu
論理削除と、そこでのElasticsearch活用 | 論理削除 Casual Talks #1 / soft_delete
misoobu
9
19k
平和なエンジニア生活を送りたい
misoobu
0
770
Other Decks in Technology
See All in Technology
Cloud Native Java with Spring Boot (CNCF Aarhus, April 2024)
thomasvitale
1
170
Reducing Cross-Zone Egress at Spotify with Custom gRPC Load Balancing Recap
koh_naga
0
200
Python と Snowflake はズッ友だょ!~ Snowflake の Python 関連機能をふりかえる ~
__allllllllez__
1
120
非同期推論システムによるコスト削減と信頼性向上
koki_nishihara
0
250
開発生産性大幅アップ!Postman VS Code拡張機能
nagix
2
370
Google Cloud Next '24 Recap(Cloud Run/k8s)
mokocm
0
170
レガシーをぶっ壊せ。AEONで始めるDevRelの話 / Qiita Night 2024-2-22
aeonpeople
3
1.3k
GrafanaMeetup_AmazonManagedGrafanaのアクセス制御機能とマルチテナント環境下でのアクセス制御について
daitak
0
170
ゼロから始めるVue.jsコミュニティ貢献 / first-vuejs-community-contribution-link-and-motivation
lmi
1
120
どうするコスト最適化のトレードオフ
tetsuyaooooo
1
510
私が trocco を推す理由
__allllllllez__
1
220
家族アルバム みてねにおけるGrafana活用術 / Grafana Meetup Japan Vol.1 LT
isaoshimizu
1
670
Featured
See All Featured
Infographics Made Easy
chrislema
238
18k
How GitHub (no longer) Works
holman
304
140k
Product Roadmaps are Hard
iamctodd
44
9.7k
From Idea to $5000 a Month in 5 Months
shpigford
377
45k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
6
1.5k
Designing with Data
zakiwarfel
96
4.8k
GraphQLの誤解/rethinking-graphql
sonatard
50
9.2k
Music & Morning Musume
bryan
41
5.6k
How To Stay Up To Date on Web Technology
chriscoyier
782
250k
Designing on Purpose - Digital PM Summit 2013
jponch
110
6.5k
Debugging Ruby Performance
tmm1
70
11k
Atom: Resistance is Futile
akmur
259
25k
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 ׂ Ωϟογϡ ͳͲͳͲ ڊେͳσʔλɺϩάͷཧ αʔόʔʹٻΊΒΕΔ͜ͱ
ޙͷӡ༻͕Γ͍͢͜ͱ ઃܭίʔυ͕͔Γ͍͢ɺ৮Γ͍͢ ϚελʔσʔλͷՃमਖ਼ͷ࡞ۀ͕؆୯ ϢʔβʔσʔλΛݟ͘͢ཧը໘ʹ දࣔ͠ɺϢʔβʔαϙʔτͷޮԽ αʔόʔʹٻΊΒΕΔ͜ͱ
αʔόʔσʔλͷΛ͞Βͬͱͨ͠ ΤϯδχΞϦϯάͷੈք͘ਂ͘ɺͦͯ͠໘ന͍ ͏ͪʹɺͦͦ͜͜ͷنͷαʔϏε͕͍ͭ͋͘Δ ৽͍͠ͷ૿͍͑ͯΔ ൺֱతͷ͋Δʮ͍͍ࣄʯͷػձಘ͍͢ => ܦݧΛஷΊ͍͢ڥͩͱࢥ͏ కΊ
͓·͚: ϝοηʔδ ͦͷҝʹ… ৫ͰΤϯδχΞͱͯ͠ࣄΛ͢ Δͱ͍͏͜ͱɺ༷ʑͳೳྗͷ૯ ྗઓɻ ͦͷதͷʮٕज़ྗʯΛຏ͘ͱ͍͏ ʹ͓͍ͯɺࢲ͕େͩͱࢥͬͨ ͜ͱΛհ͓ͯ͘͠ɻ
࣮ݱͤ͞Δ͜ͱ ࣗͷཧΛ࣋ͭ͜ͱɺ ͦ͜Λࢦཱ͔ͯͪ͠͏͜ͱ ͓·͚: ϝοηʔδ ͦͷҝʹ…
ਅࣅͯͭ͘͠Δ => ࣗͰߟ͑ͯͭ͘Δ ษڧΛ͢Δɺ͚ͭͮ͠Δؾ࣋ͪ ΞϯςφΛுΓɺʹΠϯσοΫεΛͭ͘Δ దͳϓϥΠυ ʮࣗͰΓΔʯͱʮཔΔʯͷόϥϯε ͍͠… ͓·͚: ϝοηʔδ