Slide 1

Slide 1 text

GraphQLΛ׆༻͢ΔϥΠϒϥϦ&πʔϧ

Slide 2

Slide 2 text

πʔϧ

Slide 3

Slide 3 text

GraphQL Playground

Slide 4

Slide 4 text

GraphQL Playground ▸ GraphQLΛ࣮ߦ͢ΔΞϓϦ ▸ ϒϥ΢βͰಈ͘ ▸ όοΫΤϯυͷϥΠϒϥϦ ʹ૊Έࠐ·ΕͯΔ͜ͱ΋

Slide 5

Slide 5 text

Insomnia

Slide 6

Slide 6 text

Insomnia ▸ GraphQLΛ࣮ߦ͢ΔΞϓϦ(2) ▸ POSTMANͷGraphQL൛Έ͍ͨ ͳ΋ͷ ▸ POSTMAN΋ࠓGraphQLରԠ ͕βஈ֊ ▸ GraphQLͷIntrospectionʹରԠ ͓ͯ͠Γɺೖྗʹ༧ଌ͕ೖΔͨ Ίૢ࡞͠΍͍͢

Slide 7

Slide 7 text

ϥΠϒϥϦ

Slide 8

Slide 8 text

LightHouse

Slide 9

Slide 9 text

LightHouse ▸ LaravelϓϥάΠϯ ▸ ΈΜͳେ޷͖PHP ▸ GraphQLͷType͕EloquentͷϞσϧͱͳΔ ▸ @hasMany ΍ @belongToͷEloquentͷRelationShipΛ FieldͷDirectiveͱͯ͠࢖ ༻Ͱ͖Δ

Slide 10

Slide 10 text

ίʔυ LightHouse type User { id: ID! name: String! email: String posts: [Post!]! @hasMany } type Post { title: String! content: String! author: User @belongsTo } type Query { me: User @auth posts: [Post!]! @paginate } type Mutation { createPost( title: String @rules(apply: ["required", "min:2"]) content: String @rules(apply: ["required", "min:12"]) ): Post @create } ςʔϒϧʹͳΔ

Slide 11

Slide 11 text

ೝূػೳ LightHouse type Query { me: User @auth } LaravelͷAPI Authenticationͱ࿈ܞ͠ɺࣗ෼ͷUserϞσϧΛฦ͢ίʔ υɺAPIΛࣗಈੜ੒͢Δ

Slide 12

Slide 12 text

ϖʔδωʔγϣϯ LightHouse type Query { posts: [Post!]! @paginate }

Slide 13

Slide 13 text

ಠࣗDirectiveͷ࡞੒ LightHouse

Slide 14

Slide 14 text

AWS AppSync

Slide 15

Slide 15 text

AWS AppSync ▸ GraphQLΛ࢖༻ͨ͠APIαʔόΛߏங͢ΔϚωʔδυܕαʔϏε ▸ GraphQLͷSchemaͷFieldʹAttach͢ΔResolverʹΑͬͯɺAWSͷ֤αʔϏε ͱ࿈ܞ͢Δ ▸ DynamoDB ▸ Lambda ▸ Amazon RDS ▸ Cognitoʢೝূج൫ʣ

Slide 16

Slide 16 text

Resolverઃఆ AWS AppSync Resolver Schema Workspaceͷranksऔಘ࣌ʹ DynamoDBͷRankTableΛࢀর͢Δ

Slide 17

Slide 17 text

RankTableͷResolver AWS AppSync ▸ϦΫΤετΛड͚औͬͯDynamoDBͷΫΤϦΛ࣮ߦ͢Δ Request Mapping Template ▸࣮ߦ݁ՌΛϨεϙϯεͱ͢ΔResponse Mapping Template ▸VTL(Velocity Template Language)Ͱॻ͘

Slide 18

Slide 18 text

RankTableͷRequestMappingTemplateʢVTLʣ AWS AppSync

Slide 19

Slide 19 text

RankTableͷRequestMappingTemplate AWS AppSync ݟͨ໨গͭ͠Βͦ͏ͳײ͚ͩ͡Ͳࣗಈੜ੒Ͱ͖Δ ଟগෳࡶͳΫΤϦΛ࢖༻͢ΔͱͳΔͱVTLॻ͘ඞཁ͸ग़ͯ͘Δ

Slide 20

Slide 20 text

AWS AppSync ▸ Cognito࿈ܞʹΑͬͯೝূपΓʹ΄΅ؾΛ࢖Θͳͯ͘Α͍ ▸ VTL͚ͩͰ͸Ͳ͏ʹ΋ͳΒͳ͍ෳࡶͳϩδοΫΛ࣮ߦ͍ͨ͠৔߹ɺResolverΛ LambdaʹAttach͢Δ͜ͱͰίʔυΛॻ͘͜ͱ΋Մೳ

Slide 21

Slide 21 text

͍Ζ͍Ζͳπʔϧ͕͋ͬͯศར

Slide 22

Slide 22 text

No content