$30 off During Our Annual Pro Sale. View Details »

API になろう / Let's become an API

Pちゃん
December 18, 2019

API になろう / Let's become an API

Pちゃん

December 18, 2019
Tweet

More Decks by Pちゃん

Other Decks in Programming

Transcript

  1. өͬͨΒ࿩͢

    View Slide

  2. ͜Μ͹Μ͸

    View Slide

  3. PͪΌΜ
    @p1ch_jp

    View Slide

  4. ͓·͑ͩΕ
    w ॴଐ
    w גࣜձࣾσΟʔɾΤψɾΤʔ
    w Կͯ͠Δ
    w ϑϩϯτΤϯυΤϯδχΞ

    View Slide

  5. ͸͍

    View Slide

  6. ࠓ೔ͳΜͰ͕͢

    View Slide

  7. -5ότϧͱ͍͏͜ͱͰ
    Ժ΍͔͡Όͳ͍Ͱ͢Ͷ

    View Slide

  8. ͸͍

    View Slide

  9. ΅͕͘͜͜ʹ͍Δ
    ܦҢͳΜͰ͕͢

    View Slide

  10. View Slide

  11. View Slide

  12. ͳΜ΍͔Μ΍Ͱ

    View Slide

  13. ͏͔ͬΓϦϯάʹ
    ্͕Δ͜ͱʹͳͬͯ͠·ͬͨ

    View Slide

  14. ͔͠΋ͳ͔ͥ
    όοΫΤϯυͰ

    View Slide

  15. ϏϏͬͯ·͢

    View Slide

  16. ԿΛ࿩͢ͷ͔

    View Slide

  17. ຊ೔ͷ΅͘ͷςʔϚ

    View Slide

  18. όοΫΤϯυͱ
    ͍͏͜ͱͳΜͰ͕͢

    View Slide

  19. ͨͿΜདྷͯΔਓͷ
    ΄ͱΜͲͷਓ͕

    View Slide

  20. σβΠφʔ
    ϑϩϯτΤϯυΤϯδχΞ
    03

    View Slide

  21. ΑͶʁ

    View Slide

  22. ͳʹΑΓ
    ΅ࣗ͘਎͕ৄ͘͠ͳ͍

    View Slide

  23. ͱ͍͏Θ͚Ͱ

    View Slide

  24. ࠓ೔͸Ͱ͢Ͷ

    View Slide

  25. ࣮຿ͰΞϨίϨͯ͠ಘͨ
    ҝʹͳΔ஌ݟͷڞ༗ͱ͔

    View Slide

  26. ͦ͏͍͏ͷ
    Ͱ͖ͯ·ͤΜ

    View Slide

  27. ԿΛ࿩͔͢ͱݴ͏ͱʜ

    View Slide

  28. ࠷ۙझຯͰ࡞ͬͨAPI ͷ࿩Ͱ΋
    ͠Α͏ͱࢥ͍·͢

    View Slide

  29. גࣜձࣾσΟʔɾΤψɾΤʔσβΠϯຊ෦αʔϏεσβΠϯ෦%&((
    ౻ݪ৻ଠ࿠BLB1$IBO
    APIʹͳΖ͏
    FROKAN x UIT #2 - ೥๨ΕLT ότϧ

    View Slide

  30. ૝ఆௌߨऀ

    View Slide

  31. ૝ఆௌߨऀ
    w ීஈɺ࢓ࣄͰ͸ϑϩϯτΤϯυΛॻ͍͍ͯΔ͕ɺझຯ΍
    ݸਓ։ൃͰόοΫΤϯυ΋ॻ͍͍͖͍ͯͨਓ
    w มͳAPI͕ੜ͑ͯΔͷΛݟ͚ͭΔͱָ͘͠ͳͬͪΌ͏ਓ

    View Slide

  32. ͜͏ͳΔͱΑͦ͞͏
    w ॳֶऀʹ΋ෛ୲ͷগͳ͍ٕज़ελοΫΛ஌ͬͯɺ࣮ࡍʹ
    (FUUJOH4UBSU͢Δػӡ͕ߴ·Δ
    w ͱ͸ݴ͑Կͭ͘Ε͹͑͑ͶΜ໰୊Λղফͯ͠ɺ࣮ࡍʹ
    (FUUJOH4UBSU͢Δػӡ͕ߴ·Δ

    View Slide

  33. Ͱ

    View Slide

  34. ࠓ೔ɺग़ͯ͘Δ੒Ռ෺
    શ෦JSONͳΜͰ

    View Slide

  35. Έͳ͞Μ΋͓खݩʹ

    View Slide

  36. 1PTUNBO

    View Slide

  37. ͱ͔

    View Slide

  38. 1PTUXPNBO

    View Slide

  39. ͱ͔

    View Slide

  40. *OTPNOJB

    View Slide

  41. ͱ͔ى্ͪ͛ͳ͕Β
    ฉ͍͍͚ͯͨͩΔͱ

    View Slide

  42. ָ͍͔͠΋͠Ε·ͤΜ

    View Slide

  43. ΈΜͳ͕ى্ͪ͛ͯΔؒʹ
    ΅͕͘ञΛҿΉ࣌ؒ

    View Slide

  44. ͸͍

    View Slide

  45. ࠓճ࡞ͬͨ΋ͷ
    0

    View Slide

  46. P-Chan API

    View Slide

  47. IUUQTBQJQDIBOJN

    View Slide


  48. ಡΜͰυϝΠϯͷ೗͘

    View Slide


  49. ΅͘ʹؔ͢Δ৘ใ͕ฦΓ·͢

    View Slide

  50. GET /identification
    GET /accounts
    GET /assets
    PATCH /assets

    View Slide


  51. ࢖༻ٕज़

    View Slide


  52. ͜Μͳײ͡Ͱ͢

    View Slide


  53. ࠓ೔͸

    View Slide


  54. ୈҰষɺίίΒ΁Μ

    View Slide


  55. ୈೋষɺίίΒ΁Μ

    View Slide


  56. ʹผ͚ͯ঺հ͍͖ͯ͠·͢

    View Slide

  57. ͱΓ·αʔόʔΛى্ͪ͛ͯ
    ੩తͳ৘ใΛฦͯ͠ΈΔ
    1

    View Slide


  58. ίίΒ΁Μͷ࿩

    View Slide


  59. ͜ͷষ͸ݴ͍͍ͨ͜ͱ
    ͻͱ͔ͭ͠ͳ͍

    View Slide


  60. झຯor
    ݸਓ։ൃ
    &&
    ॳΊͯͷαʔόʔαΠυNode.js

    View Slide

  61. TypeScript + Express Ͱ૊΋͏

    View Slide

  62. 5ZQF4DSJQU&YQSFTT
    w &YQSFTTӫރ੝ਰͷܹ͍͠ք۾ʹ͓͍ͯ͸௝͘͠ɺރΕ
    ͭͭ΋ݱ໾Ͱ࢖͑ΔͷͰʢރΕͯΔ΋ͷ͸৘ใྔ͕๛෋
    w 5ZQF4DSJQUϑϩϯτ͸·ͩ54ͱ૬ੑͷྑ͍ϑϨʔϜϫʔ
    Ϋͦ͏͡Όͳ͍ϑϨʔϜϫʔΫ͋Δ͕ɺόοΫΤϯυ͸
    ͍͍ͩͨ૬ੑ͍͍ɻϑϩϯτͱҧͬͯXFCQBDLͷઃఆ
    Ͱ͠ΜͲ͍ͱ͔ͳͯ͘ɺجຊUTDίϚϯυͰઓ͑ΔͷͰ
    ྑ͞Έ͕͋Δɻ

    View Slide


  63. ࠷ۙ͸Nest.jsͱ͔͕
    ྲྀߦͬͯ·͕͢

    View Slide


  64. Ұ൪ॳΊ͸ΦʔιυοΫεʹ
    ExpressͰ૊Ή͜ͱΛΦεεϝ
    σΟεͬͯ͸ͳ͍Αɺ510ͶʢҰԠ

    View Slide


  65. P-Chan APIͷ৔߹͸
    ͜ΕͰ

    View Slide

  66. GET /identification

    View Slide

  67. GET /accounts

    View Slide


  68. ͋ͨΓΛฦͯ͠·͢

    View Slide


  69. ͸͍

    View Slide


  70. ͱΓ·͜ΕͰAPI૊Ί·ͨ͠

    View Slide


  71. ͱ͸ݴ͑͜Ε͚ͩ͡Ό
    Կ΋໘ന͘Ͷ͑

    View Slide


  72. όοΫΤϯυͳΒͰ͸ͷ

    View Slide


  73. औ͖ͬͯͨσʔλΛ
    อଘͨ͠Γɺు͖ग़ͨ͠Γ

    View Slide


  74. ͦ͏͍͏ͷ͍ͨ͠

    View Slide

  75. σʔλΛऔ͖ͬͯͯอଘͯ͠
    ు͖ग़͢·ͰͷΞϨίϨ
    2

    View Slide

  76. ͲΜͳΤϯυϙΠϯτ
    ੜ΍͔͢ͳʔͱࢥ͍ͬͯͨΒ

    View Slide

  77. ͜ΜͳIssue͕ͨͬͯͨͷͰ

    View Slide

  78. ݮΔ΋Μ͡Όͳ͍͍͍͔͠

    View Slide

  79. ͜ΜͳΤϯυϙΠϯτΛ
    ༻ҙ͠·ͨ͠

    View Slide

  80. PATCH /assets
    GET /assets
    ࢿ࢈৘ใͷฦ٫ͱߋ৽

    View Slide

  81. αϯϓϧσʔλͰ΋
    ͍͍͔ͱࢥͬͨΜͰ͕͢

    View Slide

  82. ໘നΈʹ͚ܽΔͷͰ

    View Slide

  83. ʢϦΞϧΨνσʔλฦ͠·͢ʣ

    View Slide

  84. ͜ΕΒͷΤϯυϙΠϯτ͸
    ओʹ2ͭͷ޻ఔͰ੒ΓཱͬͯΔ

    View Slide

  85. PuppeteerͰ
    σʔλΛऔͬͯ͘Δ޻ఔ
    Prisma FrameworkͰ
    σʔλΛग़͠ೖΕ͢Δ޻ఔ
    Prisma Framework

    View Slide

  86. PuppeteerͰ
    σʔλΛऔͬͯ͘Δ޻ఔ
    Prisma FrameworkͰ
    σʔλΛग़͠ೖΕ͢Δ޻ఔ
    Prisma Framework

    View Slide

  87. Puppeteer ࢖͏ͳΒσϓϩΠઌ͸Α͘ߟ͑Α͏
    w ZEIT Nowɺv2͔Β͸FaaSతͳײ͡ʹͳͬͨͷͰɺ͋Μ
    ·ΓϔουϨεϒϥ΢βΛͿΜճ͢Έ͍ͨͳέʔεΛ૝ఆ
    ͞Ε͍ͯͳ͍ɻλΠϜΞ΢τ͕10 ඵɻ ՝ۚͰ5 ෼ʹ

    w ͓ͱͳ͘͠GAE/SE λΠϜΞ΢τ60ඵ
    ͱ͔ɺGoogle
    Cloud Functions λΠϜΞ΢τ540ඵ
    ͱ͔࢖ͬͨ΄͏͕
    ྑ͍
    w ͨͿΜP-Chan API͸ɺ͖͡ʹ৐Γ׵͑Δ

    View Slide

  88. PuppeteerͰ
    σʔλΛऔͬͯ͘Δ޻ఔ
    Prisma FrameworkͰ
    σʔλΛग़͠ೖΕ͢Δ޻ఔ
    Prisma Framework

    View Slide

  89. ࠓ೔Ұ൪஌ͬͯ΄͍͠΍ͭ

    View Slide

  90. ͋ͨΓ·͑ͳΜͰ͕͢

    View Slide

  91. ϑϩϯτΤϯυͰ͸Ͱ͖ͳ͍
    όοΫΤϯυͷ໘ന͞ͱͯ͠

    View Slide

  92. σʔλͷӬଓԽ͕͋Δ

    View Slide

  93. 2019೥ͷ
    ΞϓϦέʔγϣϯ։ൃʹ͓͍ͯ

    View Slide

  94. େମͷ৔߹ɺORMͱ͍͏ྨͷ
    ϥΠϒϥϦΛ࢖͏͜ͱʹΑͬͯ

    View Slide

  95. SQLΛ௚ॻ͖͢Δ͜ͱͳ͘
    ؆୯ʹDB΁ͷCRUD͕Ͱ͖ΔΑ͏ʹ

    View Slide

  96. ͱ͸ݴ͑

    View Slide

  97. ॳֶऀʹͱͬͯ

    View Slide

  98. ίʔυ͕
    Ұ൪ΰνϟΓΨνͳ෦෼Ͱ͋Γ

    View Slide

  99. ORMಠࣗͷϚΠάϨʔγϣϯϧʔ
    ϧ΍ه๏Ͱ୤མ͕ͪ͠

    View Slide

  100. ͦ͜Ͱࠓճ࢖ͬͨͷ͕

    View Slide

  101. Prisma Framework

    View Slide

  102. ORM Migration Sequel Pro
    ͬΆ͍΍ͭ

    View Slide

  103. ࢖͍ํ͸؆୯

    View Slide

  104. εΩʔϚΛఆٛ͢Δ
    Prettier΋αϙʔτ͞ΕͯΔΑ
    TDIFNBQSJTNB

    View Slide

  105. ϚΠάϨʔγϣϯͷੜ੒ͱ࣮ߦ
    prisma2 lift save && prisma2 lift up
    5FSNJOBM

    View Slide

  106. ͜Μͳײ͡Ͱ௥Ճͨ͠Γ
    DPOUSPMMFSTBTTFUTUT

    View Slide

  107. ͜Μͳײ͡Ͱfindͨ͠Γ
    DPOUSPMMFSTBTTFUTUT

    View Slide

  108. ΊͪΌͪ͘Ό௚ײతͳ
    ΦϒδΣΫτͷૢ࡞Ͱ׬݁

    View Slide

  109. ·ͩ·ͩ͜Ε͔ΒͳORM͚ͩͲɺ
    ৮ͬͨײ͡ɺखʹೃછΉؾ͕͢Δ

    View Slide

  110. ҰԠTypeScript ORMքͷԦऀ
    TypeORMͱͷൺֱ

    View Slide

  111. vs TypeORM (1/2)
    w ޙൃͷͨΊɺશମతʹ·ͩ·ͩউͯͳ͍ʢػೳͷଟ͞ɺ
    ରԠ͢Δσʔλϕʔεͷଟ͞ɺ࣮ࡍͷར༻ྫͳͲͳͲʣ
    w ͱ͸ݴ͑ɺ๏ਓ͕։ൃ฼ମͳͷͰɺ։ൃεϐʔυ͕҆ఆ
    ͍ͯ͠Δʢ࠷௿Ͱ΋ִिͰΞϓσ͢Δͱݴͬͯͨʣ
    w TypeORM ʹൺ΂ͯରԠ͢Δσʔλϕʔε͕ߜΒΕͯΔ
    ͷ͸ɺܽ఺Ͱ΋͋Δ͕ར఺Ͱ΋͋Γͦ͏

    View Slide

  112. vs TypeORM (2/2)
    w Photon JS ORM૚
    Lift JS Migration૚
    ͕ಠཱͯ͠
    ಈ͘ͱ͍͏ͷ͸NodeͬΆͯ͘޷͖ʢ޷Έͷ໰୊
    w ԿΑΓɺ·ͩv0.xͰ͋ΓProductionͰͷ࢖༻͸ਪ঑͞
    Ε͍ͯͳ͍ͷͰɺશମతʹࠓޙʹظ଴ͱ͍͏ײ͡
    w ʢTypeScript Ͱॻ͚ΔORM͕ͦΜͳʹଟ͘ͳ͍தͰɺ
    બ୒ࢶ͕૿͑Δ͜ͱࣗମɺ݁ߏՁ஋͕͋Γͦ͏ʣ

    View Slide

  113. ·ͱΊ
    3

    View Slide

  114. ·ͱΊ
    w όοΫΤϯυ͜ͱ͸͡Ί͸ʮTypeScript + Express +
    Prisma Frameworkʯ͕͍͍͔΋͠Εͳ͍Α
    w ࣗ෼ͷ৘ใΛίϯςϯπʹͨ͠ΒɺແݶʹΤϯυϙΠϯ
    τΛ࡞ΕΔͷͰɺʮͱ͸ݴ͑Կ࡞Ε͹͑͑ͶΜ໰୊ʯͰ
    ΤλΔͱ͔ͳͦ͞͏ɺΦεεϝ

    View Slide


  115. ࠓ೔঺հͨ͠APIͳΜͰ͕͢

    View Slide


  116. ୭ಘ͔͸෼͔Βͳ͍͚Ͳ

    View Slide


  117. ಛʹೝՄػߏͱ͔
    ੵΜͰͳ͍ΜͰ

    View Slide


  118. ୭Ͱ΋ୟ͚·͢

    View Slide

  119. ͱ͍͏Θ͚Ͱ

    View Slide

  120. Ҏ্

    View Slide

  121. גࣜձࣾσΟʔɾΤψɾΤʔσβΠϯຊ෦αʔϏεσβΠϯ෦%&((
    ౻ݪ৻ଠ࿠BLB1$IBO
    APIʹͳΖ͏
    FROKAN x UIT #2 - ೥๨ΕLT ότϧ

    View Slide

  122. Ͱͨ͠

    View Slide

  123. ͝੩ௌ
    ͋Γ͕ͱ͏͍͟͝·ͨ͠

    View Slide