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

tokyo.ex #1 - phoenixframeworkの足回り

tokyo.ex #1 - phoenixframeworkの足回り

phonenixのEndpointを起点としたリクエスト処理の流れの説明とよくある実装を使ったcase study

19e5d6016212f7aa56748ef5bc0e8a14?s=128

Hidetaka Kojo

April 19, 2016
Tweet

Transcript

  1. QIPFOJYGSBNFXPSLͷ଍ճΓ 9'-"(äελδΦ )JEFUBLB,PKP

  2. ࣗݾ঺հ w ΤοΫεϑϥάͷதͷਓ w HJUIVC)JEFUBLB,PKP

  3. ࠓ೔ͷ࿩ w QIPFOJYͷ؆୯ͳಈ࡞ͷઆ໌ w ϦΫΤετͷॲཧͷྲྀΕ .Z"QQ&OEQPJOU  w Α͋͘ΔػೳͷQIPFOJY্Ͱͷ࣮૷ํ๏঺հ

  4. .Z"QQ "QQMJDBUJPO w MJCNZ@BQQFYͰఆٛ w BQQMJDBUJPOىಈͷى఺ w ࠷ॳʹىಈ͍ͯ͠Δͷ͸
 ӈͷͭ w

    ͜ͷͭΛཧղͨ͠Β
 QIPFOJYͷಈ࡞Λཧղͨ͠΋ಉ͡ʂ ͷ͸ͣ .Z"QQ .Z"QQ4VQFSWJTPS .Z"QQ&OEQPJOU .Z"QQ3FQP
  5. .Z"QQ&OEQPJOU  w .Z"QQ&OEQPJOUͷ಺༰͸ʜ w 1IPFOJY&OEQPJOUͷXSBQQFS w QIPFOJY4PDLFUUSBOTQPSU΁ͷEJTQBUDITͷهड़ w IUUQϦΫΤετॲཧͰ௨ΔQMVHQJQFMJOFͷهड़

  6. 1MVH  w ͦ΋ͦ΋1MVHͬͯʁ w 1MVH$POOߏ଄ମΛೖྗͯ͠
 1MVH$POOߏ଄ମΛग़ྗ͢Δ΋ͷ w ͦΕ͸Կ͔ҙຯ͕͋Δͷʁ w

    ͜ͷ࢓૊ΈͰQIPFOJY͸ߏ੒͞Ε͍ͯΔͱ
 ݴͬͯ΋աݴͰ͸ͳ͍ QMVH" 1MVH$POO 1MVH$POO`
  7. 1MVH  QMVH" QMVH# QMVH$ QMVH% QMVH& QMVH' SFRVFTU
 DPOO

    SFTQPOTF
 DPOO
  8. 1MVH 

  9. .Z"QQ&OEQPJOU  .Z"QQ&OEQPJOU $POpH 1VC4VC 8BUDIFS 4FSWFS 1IPFOJY&OEQPJOU $PXCPZ8FCTPDLFU 1MVH"EBQUFST

    $PXCPZ)BOEMFS DPXCPZ IBOEMFST SFRVFTUMJTUFOJOHQSPDFTTFT
  10. .Z"QQ&OEQPJOU  w 1MVH"EBQUFST$PXCPZ)BOEMFS w &OEQPJOUͰઃఆͨ͠QMVHͷDBMM͕ͳ͞ΕΔ w IUUQTHJUIVCDPNFMJYJSMBOHQMVHCMPCNBTUFSMJCQMVH BEBQUFSTDPXCPZIBOEMFSFY- w

    &OEQPJOUʹࢦఆ͞ΕͨQMVHΛ্͔Βॱʹ
 దԠ͍ͯ͘͠ w ্͔Βॱͳͷ͸1MVH#VJMEFSͰͦͷॱ൪ͰݻΊ ΒΕ͍ͯΔͨΊ
  11. .Z"QQ&OEQPJOU  w ॳظͰىಈ͍ͯ͠ΔQMVH 1MVH4UBUJD 1MVH3FRVFTU*E 1MVH-PHHFS 1MVH1BSTFST 1MVH.FUIPE0WFSSJEF 1MVH)FBE

    1MVH4FTTJPO .Z"QQ3PVUFS
  12. .Z"QQ3PVUFS w XFCSPVUFSFYʹ࣮૷ w QJQFMJOFΛ࢖ͬͯQMVHΛଋͶͯɺ
 TDPQF͝ͱʹଋͶͨQJQFMJOFΛదԠ͢Δ w ͜͜Ͱ΋1MVH#VJMEFSͰQJQFMJOF͕ଋͶΒΕͯΔ

  13. $POUSPMMFS w BDUJPOʹରԠͨ͠ϩδοΫΛॻ͘ w .Z"QQ3PVUFS΋݁ہ͸QMVH w 1MVH$POOTFOE@SFTQͷதͰSFTQPOTFʹඞཁͳ ৘ใΛDPOOͷதʹؚΊͯฦ͢ w .Z"QQ3PVUFSͷޙʹ΋΋ͪΖΜQMVH͸͔͚Δ

    w ͜͜·Ͱ͕SFRVFTUΛQIPFOJY͕ͲͷΑ͏ʹ
 ॲཧ͍ͯ͠Δ͔ͷ࿩
  14. ͜͜·Ͱͷ·ͱΊ w .Z"QQ "QQMJDBUJPO Λத৺ʹQIPFOJYΛݟͯΈͨ w UFNQMBUFͱ͔WJFX͸ʜ w TPDLFU͸Ҏલʹগ͠࿩ͨ͠ͷͰͦͪΒΛʜ w

    IUUQXXXTMJEFTIBSFOFUIJEFUBLBLPKPFMJYJS w ͔͜͜Β͸্هͷ಺༰Λ౿·͑ͯΑ͋͘Γͦ͏ͳ
 ػೳΛ࣮૷͢Δ
  15. ͋Δ͋Δ࣮૷ UPLFOͷݕূΛ͍ͨ͠  w ཁ݅ w Ϣʔβ͕ૹΓ͚ͭͯ͘ΔUPLFOͰೝূΛ͍ͨ͠ w ԿΛ͢Ε͹͍͍ͷ͔ w

    ೝূ͕ඞཁͳBDUJPOʹରͯ͠UPLFOͷݕূΛߦ͏
  16. ͋Δ͋Δ࣮૷ UPLFOͷݕূΛ͍ͨ͠  .Z"QQ3PVUFS

  17. ͋Δ͋Δ࣮૷ UPLFOͷݕূΛ͍ͨ͠  .Z"QQ1MVH5PLFO"VUI

  18. ͋Δ͋Δ࣮૷ NTHQBDL"1*Λ࢖͍͍ͨ  w ཁ݅ w NTHQBDL"1* QSPUPCVG"1*ͷ࣮૷ w ԿΛ͢Ε͹͍͍ͷ͔

    w CPEZͷத਎ΛEFDPEF͢Δॲཧ w TFOE@SFTQͰૹ৴࣌ʹFODPEF͢Δॲཧ
  19. ͋Δ͋Δ࣮૷ NTHQBDL"1*Λ࢖͍͍ͨ  w $POUSPMMFSͷதͰ͸EFDPEF͞ΕQBSBNTʹೖ͍ͬͯΔ w .Z"QQ3PVUFSΑΓલͷQMVHͰॲཧ͞Ε͍ͯΔ w 1MVH1BSTFS w

    QBSTFSTʹ!CFIBWJPVS1MVH1BSTFSTͳNPEVMFΛ
 ॻ͘͜ͱͰಠࣗͷQBSTFॲཧ͕͔͚Δ w QBSTFͱEFDPEF w 1MVH1BSTFST+40/Λ·Ͷͯมߋ͢Ε͹؆୯ʹʂ
  20. ͋Δ͋Δ࣮૷ NTHQBDL"1*Λ࢖͍͍ͨ  .Z"QQ.THQBDL1BSTFS .Z"QQ&OEQPJOU

  21. ͋Δ͋Δ࣮૷ NTHQBDL"1*Λ࢖͍͍ͨ  w TFOE@SFTQΛൃߦ͢Δ࣌఺ͰSFTQPOTFͷCPEZ͸
 FODPEF͓͔ͯ͠ͳ͚Ε͹ͳΒͳ͍ w KTPOͷ৔߹͸1IPFOJY$POUSPMMFSKTPOͷॲཧ w ࣗ෼ͰTFOE@SFTQॲཧΛ࢖ͬͯSFTQ@CPEZʹ


    FODPEFͨ݁͠ՌΛੵΊ͹͍͍ w .Z"QQ)FMQFSNTHQBDL 1IPFOJY$POUSPMMFS
  22. !EFSJWFʹ͍ͭͯ  w &DUPͷNPEFMͷΑ͏ͳTUSVDUΛ&ODPEFSͰFODPEF ͢Δͱ@@NFUB@@pFME͕͋ΔͨΊʹFSSPSΛग़Δ w ܕ TUSVDU ͝ͱʹFODPEFSͷৼΔ෣͍Λఆٛ͠ͳ͍ ͱ͍͚ͳ͍

  23. !EFSJWFʹ͍ͭͯ  w QSPUPDPMଆ͕༻ҙ͍ͯ͠Ε͹NPEVMF͝ͱͷڍಈΛ
 NPEVMF಺ʹ؆୯ʹఆ͕ٛͰ͖Δ

  24. ͋Δ͋Δ࣮૷ ϩάΛSFRVFTUKTPOͰ  w ཁ݅ w qVFOUEͰ࢖͍қ͍Α͏ʹSFRVFTUMPHΛKTPOͰ
 ߏ଄Խͯ͠͸͖͍ͨ w ղੳ༻్ͷͨΊSFRVFTUQBSBNT΋͚͍ͭͨ

    w ԿΛ͢Ε͹͍͍ͷ͔ w ϦΫΤετͷ಺༰ΛؚΊͯSFTQPOTFʹൃߦ w -PHHFSʹTUSJOHҎ֎ͷPCKFDUΛ౉͢
  25. ͋Δ͋Δ࣮૷ ϩάΛSFRVFTUKTPOͰ  w طଘͷ-PHHFS͸1MVH-PHHFSʹهड़͞Ε͍ͯΔ w 1MVH1BSTFSΑΓલʹ͋ͬͯ΋͍͍ͷ͔ʁ w SFHJTUFS@CFGPSF@TFOE w

    TFOE@SFTQͷ಺෦ͷSVO@CFGPSF@TFOEͰ
 ొ࿥ͯ͋͠ΔDBMMCBDLΛݺͼग़͢
  26. ͋Δ͋Δ࣮૷ ϩάΛSFRVFTUKTPOͰ 

  27. ͋Δ͋Δ࣮૷ ϩάΛSFRVFTUKTPOͰ  w MPHHFSΛॆ࣮ͯ͠΄͍͠ͱݴ͏ϦΫΤετʹ
 ଚࢣͷ͋Γ͕͍͓ͨݴ༿ʜ w ͱ͍͏͜ͱ͸͢ͰʹͰ͖Δ͸ͣɻ w -PHHFSJOGP

    DIBSEBUB@PS@GO NFUBEBUB
  28. ͋Δ͋Δ࣮૷ ϩάΛSFRVFTUKTPOͰ  w -PHHFSʹ͸NFUBEBUBͱͯ͠LFZXPSEMJTU͕౉ͤΔ w ͋ͱ͸ड͚औͬͨNFUBEBUBΛKTPOʹFODPEFͯ͠
 ग़ྗ͢ΔMPHHFSCBDLFOEΛ༻ҙ͢Ε͹͍͍ w IUUQTHJUIVCDPNYqBHTUVEJPFMJYJS@MPHHFS@KTPO@pMF@CBDLFOE

    w ࣗ࡞ͷ-PHHFSΛ࡞੒ͯ͠ɺ1MVH-PHHFSͱஔ͖׵͑ͯ
 ඞཁͳϩάΛ͸͘Α͏ʹ͢Δ
  29. ͋Δ͋Δ࣮૷ αʔόͷϨεϙϯεΛίϯτϩʔϧ͍ͨ͠  w ཁ݅ w QBSTFFSSPSͳͲͷϦΫΤετىҼͰൃੜͨ͠
 ΤϥʔΛܥͷΤϥʔͰฦͨ͘͠ͳ͍ w ԿΛ͢Ε͹͍͍ͷ͔

    w ಛఆͷΤϥʔΛัଊͯ͠ద੾ͳSFTQPOTFΛฦ͢
  30. ͋Δ͋Δ࣮૷ αʔόͷϨεϙϯεΛίϯτϩʔϧ͍ͨ͠  w 1MVH1BSTFS͸&OEQPJOUͷQMVHQJQFMJOFͷҰ෦ w &OEQPJOUDBMM͕QMVHQJQFMJOFॲཧΛ࣮ߦ͢Δ .Z"QQ&OEQPJOU

  31. ·ͱΊ w FOEQPJOUΛى఺ͱͨ͠SFRVFTUͷྲྀΕͱ
 QMVHͷ࢓૊ΈΛཧղ͢Δͱ৭ʑ෯͕޿͕Δ w QIPFOJY͸΍Γ͍ͨ͜ͱ͕γϯϓϧʹ͔͚ͯɺ
 ݴޠΛݗҾͰ͖ΔଘࡏʹͳΕΔͱࢥ͍ͬͯΔ w "DUJWF3FDPSE 3BJMTͷෳࡶ͔͞Βͷճؼ

    w Ϛϧνϓϩηεͷརศੑ w IPUEFQMPZͷϕετͳ෇͖߹͍ํ͸·ͩ·ͩݸਓతͳ՝୊ʜ
  32. None
  33. ͕࣌ؒ͋·ͬͨͱ͖ͷࢿྉ
 &DUPͷTIBSEJOH w &DUPͷෛՙ෼ࢄ΍ͬͯ·͔͢ʁ w TIBSEJOH΋&DUP3FQPͩͱ݁ߏ؆୯ʂ

  34. ͕࣌ؒ͋·ͬͨͱ͖ͷࢿྉ
 &DUPͷTIBSEJOH .Z"QQ6TFS4IBSEJOH.BOBHFS .Z"QQ 6TFS3FQP4 .Z"QQ 6TFS3FQP4 .Z"QQ 6TFS3FQP4 .Z"QQ

    6TFS3FQP4
  35. ͕࣌ؒ͋·ͬͨͱ͖ͷࢿྉ
 &DUPͷTIBSEJOH w .Z"QQ6TFSHFOFSBUF@JE Ͱγʔέϯα͔Β࠾൪ w 6TFSSFQP VTFS@JE Ͱ֨ೲ͢ΔTIBSEJOH͍ͯ͠Δ
 6TFS3FQPMJTU͔ΒରԠ͢Δ3FQPΛฦ͢

    w 6TFSSFQP VTFS@JE VQEBUF DIBOHFTFU
  36. ·͕ͩ࣌ؒ͋·ͬͨͱ͖ͷࢿྉ
 FYRͷ෼ࢄ w FYR࣮ͬͯ͸SFEJT͕Ұ୆ʹݻఆ͞ΕΔͷͰ
 όοΫΤϯυΛ෼ࢄ͍ͨ͠ͱ͖ͱ͔ʹ͸޻෉͕ඞཁ w UXFNQSPYZͩLFZ਺͕গͳ͍FYRͰ͸ͲͷRVFVF ͕Ͳͷϗετʹ͍͔͘Θ͔Βͳ͍͔Βݫີʹෛՙ ͕෼ࢄ͢Δอূ͕ͳ͍ w

    ͜ͷลΓ΋ੵΉͱ͖ʹSBOEPNʹSFEJTIPTUΛબΜ ͰFORVFVF͢Δ޻෉ͱ͔ඞཁͰ͢
  37. ·͕ͩ࣌ؒ͋·ͬͨͱ͖ͷࢿྉ
 FYRͷ෼ࢄ FYRSFEJT FYRSFEJT FYRSFEJT QIPFOJY"QQ X X X QIPFOJY"QQ

    X X X ʜʜʜ