Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Laravel + Lighthouseで始める低コストなGraphQL入門

akkino/D-En
December 12, 2020

Laravel + Lighthouseで始める低コストなGraphQL入門

PHP Conference Japan 2020 Re:born
https://phpcon.php.gr.jp/2020/
#phpcon #phpcon2020 #track4

Session Abstract
https://fortee.jp/phpcon-2020/proposal/cfc59cee-8ab9-4b2b-9e42-002ae5b84023

akkino/D-En

December 12, 2020
Tweet

More Decks by akkino/D-En

Other Decks in Technology

Transcript

  1. SDL First ▹ SDL = Schema Definition Language ■ →

    スキーマ定義言語 ■ 拡張子: .graphql ▹ Directiveで簡単に実装 ■ スキーマに追記することで様々な機能が追加可能 ■ コードすら書かなくていい場合もある 30
  2. 36 Route REST Global Middleware Middleware schema Resolver Model /graphql

    /others Lighthouse Directive ・CRUD ・Validation ・Authentication ...etc @method
  3. 37 Route REST Global Middleware Middleware schema Resolver Model /graphql

    /others Lighthouse Directive ・CRUD ・Validation ・Authentication ...etc @method 実質RouteとControllerの役割 全体構造はMVCと大差ない
  4. SDL First GraphQLのスキーマファースト Optimized for Eloquent 既存のEloquentモデルを活用し、 最適化されたデータベースクエリをすぐに作成可能 Laravel Friendly

    Laravelの上にGraphQLサーバーを構築するため、 使い慣れた概念や機能を利用可能 42 Step 2. Summery Lighthouseの特徴
  5. Query 読み込み系 ▹ users: 複数取得 ▹ user: 単体取得 46 users

    list取得(ペジネーション付き) user get取得(ID指定可能)
  6. 58 Route REST Global Middleware Middleware schema Resolver Model /graphql

    /others Lighthouse Directive ・CRUD ・Validation ・Authentication ...etc @method
  7. 59 Route REST Global Middleware Middleware schema Resolver Model /graphql

    /others Lighthouse Directive ・CRUD ・Validation ・Authentication ...etc @method ビジネスロジックの置き場所
  8. できる限りDirectiveを使う Directiveも馴染みのあるものばかり ▹ @all, @find ▹ @create, @update, @upsert, @delete

    ▹ @where, @whereBetween ▹ @hasMany, @belongsToMany ▹ @ordarBy ▹ @with ...and more 66
  9. 77 GraphQL Client ▹ 初めてGraphQL触る人におすすめ ■ Altair GraphQL Client ▹

    使い慣れたツールで ■ Insomnia REST Client ■ POSTMAN ▹ あまりおすすめはしない ■ GraphQL Playground
  10. Object & Query 84 User Post Comment Object Relation Query

    (Mutation) posts user comments post user comments request client
  11. Object & Query 85 User Post Comment Object Relation Query

    (Mutation) posts user comments post user comments request client RDSと考え方は一緒 クライアント向けのDB設計
  12. 90 Design pattern User Post Comment client どんなjoinを許可する か どんなクエリを許可する

    か クライアントに対して どんなJoin、どんなクエリを許可するか ▹ 同じデータは同じところから取得する (正規化) ▹ どんなクエリを叩くかはクライアント次第 Query 90
  13. 91 Design pattern User Post Comment client どんなjoinを許可する か どんなクエリを許可する

    か クライアントに対して どんなJoin、どんなクエリを許可するか ▹ 同じデータは同じところから取得する (正規化) ▹ どんなクエリを叩くかはクライアント次第 Query 91 クライアント向けのRDB設計 インターフェースがAPIなだけ