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

個人ブログサイトを構築して学ぶGraphQL NestJSとNext.js使うよ! / graphql nestjs nextjs bootcamp

Yusuke Wada
February 19, 2022

個人ブログサイトを構築して学ぶGraphQL NestJSとNext.js使うよ! / graphql nestjs nextjs bootcamp

「GraphQLの仕様はなんとなく知っているけど、それを使ってどうアプリを作るのかいまいちイメージがわかない」

そんなスキマを埋めるべく函館で登壇してきました。

近年ではReactをはじめフロントエンドの選択肢が豊富になっており、フロントエンドとバックエンド間のやりとりにはより汎用的かつ効率的な方法が求められます。

GraphQLはその選択肢のひとつです。この資料では NestJS で GraphQLバックエンドを実装し、それをNext.jsから利用して、個人ブログサイトを構築してみます。 GraphQL開発の流れを体験して、ご自身のアプリ開発に役立ててください。

Yusuke Wada

February 19, 2022
Tweet

More Decks by Yusuke Wada

Other Decks in Technology

Transcript

  1. ϑΣονˍඳը  [ { title: 'The Awakening', author: 'Kate Chopin',

    }, { title: 'City of Glass', author: 'Paul Auster', }, ]
  2. /FTU+4ͷ৔߹  (SBQI2-4DIFNBΛ࡞Δํ๏͕;ͨͭ͋Δ ίʔυϑΝʔετ Ξϓϩʔν TypeScriptϑΝΠϧ GraphQL Schema εΩʔϚϑΝʔετ Ξϓϩʔν

    GraphQL Schema TypeScriptϑΝΠϧ ͪ͜ΒΛ࠾༻ʢΦεεϝʣ TSͷίʔσΟϯάʹूதͰ͖Δ SchemaΛਖ਼ʹ͍ͨ͠ ։ൃνʔϜͰ༗༻
  3. 2VFSZઃܭ σʔλϑΣον ඳը 📱 Query urql Render GraphQL Code Generator

    GraphQLϑϩϯτΤϯυɹɹɹɹɹɹɹ։ൃͷྲྀΕ Next.js
  4. εΩοϓ͢Δ͕ಋೖ͢Δཁૉ  όοΫΤϯυଆ 1PTUHSF42- هࣄͷ߲໨௥Ճ 1SJTNBʹΑΔ%#ΞΫηε ϑϩϯτΤϯυଆ .BUFSJBM6*ʢ.6*ʣͷಋೖ \ JEGDDEEDEBDBDGFF

     UJUMF3BJMTͷECTFFEͰେྔσʔλͷ౤ೖ  UZQFBSUJDMF  FNPKJ💎  QVCMJTI%BUF5;  DPOUFOU1BUIQPTUTBSUJDMFTSBJMTQBSBMMFM TFFENE ^ \ JEEBBGEDGCED  UJUMF࠷ڧΩʔϘʔυܾఆઓ  UZQFEJBSZ  FNPKJ💎  QVCMJTI%BUF5;  DPOUFOU1BUITUPSBHFQPTUTBSUJDMFTOFTUKTNE ^ 
  5. %#ͷ߲໨ʹର͢ΔߜΓࠐΈΛݕ౼  όοΫΤϯυଆ 1PTUHSF42- هࣄͷ߲໨௥Ճ 1SJTNBʹΑΔ%#ΞΫηε ϑϩϯτΤϯυଆ .BUFSJBM6*ʢ.6*ʣͷಋೖ \ JEGDDEEDEBDBDGFF

     UJUMF3BJMTͷECTFFEͰେྔσʔλͷ౤ೖ  UZQFBSUJDMF  FNPKJ💎  QVCMJTI%BUF5;  DPOUFOU1BUIQPTUTBSUJDMFTSBJMTQBSBMMFM TFFENE ^ \ JEEBBGEDGCED  UJUMF࠷ڧΩʔϘʔυܾఆઓ  UZQFEJBSZ  FNPKJ💎  QVCMJTI%BUF5;  DPOUFOU1BUITUPSBHFQPTUTBSUJDMFTOFTUKTNE ^ 
  6. %#ͷ߲໨ʹର͢ΔߜΓࠐΈΛݕ౼  όοΫΤϯυଆ 1PTUHSF42- هࣄͷ߲໨௥Ճ 1SJTNBʹΑΔ%#ΞΫηε ϑϩϯτΤϯυଆ .BUFSJBM6*ʢ.6*ʣͷಋೖ \ JEGDDEEDEBDBDGFF

     UJUMF3BJMTͷECTFFEͰେྔσʔλͷ౤ೖ  UZQFBSUJDMF  FNPKJ💎  QVCMJTI%BUF5;  DPOUFOU1BUIQPTUTBSUJDMFTSBJMTQBSBMMFM TFFENE ^ \ JEEBBGEDGCED  UJUMF࠷ڧΩʔϘʔυܾఆઓ  UZQFEJBSZ  FNPKJ💎  QVCMJTI%BUF5;  DPOUFOU1BUITUPSBHFQPTUTBSUJDMFTOFTUKTNE ^  GraphQL Query Ͱ ύϥϝʔλΛड͚औΔඞཁ͕͋Δ
  7. 2VFSZઃܭ σʔλϑΣον ඳը 📱 Query urql Render GraphQL Code Generator

    GraphQLϑϩϯτΤϯυɹɹɹɹɹɹɹ։ൃͷྲྀΕ Next.js
  8. ͜͜·ͰͰొ৔ͨ͠ཁૉ  2VFSZ"SHVNFOUT 2VFSZ΁ύϥϝʔλΛ౉͢ ߜΓࠐΈͳͲɻ3&45GVM"1*ͷ2VFSZ 1BSBNFUFSʹ͍ۙ 2VFSZ"MJBTFT 2VFSZʹ೚ҙͷ໊લΛ͚ͭΔ ಉ͡2VFSZͰҟͳΔߜΓࠐΈΛߦ͏৔߹ͳ ͲɻμογϡϘʔυը໘ͳͲͰظ଴

    'SBHNFOUT ϑΟʔϧυڞ௨Խ͢Δ ίϯϙʔωϯτͱରԠ෇͚ͯඳըΛҰ೚ ϑϥάϝϯτίϩέʔγϣϯ 'JFME3FTPMWFS ಛఆϑΟʔϧυઐ༻3FTPMWFS औಘʹίετ͕ߴ͍'JFMEͳͲ΁ݸผͷ 3FTPMWFSΛׂΓ౰ͯΔ࢓༷
  9. εΩοϓ͢Δ͕࣮૷͢Δཁૉ  όοΫΤϯυଆ ίϝϯτʢJNQSFTTJPOTʣςʔϒϧΛ௥Ճ QPTUTςʔϒϧͷࢠͱ͢Δ هࣄʹඥͮ͘JNQSFTTJPOTΛಡΈग़͢2VFSZ { "id": "394474e1-51f4-4fe5-a498-e804cbceeadd", "sticker":

    "Thanks", "comment": "ࢀߟʹͳͬͨ", "postId": "fc8c04d6-6007-03dc-da13-c9ac29fe66e7", "twitterId": "waddy_u", "createdAt": "2022-01-30T19:34:22.000Z" },
  10. ͜͜·ͰͰొ৔ͨ͠ཁૉ  2VFSZ"SHVNFOUT 2VFSZ΁ύϥϝʔλΛ౉͢ ߜΓࠐΈͳͲɻ3&45GVM"1*ͷ2VFSZ 1BSBNFUFSʹ͍ۙ 2VFSZ"MJBTFT 2VFSZʹ೚ҙͷ໊લΛ͚ͭΔ ಉ͡2VFSZͰҟͳΔߜΓࠐΈΛߦ͏৔߹ͳ ͲɻμογϡϘʔυը໘ͳͲͰظ଴

    'SBHNFOUT ϑΟʔϧυڞ௨Խ͢Δ ίϯϙʔωϯτͱରԠ෇͚ͯඳըΛҰ೚ ϑϥάϝϯτίϩέʔγϣϯ /FTUFE'JFME ϑΟʔϧυͰؔ܎Λදݱ l(SBQIzͨΔॴҎͰ΋͋ΔɻϒϩάͷྫͰ ͸هࣄͱίϝϯτͷ਌ࢠؔ܎Ͱར༻ 'JFME3FTPMWFS ಛఆϑΟʔϧυઐ༻3FTPMWFS औಘʹίετ͕ߴ͍'JFMEͳͲ΁ݸผͷ 3FTPMWFSΛׂΓ౰ͯΔ࢓༷ .VUBUJPO ϒϥ΢β͔Βͷܦ࿏͕ൃੜ (SBQI2-$PEF(FOFSBUPSΛ࢖͑͹ 3FBDU)PPLTͱͯ͠࢖͑Δ
  11. ͜͜·ͰͰొ৔ͨ͠ཁૉ  2VFSZ"SHVNFOUT 2VFSZ΁ύϥϝʔλΛ౉͢ ߜΓࠐΈͳͲɻ3&45GVM"1*ͷ2VFSZ 1BSBNFUFSʹ͍ۙ 2VFSZ"MJBTFT 2VFSZʹ೚ҙͷ໊લΛ͚ͭΔ ಉ͡2VFSZͰҟͳΔߜΓࠐΈΛߦ͏৔߹ͳ ͲɻμογϡϘʔυը໘ͳͲͰظ଴

    'SBHNFOUT ϑΟʔϧυڞ௨Խ͢Δ ίϯϙʔωϯτͱରԠ෇͚ͯඳըΛҰ೚ ϑϥάϝϯτίϩέʔγϣϯ /FTUFE'JFME ϑΟʔϧυͰؔ܎Λදݱ l(SBQIzͨΔॴҎͰ΋͋ΔɻϒϩάͷྫͰ ͸هࣄͱίϝϯτͷ਌ࢠؔ܎Ͱར༻ 'JFME3FTPMWFS ಛఆϑΟʔϧυઐ༻3FTPMWFS औಘʹίετ͕ߴ͍'JFMEͳͲ΁ݸผͷ 3FTPMWFSΛׂΓ౰ͯΔ࢓༷ .VUBUJPO ϒϥ΢β͔Βͷܦ࿏͕ൃੜ (SBQI2-$PEF(FOFSBUPSΛ࢖͑͹ 3FBDU)PPLTͱͯ͠࢖͑Δ ֎෦αʔϏεͱ࿈ܞ (SBQI2-αʔόʔͰٵऩ ϑϩϯτΤϯυ͔Β2VFSZΛઃܭ͢Δͱ ͖ɺཪଆΛؾʹ͢Δඞཁ͕ͳ͍