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
680
RubyではじめるGraphQL
hatappi
0
870
RubyでChainerつくってます!!
hatappi
2
1.4k
TDDな個人開発
hatappi
0
320
できるだけ楽して楽しくRails開発しよう
hatappi
2
340
EKSにRailsをのせた
hatappi
1
1.2k
RubyとApache Arrow
hatappi
0
2.4k
Red Chainerを なぜ作って今後どうするのか
hatappi
2
2.4k
Fargateで夢は見られるのか
hatappi
1
2.2k
Other Decks in Technology
See All in Technology
職種別ミートアップで社内から盛り上げる アウトプット文化の醸成と関係強化/ #DevRelKaigi
nishiuma
2
160
OpenAI gpt-oss ファインチューニング入門
kmotohas
2
1.2k
これがLambdaレス時代のChatOpsだ!実例で学ぶAmazon Q Developerカスタムアクション活用法
iwamot
PRO
6
960
定期的な価値提供だけじゃない、スクラムが導くチームの共創化 / 20251004 Naoki Takahashi
shift_evolve
PRO
4
360
LLMアプリの地上戦開発計画と運用実践 / 2025.10.15 GPU UNITE 2025
smiyawaki0820
1
410
防災デジタル分野での官民共創の取り組み (2)DIT/CCとD-CERTについて
ditccsugii
0
200
SwiftUIのGeometryReaderとScrollViewを基礎から応用まで学び直す:設計と活用事例
fumiyasac0921
0
160
[Keynote] What do you need to know about DevEx in 2025
salaboy
0
160
2025-10-09_プロジェクトマネージャーAIチャンス
taukami
0
120
Shirankedo NOCで見えてきたeduroam/OpenRoaming運用ノウハウと課題 - BAKUCHIKU BANBAN #2
marokiki
0
180
大規模サーバーレスAPIの堅牢性・信頼性設計 〜AWSのベストプラクティスから始まる現実的制約との向き合い方〜
maimyyym
6
4.2k
カンファレンスに託児サポートがあるということ / Having Childcare Support at Conferences
nobu09
1
530
Featured
See All Featured
Thoughts on Productivity
jonyablonski
70
4.9k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
Speed Design
sergeychernyshev
32
1.2k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
45
2.5k
Mobile First: as difficult as doing things right
swwweet
224
10k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
15k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
127
53k
Being A Developer After 40
akosma
91
590k
For a Future-Friendly Web
brad_frost
180
9.9k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
How to Ace a Technical Interview
jacobian
280
24k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
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ͱ͍͏ݴ༿ʹർ Εͯ͠·ͬͨΒݕ౼ͯ͠ྑ͍͔