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
Rails5 APIではじめるSPA開発
Search
hatappi
July 14, 2016
Technology
1
1.4k
Rails5 APIではじめるSPA開発
hatappi
July 14, 2016
Tweet
Share
More Decks by hatappi
See All by hatappi
Cloudflare を活用して変わったメルカリの開発体験 / How Cloudflare Changed Mercari's Development Experience
hatappi
1
740
RubyではじめるGraphQL
hatappi
0
900
RubyでChainerつくってます!!
hatappi
2
1.5k
TDDな個人開発
hatappi
0
340
できるだけ楽して楽しくRails開発しよう
hatappi
2
350
EKSにRailsをのせた
hatappi
1
1.2k
RubyとApache Arrow
hatappi
0
2.5k
Red Chainerを なぜ作って今後どうするのか
hatappi
2
2.4k
Fargateで夢は見られるのか
hatappi
1
2.3k
Other Decks in Technology
See All in Technology
[CV勉強会@関東 World Model 読み会] Orbis: Overcoming Challenges of Long-Horizon Prediction in Driving World Models (Mousakhan+, NeurIPS 2025)
abemii
0
140
広告の効果検証を題材にした因果推論の精度検証について
zozotech
PRO
0
190
ファインディの横断SREがTakumi byGMOと取り組む、セキュリティと開発スピードの両立
rvirus0817
1
1.5k
AIエージェントを開発しよう!-AgentCore活用の勘所-
yukiogawa
0
170
2026年、サーバーレスの現在地 -「制約と戦う技術」から「当たり前の実行基盤」へ- /serverless2026
slsops
2
260
Context Engineeringが企業で不可欠になる理由
hirosatogamo
PRO
3
620
SREが向き合う大規模リアーキテクチャ 〜信頼性とアジリティの両立〜
zepprix
0
460
予期せぬコストの急増を障害のように扱う――「コスト版ポストモーテム」の導入とその後の改善
muziyoshiz
1
2k
ランサムウェア対策としてのpnpm導入のススメ
ishikawa_satoru
0
190
【Ubie】AIを活用した広告アセット「爆速」生成事例 | AI_Ops_Community_Vol.2
yoshiki_0316
1
110
プロポーザルに込める段取り八分
shoheimitani
1
470
M&A 後の統合をどう進めるか ─ ナレッジワーク × Poetics が実践した組織とシステムの融合
kworkdev
PRO
1
480
Featured
See All Featured
First, design no harm
axbom
PRO
2
1.1k
Navigating Weather and Climate Data
rabernat
0
110
Tell your own story through comics
letsgokoyo
1
810
RailsConf 2023
tenderlove
30
1.3k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
230
Raft: Consensus for Rubyists
vanstee
141
7.3k
How to Ace a Technical Interview
jacobian
281
24k
GraphQLの誤解/rethinking-graphql
sonatard
74
11k
ラッコキーワード サービス紹介資料
rakko
1
2.3M
Being A Developer After 40
akosma
91
590k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.4k
Discover your Explorer Soul
emna__ayadi
2
1.1k
Transcript
Rails5Ͱߦ͏SPA։ൃ Roppongi.rb #1
ࣗݾհ —໊લ : ാத༔࡞ —Twitter : @hatappi —ձࣾ : גࣜձࣾSpeee
—৬ : ίʔώʔ
None
SPAͱʁ
SinglePageApplicaton ӳޠͦͷ··Ͱ୯ҰϖʔδͰߏ͞ΕͨΞϓϦέʔγϣ ϯ ࠷ॳϖʔδશମΛಡΈࠐΜͩޙjavascriptͰඞཁͳ෦ Λߋ৽͍ͯ͘͠ σʔλ࿈ܞAjaxWebSocketʹͯߦ͏
Πϯϑϥߏ
None
GCP (GoogleCloudPlatform) —CDNΛ͏ࡍʹAWSͩͱ S3+CloudFront GCPͰStorageʹΞοϓϩʔ υͯ͠ACLͷઃఆΛมߋ͢Ε ެ։Ͱ͖Δ —੩తwebαΠτΛϗεςΟϯά Ͱ͖ΔͷͰαʔόʔϨεӡ༻͕ Մೳ!
Angular2 Googleͷ։ൃ͢ΔJavascriptͷϑ ϨʔϜϫʔΫ ݱঢ়rc4 React͕ViewͷίϯϙʔωϯτΛ ఏڙ͢Δͷʹରͯ͠MVCΛఏڙ͢ ΔϑϧελοΫͳϑϨʔϜϫʔΫ
Rails5ͷ ࠓͷϝΠϯ RubyͷwebΞϓϦέʔγϣϯɾϑ ϨʔϜϫʔΫ 7/1ʹrc͕ͱΕ͍ͯͭʹ5͕ϦϦʔ ε!
None
Rails5Ͱͷมߋ —Action Cable —rakeλεΫΛrailsͰ࣮ߦ —turbolinks5 —sprockets3 —rails api
Rails5Ͱͷมߋ —Action Cable —rakeλεΫΛrailsͰ࣮ߦ —turbolinks5 —sprockets3 —rails api <- ࠓ͜͜
Rails API ݩʑgemͩͬͨrails-api͕RailsʹϚʔδ͞Εͨ —helperassets, views͕ͬͦ͝Γফ͑ͯΔ —cookieͱ͔session storeͷఆٛͳ͍ —config͔Βassetؔ࿈ͷͷ͕ͳ͘ͳ͍ͬͯΔ
γϯϓϧ!
Rails apiͷͱ͖ʹ͋ͨͬͨ՝ —view͕΄͘͠ͳͬͨΒ —CORS —Ϣʔβʔೝূ
Rails apiͷͱ͖ʹ͋ͨͬͨ՝ —view͕΄͘͠ͳͬͨΒ —CORS —Ϣʔβʔೝূ
ͬͺΓView͕΄͍͠ɾɾ
Viewޙ͔ΒͰՃͰ͖Δ ඞཁͳmiddlewareΛՃͯ͋͛͠ΕݩͷඇAPIͷ Railsʹ͢Δ͜ͱग़དྷΔɻ ٯʹAPIʹ͢Δͷ͋ΔͷΛআ͍͔ͯ͠ͳ͍ͱ͍͚ ͳ͍ͷͰ݁ߏେม!
Rails apiͷͱ͖ʹ͋ͨͬͨ՝ —view͕΄͘͠ͳͬͨΒ —CORS —Ϣʔβʔೝূ
CORSͱ?
CORS (Cross-Origin Resource Sharing) SameOriginPolicyʹΑΓXHRͱ͔ Ͱࠓ͍ΔαΠτͱผͷαΠτ͔Β σʔλΛಡΈࠐΉͱΤϥʔʹͳ Δɻ ͦΕΛڐՄ͞ΕͨαΠτʹରͯ͠ OriginΛ͑ͯ͜ΞΫηε͑͞Δ
Έ
rack-cors (https://github.com/cyu/rack-cors) originsͰڐՄ͢ΔϗετΛઃఆ '*'͍͚Δ͚Ͳຊ൪ʹө͢Δͱ͖ҙ Rails.application.config.middleware.insert_before 0, Rack::Cors do allow do
origins 'roppongirb.com' resource '*', headers: :any, methods: [:get, :post, :put, :patch, :delete, :options, :head] end end
Rails apiͷͱ͖ʹ͋ͨͬͨ՝ —view͕΄͘͠ͳͬͨΒ —CORS —Ϣʔβʔೝূ
RailsApiͰcookie session͕ͦͬ͝ͱͳ͘ͳͬ ͯΔ!
cookieͰͳ͘tokenͰ ཧͩ❗❗
None
ೝূॲཧࣗମ GoogleOAuth2 Ͱߦ͍ͦͷޙτ ʔΫϯΛੜ
googleΛΘͣશ෦ࣗલͰߦ͏ͧͬͯํ —devise_token_auth deviseΛͬͯRailsͰTokenBasedͷೝূΛߦ͏ ͷ —doorkeeper RailsͰOAuth2ͷϓϩύΠμʔΛ͏ͨΊͷͷ
·ͱΊ
·ͱΊ —SPAා͘ͳ͍ —API modeʹͯ͠࠷ѱͤΔͷͰνϟϯϨϯδͯ͠ Έͯྑ͍͔ —turbolinksɺsprockets, coffeescriptͱ͍͏ݴ༿ʹർ Εͯ͠·ͬͨΒݕ౼ͯ͠ྑ͍͔