Submit Search
Upload
RESTからGraphQL APIへの移行で学んだこと.pptx
•
Download as PPTX, PDF
•
0 likes
•
48 views
Y
Yuya55
Follow
めぐろLT会#4にて発表させていただきました。 https://meguro-lt.connpass.com/event/286892/
Read less
Read more
Engineering
Report
Share
Report
Share
1 of 12
Download now
Recommended
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
DIVE INTO CODE Corp.
``完璧に理解した``WEB の裏側の仕組み.pptx
``完璧に理解した``WEB の裏側の仕組み.pptx
Ryo Higashigawa
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
DIVE INTO CODE Corp.
何でRuby
何でRuby
Ngoc Dao
React way at_eight
React way at_eight
Hideharu Okuma
2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション
2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション
Takahiro Okumura
2015 07-04-ruby rails
2015 07-04-ruby rails
Hiroshi Oyamada
PHP開発者がScalaに入門して苦しんだ話
PHP開発者がScalaに入門して苦しんだ話
Nyle Inc.(ナイル株式会社)
Recommended
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
DIVE INTO CODE Corp.
``完璧に理解した``WEB の裏側の仕組み.pptx
``完璧に理解した``WEB の裏側の仕組み.pptx
Ryo Higashigawa
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
DIVE INTO CODE Corp.
何でRuby
何でRuby
Ngoc Dao
React way at_eight
React way at_eight
Hideharu Okuma
2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション
2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション
Takahiro Okumura
2015 07-04-ruby rails
2015 07-04-ruby rails
Hiroshi Oyamada
PHP開発者がScalaに入門して苦しんだ話
PHP開発者がScalaに入門して苦しんだ話
Nyle Inc.(ナイル株式会社)
【アジャイル道場】Rails勉強会(view編)
【アジャイル道場】Rails勉強会(view編)
Sosuke Kimura
Productive Organization with Ruby
Productive Organization with Ruby
Hiroshi SHIBATA
Rubyプログラミング教育に対する取り組みと事例紹介
Rubyプログラミング教育に対する取り組みと事例紹介
Yasushi Ishikawa
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜PR・継続できる目標の立て方・改善編 先生:増井 雄一郎
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜PR・継続できる目標の立て方・改善編 先生:増井 雄一郎
schoowebcampus
The First React on Rails
The First React on Rails
Kohei Ito
楽ちんユーザー認証付Spa
楽ちんユーザー認証付Spa
Takahiro Tsuchiya
2015 12-19-ruby rails
2015 12-19-ruby rails
Hiroshi Oyamada
WebAPI20230326.pdf
WebAPI20230326.pdf
RyoArakaki1
Rendr入門: サーバサイドで(も)動かす、Backbone.js
Rendr入門: サーバサイドで(も)動かす、Backbone.js
Masahiko Tachizono
Webエンジニアのサバイバル英会話
Webエンジニアのサバイバル英会話
Jumpei iwamura
ReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれから
ReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれから
Yusuke Murata
Web api beginners
Web api beginners
Hirohide Sano
Rails講座1
Rails講座1
義広 河野
Rubyによる開発プロジェクトをうまく回すには(1)
Rubyによる開発プロジェクトをうまく回すには(1)
Yasuko Ohba
レガシーすぎるRailsアプリを10倍高速化した組織的なカイゼン活動
レガシーすぎるRailsアプリを10倍高速化した組織的なカイゼン活動
Shingo Sasaki
20141003 webマーケティングエンジニアリング
20141003 webマーケティングエンジニアリング
Innova Inc.
Java クライント実装におけるAPIスタイル頂上決戦! 野良REST vs GraphQL vs OData vs OpenAPI (Swagger)
Java クライント実装におけるAPIスタイル頂上決戦! 野良REST vs GraphQL vs OData vs OpenAPI (Swagger)
Kazuya Sugimoto
GraphQLについての5分間
GraphQLについての5分間
Matsuo Obu
QCon2009 Tokyo - Ruby on Railsで変わるエンタープライズ開発の現場
QCon2009 Tokyo - Ruby on Railsで変わるエンタープライズ開発の現場
Yasuko Ohba
BEAR.Sunday@phpcon2012
BEAR.Sunday@phpcon2012
Akihito Koriyama
More Related Content
Similar to RESTからGraphQL APIへの移行で学んだこと.pptx
【アジャイル道場】Rails勉強会(view編)
【アジャイル道場】Rails勉強会(view編)
Sosuke Kimura
Productive Organization with Ruby
Productive Organization with Ruby
Hiroshi SHIBATA
Rubyプログラミング教育に対する取り組みと事例紹介
Rubyプログラミング教育に対する取り組みと事例紹介
Yasushi Ishikawa
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜PR・継続できる目標の立て方・改善編 先生:増井 雄一郎
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜PR・継続できる目標の立て方・改善編 先生:増井 雄一郎
schoowebcampus
The First React on Rails
The First React on Rails
Kohei Ito
楽ちんユーザー認証付Spa
楽ちんユーザー認証付Spa
Takahiro Tsuchiya
2015 12-19-ruby rails
2015 12-19-ruby rails
Hiroshi Oyamada
WebAPI20230326.pdf
WebAPI20230326.pdf
RyoArakaki1
Rendr入門: サーバサイドで(も)動かす、Backbone.js
Rendr入門: サーバサイドで(も)動かす、Backbone.js
Masahiko Tachizono
Webエンジニアのサバイバル英会話
Webエンジニアのサバイバル英会話
Jumpei iwamura
ReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれから
ReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれから
Yusuke Murata
Web api beginners
Web api beginners
Hirohide Sano
Rails講座1
Rails講座1
義広 河野
Rubyによる開発プロジェクトをうまく回すには(1)
Rubyによる開発プロジェクトをうまく回すには(1)
Yasuko Ohba
レガシーすぎるRailsアプリを10倍高速化した組織的なカイゼン活動
レガシーすぎるRailsアプリを10倍高速化した組織的なカイゼン活動
Shingo Sasaki
20141003 webマーケティングエンジニアリング
20141003 webマーケティングエンジニアリング
Innova Inc.
Java クライント実装におけるAPIスタイル頂上決戦! 野良REST vs GraphQL vs OData vs OpenAPI (Swagger)
Java クライント実装におけるAPIスタイル頂上決戦! 野良REST vs GraphQL vs OData vs OpenAPI (Swagger)
Kazuya Sugimoto
GraphQLについての5分間
GraphQLについての5分間
Matsuo Obu
QCon2009 Tokyo - Ruby on Railsで変わるエンタープライズ開発の現場
QCon2009 Tokyo - Ruby on Railsで変わるエンタープライズ開発の現場
Yasuko Ohba
BEAR.Sunday@phpcon2012
BEAR.Sunday@phpcon2012
Akihito Koriyama
Similar to RESTからGraphQL APIへの移行で学んだこと.pptx
(20)
【アジャイル道場】Rails勉強会(view編)
【アジャイル道場】Rails勉強会(view編)
Productive Organization with Ruby
Productive Organization with Ruby
Rubyプログラミング教育に対する取り組みと事例紹介
Rubyプログラミング教育に対する取り組みと事例紹介
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜PR・継続できる目標の立て方・改善編 先生:増井 雄一郎
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜PR・継続できる目標の立て方・改善編 先生:増井 雄一郎
The First React on Rails
The First React on Rails
楽ちんユーザー認証付Spa
楽ちんユーザー認証付Spa
2015 12-19-ruby rails
2015 12-19-ruby rails
WebAPI20230326.pdf
WebAPI20230326.pdf
Rendr入門: サーバサイドで(も)動かす、Backbone.js
Rendr入門: サーバサイドで(も)動かす、Backbone.js
Webエンジニアのサバイバル英会話
Webエンジニアのサバイバル英会話
ReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれから
ReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれから
Web api beginners
Web api beginners
Rails講座1
Rails講座1
Rubyによる開発プロジェクトをうまく回すには(1)
Rubyによる開発プロジェクトをうまく回すには(1)
レガシーすぎるRailsアプリを10倍高速化した組織的なカイゼン活動
レガシーすぎるRailsアプリを10倍高速化した組織的なカイゼン活動
20141003 webマーケティングエンジニアリング
20141003 webマーケティングエンジニアリング
Java クライント実装におけるAPIスタイル頂上決戦! 野良REST vs GraphQL vs OData vs OpenAPI (Swagger)
Java クライント実装におけるAPIスタイル頂上決戦! 野良REST vs GraphQL vs OData vs OpenAPI (Swagger)
GraphQLについての5分間
GraphQLについての5分間
QCon2009 Tokyo - Ruby on Railsで変わるエンタープライズ開発の現場
QCon2009 Tokyo - Ruby on Railsで変わるエンタープライズ開発の現場
BEAR.Sunday@phpcon2012
BEAR.Sunday@phpcon2012
RESTからGraphQL APIへの移行で学んだこと.pptx
1.
RESTからGraphQL API への移行で学んだこと @inoway46
2.
自己紹介 ・GMOペパボにて主にRailsでECアプリの開発をしてます Twitter: @inoway46 ・Web広告の営業から1年半前にWebエンジニアになりました ・最近は英会話をがんばってます ・麻雀が特技です
3.
技術スタック(簡易版) サーバーサイド ・Rails 7.0、Ruby 3.1、graphql-ruby クライアントサイド ・Web
-> Next.js(一部はRailsのview) ・Android ・iOS
4.
なぜGraphQLに移行したのか iOS、Android、Next.jsで使用するAPIを共通化し、 開発効率を高めたい
5.
GraphQLの利点 ・オーバーフェッチ、アンダーフェッチを防げる ・1回のリクエストで必要なデータを取ってこれる ・リクエスト数が少なくなるので、アプリのパフォーマンスがよくなる GraphQLの開発秘話:https://youtu.be/783ccP__No8
6.
GraphQLのキャッチアップ - はじめてのGraphQLを読む - zennのチュートリアルなどで書いてみる -
他社事例を学ぶ - メルカリ社、ZOZO社 - 既存コードを読む - graphiqlで既存のクエリを叩いてみる - 後は開発する中で理解していく https://www.oreilly.co.jp/books/9784873118932/
7.
学びになったこと 1. 型の定義が重要 2. セキュリティの観点 3.
クライアントサイドとの調整
8.
1. 型の定義が重要 - 命名を間違えると後々面倒なことになる -
もし間違えていたら、@deprecatedディレクティブを 生やした上で、新規追加する
9.
2. セキュリティの観点 1. 直接型を参照されてしまわないように、self.authorized?を設定する https://graphql-ruby.org/authorization/authorization 1.
型定義を循環させる(再帰的に解決できるスキーマが存在する)と意図的にネストを深くしたクエリ をリクエストされDos攻撃されるリスクがある https://github.com/WebAppPentestGuidelines/graphQLGuideLine/blob/master/docs/specific/dos.md 1. viewerパターンを採用し、個人情報の不正取得を防ぐ current_userを起点に各情報を取ってくるようにする。 self.authorized?で対象オブジェクトがcurrent_userのものでなければ認可エラーを返す
10.
3. クライアントサイドとの調整 - 現状のUIと整合性のある形でmutationを定義しないと、自然な形で リクエストが送れない -
ex. 親リソースと子リソースを同じ編集画面で操作する場合、子 リソースの削除mutationだけ分離すると、違和感のある動きになっ てしまうことがあった
11.
その他、実装で難しかった点 ・ページネーションの書き方が独特 ・既存のAPI仕様を理解した上で、壊さないようにしないといけない ・graphiqlの扱いに最初慣れなかった ・RSpec(テスト)でテストデータを準備するやり方 ・例外処理 参照: ZOZO社の事例
12.
以上です!ありがとうございました!
Download now