#author("2023-03-07T09:01:37+00:00","default:admin","admin")
-[[GraphQLの全体像とWebApp開発のこれから:https://qiita.com/saboyutaka/items/171f7382cdf75b67d076]]
-[[GraphQLが大注目のグラフAPIとは? 「REST API時代終了」後に注目すべきAPIの新潮流:https://www.sbbit.jp/article/cont1/93872]]

-[[【技術選定の裏側:GraphQL編 vol.1】読書ログ:https://zenn.dev/gunners6518/scraps/6ca2872c486196]]
-[[GraphQL と Prisma から考える次のN年を見据えた技術選定:https://speakerdeck.com/qsona/architecture-decision-for-the-next-n-years-at-studysapuri]]
-[[仕事でバックエンド開発するときに考えていること: 実践編:https://techblog.cartaholdings.co.jp/entry/2022/10/20/100730]]

-[[API設計が楽でコア業務に集中できるように。GraphQLで開発がどう変わったか?タクシーアプリGOの中の人に聞きました【技術選定の裏側:GraphQL編 vol.1】:https://findy-code.io/pick-up/interviews/mobilitytechnologies-engineer]]
-[[NestJSでスケーラブルなBFFを構築。メルカリShopsエンジニアがGraphQL活用のリアルを語る【技術選定の裏側:GraphQL編 vol.2】:https://findy-code.io/pick-up/interviews/souzoh-engineer]]
-[[GraphQLはなぜ開発体験が良いのか?モノづくり産業のDXに挑戦しているキャディに聞きました【技術選定の裏側:GraphQL編 vol.3】:http://52.198.134.176/2022/03/14/graphql%E3%81%AF%E3%81%AA%E3%81%9C%E9%96%8B%E7%99%BA%E4%BD%93%E9%A8%93%E3%81%8C%E8%89%AF%E3%81%84%E3%81%AE%E3%81%8B%EF%BC%9F%E3%83%A2%E3%83%8E%E3%81%A5%E3%81%8F%E3%82%8A%E7%94%A3%E6%A5%AD%E3%81%AEdx/]]

-[[Gaudiyの技術スタックと選定における思想:https://techblog.gaudiy.com/entry/2021/09/18/000711]]
-[[GraphQLのアプリケーションへの組み込みを考える:https://tech-blog.rakus.co.jp/entry/20210323/graphql]]

-[[データ指向アプリケーションデザインから見るGraphQL:https://zenn.dev/saboyutaka/articles/680542da534de5]]
-[[GraphQLでバックエンドのコードをすっきりさせた話:https://tech.layerx.co.jp/entry/2021/04/12/121427]]

-[[「GraphQL」徹底入門 ─ RESTとの比較、API・フロント双方の実装から学ぶ:https://eh-career.com/engineerhub/entry/2018/12/26/103000]]
-[[GraphQL入門 - 使いたくなるGraphQL:https://qiita.com/bananaumai/items/3eb77a67102f53e8a1ad]]
-[[アプリ開発の流れを変える「GraphQL」はRESTとどう違うのか比較してみた:https://www.webprofessional.jp/rest-2-0-graphql/]]
-[[GraphQLは何に向いているか:https://k0kubun.hatenablog.com/entry/graphql]]
-[[初心者目線で分かりやすく解くGraphQLを解説!~同じWebAPIのRESTとの違いは?~:https://vitalify.jp/app-lab/20171006-graphql/]]
-[[GraphQL を使うと何が嬉しいのか?いろいろ触って検証してみた:https://sitest.jp/blog/?p=11001]]

-[[NetflixがGraphQLフェデレーションを使用してAPIをスケーリングする方法(パート1):https://ichi.pro/netflix-ga-graphql-fyedere-shon-o-shiyoshite-api-o-suke-ringu-suru-hoho-pa-to-1-191544128800738]]

-[[作って学ぶGraphQL。gqlgenを用いて鉄道データ検索API開発入門:https://future-architect.github.io/articles/20200609/]]
-[[GraphQL Guildのエコシステムって便利だね:https://silverbirder.net/entry/2022/10/15/000000]]

*概要 [#ibfbdf76]
-クエリ言語を記述することで、クライアント側が欲しいリソースとその形式を宣言できる
-単一のエンドポイントおよびリクエストで複数のリソースを取得できる
-型定義やクライアント実装の自動生成、クエリを試しに発行できるクライアントGUI機能、クエリ補完機能などといった開発体験の向上

*オススメ資料 [#l5ff3075]
-[[Gaudiyのプロダクト戦略とGraphQLの活用:https://techblog.gaudiy.com/entry/2021/10/20/121501]]
--[[GraphQLスキーマ設計ガイド 第2版:https://booth.pm/ja/items/1576562]]
--[[宣言的UIの状態管理とアーキテクチャSwiftUIとGraphQLによる実践:https://speakerdeck.com/sonatard/swiftui-graphql]]
--[[GraphQLが解決する問題とその先のユースケース:https://zenn.dev/saboyutaka/articles/07f1351a6b0049]]
--[[GraphQL を利用したアーキテクチャの勘所:https://speakerdeck.com/qsona/architecture-practices-with-graphql]]

-[[GraphQL ベストプラクティス:https://maku.blog/p/4reqy9i/]]

-[[これを読めばGraphQL全体がわかる。GraphQLサーバからDB、フロントエンド構築:https://reffect.co.jp/html/graphql]]

*API設計 [#o453cf5e]
-[[GraphQL API の設計:https://docs.aws.amazon.com/ja_jp/appsync/latest/devguide/designing-a-graphql-api.html]]

*マイクロサービス [#l598e7cb]
-[[Schema Stitching と Apollo Federation の比較:https://zenn.dev/yuta_ura/articles/compare-schema-stitching-and-apollo-federation]]

*TypeScript/JavaScript [#y5f31413]
**Apollo Client [#l2b7933e]
-[[Apollo Client のキャッシュの仕組みとローカルの状態管理について:https://tech.buysell-technologies.com/entry/2021/08/25/133925]]

**[[URQL:https://formidable.com/open-source/urql/]] [#ua6a72b3]
-[[GraphQLクライアントにurqlをおすすめしたい:https://zenn.dev/adwd/articles/f4c5c5120467bb]]
-[[GraphQLライブラリをApollo→Relay→Urqlにハシゴした話:https://nulab.com/ja/blog/nulab/graphql-apollo-relay-urql/]]

***Svelte [#jea29d54]
-[[Svelte Bindings:https://formidable.com/open-source/urql/docs/basics/svelte/]]
-[[How to build a book review app with Svelte, urql and Dgraph Cloud:https://dgraph.io/blog/post/build-a-svelte-urql-app-with-slash-graphql/]]

**Relay [#rba77370]

*Go [#ba0ca023]
**gqlgen [#o0c550af]
-[[API設計が楽でコア業務に集中できるように。GraphQLで開発がどう変わったか?タクシーアプリGOの中の人に聞きました【技術選定の裏側:GraphQL編 vol.1】:https://findy-code.io/pick-up/interviews/mobilitytechnologies-engineer]]

*PHP [#sd5b85e0]
-[[PHPで使えるGraphQLライブラリの使い勝手あれこれ:https://zenn.dev/haradakunihiko/articles/82114148bd3c4e]]
-[[LaravelでGraphQLを使うために学んだメモ:https://zenn.dev/yum3/articles/t_search_laravel_graphql]]

*[[Apollo GraphQL:https://www.apollographql.com/]] [#f25a9fbc]
-[[Next.js + NestJS + GraphQLで変化に追従するフロントエンドへ 〜 ショッピングクーポンの事例紹介:https://techblog.yahoo.co.jp/entry/2020121530052952/]]

-[[Apollo なら爆速で GraphQL サーバーと GraphQL クライアントアプリが作れる:https://qiita.com/jintz/items/4ddc6bf4f95238eff5e9]]
-[[Apolloでの綺麗なAPI実装(GraphQL)を試す:https://qiita.com/teradonburi/items/2ad98c7c21f1f6cc4390]]
-[[[GraphQL] TypeScript+VSCode+Apolloで最高のDXを手に入れよう:https://dev.classmethod.jp/articles/apollo-good-dx/]]
-[[GraphQL入門 - React.js & Express.js & Apollo の簡単チュートリアル:https://www.m3tech.blog/entry/graphql-apollo-react-express-nodejs]]
-[[GraphQL 採用における反省と Apollo Server の運用について:https://ceblog.mediba.jp/post/638171980263194625/graphql-and-apollo-server]]

*Hasura [#e3733e45]
-[[UX改善に集中できるように、GraphQLを中心としたシステム構成をObremoで採用した話:https://cocoda.design/namedpython/p/pe5050b2f6e12]]

*AWS [#k7230112]
-[[AWSでGraphQLサーバーをたてるときの選択肢を比較:https://zenn.dev/eringiv3/scraps/4774ea6608cac1]]

-[[AWSにおけるAPI開発にてGraphQL(AppSync)とREST API(API Gateway) を選定する際のメリットとデメリット:https://serverless.co.jp/blog/324/]]
-[[AWS AppSync(GraphQL)を用いたバックエンドの構築事例:https://fintan.jp/page/343/]]
-[[AWS AppSync選定を悩んでいる方必見!GraphqlエキスパートがAppSync導入をいろんな角度からまとめました:https://www.ragate.co.jp/blog/articles/12064]]
-[[AppSync VS APIGateway 両者の違いをスタートアップCTOが本気で考えてみた!:https://www.ragate.co.jp/blog/articles/245]]

-[[AppSyncでGraphQLへの入門が「easy」になる(前編):https://xp-cloud.jp/blog/2020/06/01/7159/]]
-[[AppSyncでGraphQLへの入門が「easy」になる(後編):https://xp-cloud.jp/blog/2020/09/30/7642/]]

-[[AmplifyとGraphQLではじめるサーバレスWebアプリのチーム開発体験記:https://qiita.com/yamayoshii/items/10ddce9e443c4ab12f51]]

*フロントエンド [#a6b81846]
**Vue [#wf6ad2da]
-[[【爆速】Vite+Vuejs+Amplify+AppSync(GraphQL)でリアルタイム掲示板作成+つまづいたところ:https://qiita.com/Nerosui777/items/f93b07fb69fd31efa39b]]

*バックエンド [#t65bc680]
-[[Prismaを使ってサクッとGraphQLのバックエンドを作成する!:https://labs.septeni.co.jp/entry/2021/03/25/180000]]

*セキュリティ [#i369c341]
-[[GraphQL診断ガイドライン:https://github.com/WebAppPentestGuidelines/graphQLGuideLine]]

-[[GraphQLの入門情報とセキュリティ観点で気をつけたいこと:https://blog.kapiecii.com/posts/2021/11/28/graphql101-and-securitytest/]]
-[[GraphQLを導入する時に考えておいたほうが良いこと:https://engineering.mercari.com/blog/entry/20220303-concerns-with-using-graphql/]]

**リスク [#g10cfa06]
-[[GraphQL API を悪意あるクエリから守る手法:https://yigarashi.hatenablog.com/entry/graphql-query-analysis]]

***[[GraphQLによるDoS攻撃:https://github.com/WebAppPentestGuidelines/graphQLGuideLine/blob/master/docs/specific/dos.md]] [#y0c597f5]
-データを大量に取得するクエリ
-重い計算をさせるクエリ
-大量にDBアクセスを発生させるクエリ

***[[レースコンディション:https://github.com/WebAppPentestGuidelines/graphQLGuideLine/blob/master/docs/specific/race_condition.md]] [#lcea3ef9]

**対策 [#n1b1e6d8]
***ホワイトリストによる制限 [#ld68101b]
-GraphQL API が受け付けるクエリ一覧をホワイトリストとして持っておいて、クライアントから送られてきたクエリがそれに一致する場合のみ実行するやり方

***クエリのコスト制限 [#ic73adca]
-Query depth

-Query complexity

-Query rate limit

***Introspection query [#qd75962f]
-本番ではOFF

***Field suggestion [#d536d04e]
-本番ではOFF

***スタックトレース [#qcd4b019]
-本番ではOFF

**事例 [#d63afc96]
-[[GraphQL採用サービスで任意カラムを取得できる脆弱性を見つけた話:https://zenn.dev/mipsparc/articles/a818970a19ade6]]

**診断サービス [#u14b800a]
-[[GraphQL APIを持つWebアプリケーションに対するセキュリティ診断:https://flatt.tech/assessment/graphql/]]

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS