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

DevelopWorkflow and Solving Problems

DevelopWorkflow and Solving Problems

G's Academy Tokyoでの「開発ワークフローと問題解決講座」の資料です。どのようにサービスをシステムで作るのか、どのように問題解決を行うのか、を講義させていただきました。

Avatar for Yohei Munesada

Yohei Munesada

July 01, 2017
Tweet

More Decks by Yohei Munesada

Other Decks in Technology

Transcript

  1. 㾎 फఆ༸ฏ 㾎 @yoheiMune 㾎 http://www.yoheim.net 㾎 ࠷ۙ΍͍ͬͯΔ͜ͱ 㾎 GCP,

    Docker, Go, React, Vue.js, Laravel, Python, Node.js, ͳͲ "CPVUNF
  2. اըͭͷܾΊ͝ͱ  ͲͷΑ͏ͳϢʔβʔ͕࢖͏ͷ͔  ԿΛୡ੒͍ͨ͠ͷ͔  ͲͷΑ͏ͳػೳ͕͋Δͷ͔  ྨࣅαʔϏεͱԿ͕ҧ͏ͷ͔ 

    ϦϦʔε༧ఆ೔͸͍͔ͭ  ऩӹߏ଄͸ͲͷΑ͏ͳ΋ͷ͔  ΞϓϦ໊ 㾎 ແྉͰԻָΛμϥμϥͱָ͠Έ͍ͨਓɺԻ࣭͸ͩ͜ΘΒͳ͍ਓɺͳͲ 㾎 ϚϯωϦԽͨ͠J1PEΛඈͼग़͢ɺؾܰʹԻָΛ୳ͤΔɺμϥμϥͱௌ͚Δ 㾎 ࠃผδϟϯϧผϥϯΩϯάɺݕࡧػೳɺࢹௌػೳɺϙέοτػೳ 㾎 δϟϯϧͷ਺͕࠷΋ଟ͍ɺ৭ʑͳࠃຖͷϥϯΩϯάͰۂ͕ௌ͚Δ 㾎 ೥݄೔ 㾎 ޿ࠂ഑৴ϞσϧʢϑολʔόφʔͱϨΫτόφʔʣ 㾎 .VTJD1PDLFUແྉԻָ࠶ੜΞϓϦGPS:PVUVCF
  3. اըػೳఆٛͱߜΓࠐΈ 㾎ۂΛݟ͚ͭΔ 㾎 ؾʹೖͬͨۂΛ4/4ͰγΣΞ͢Δ͜ͱ͕Ͱ͖Δ 㾎 δϟϯϧผϥϯΩϯάผʹۂΛ୳͢͜ͱ͕Ͱ͖Δ 㾎 ʢ೔ຊҎ֎ʹ΋ʣෳ਺ͷࠃͷϥϯΩϯά͔Β୳ͤΔ 㾎 ϑϦʔϫʔυݕࡧ͕Ͱ͖Δ

    㾎 ਓͷϓϨΠϦετʢϙέοτʣ͔ΒۂΛ୳͢͜ͱ͕Ͱ͖Δ 㾎 1VTI௨஌ͰϥϯΩϯάߋ৽Λ௨஌Ͱ͖Δ 㾎 ࠓ·͞ʹΞϓϦ಺Ͱௌ͔Ε͍ͯΔۂΛ஌Δ͜ͱ͕Ͱ͖Δ 㾎 ࢹௌཤྺ͔ΒϨίϝϯυΛड͚Δ͜ͱ͕Ͱ͖Δ 㾎ۂΛஷΊΔ 㾎 ޷͖ͳۂΛϙέοτ͓ͯ͠ؾʹೖΓϦετΛ࡞Δ͜ͱ͕Ͱ͖Δ 㾎ऩӹԽ 㾎 ը໘ʹ޿ࠂΛදࣔ͢Δ͜ͱ͕Ͱ͖Δ 㾎ۂΛγΣΞ͢Δ
  4. اըػೳఆٛͱߜΓࠐΈ 㾎ۂΛݟ͚ͭΔ 㾎 ؾʹೖͬͨۂΛ4/4ͰγΣΞ͢Δ͜ͱ͕Ͱ͖Δ 㾎 δϟϯϧผϥϯΩϯάผʹۂΛ୳͢͜ͱ͕Ͱ͖Δ 㾎 ʢ೔ຊҎ֎ʹ΋ʣෳ਺ͷࠃͷϥϯΩϯά͔Β୳ͤΔ 㾎 ϑϦʔϫʔυݕࡧ͕Ͱ͖Δ

    㾎 ਓͷϓϨΠϦετʢϙέοτʣ͔ΒۂΛ୳͢͜ͱ͕Ͱ͖Δ 㾎 1VTI௨஌ͰϥϯΩϯάߋ৽Λ௨஌Ͱ͖Δ 㾎 ࠓ·͞ʹΞϓϦ಺Ͱௌ͔Ε͍ͯΔۂΛ஌Δ͜ͱ͕Ͱ͖Δ 㾎 ࢹௌཤྺ͔ΒϨίϝϯυΛड͚Δ͜ͱ͕Ͱ͖Δ 㾎ۂΛஷΊΔ 㾎 ޷͖ͳۂΛϙέοτ͓ͯ͠ؾʹೖΓϦετΛ࡞Δ͜ͱ͕Ͱ͖Δ 㾎ऩӹԽ 㾎 ը໘ʹ޿ࠂΛදࣔ͢Δ͜ͱ͕Ͱ͖Δ 㾎ۂΛγΣΞ͢Δ
  5. σβΠϯશମͷσβΠϯ 㾎 ओʹ৭΍০Γ۩߹ΛܾΊ·͢ 㾎 ڝ߹ͱͳΔΞϓϦαʔϏεͷσβΠϯΛௐࠪ͠·͢ 㾎 ࣗ෼ͨͪͷྑ͞Λ఻͑ΒΕΔσβΠϯʹ͠·͢ 㾎 σβΠϯਪ͠Ͱ͸ͳ͘࢖͍উखΛ࠷ॏࢹ 㾎

    ڧ߽͸ʮࠇʯʮനʯ͕ଟ͍ͷͰɺࠩผԽͱͯ͠໌Δ͍৭Λ࢖͏ 㾎 ݩؾྑ͞ɺΘ͘Θ͘Λදݱ͢΂͘ʮΦϨϯδʯʮ྘ʯʮࠇʯʹܾΊͨ ྫ.VTJD1PDLFU
  6. γεςϜઃܭ಺෦ઃܭ ΞϓϦ಺෦ઃܭ 7JFX $POUSPMMFS 㾎 HFU$PVOUSJFT -JTU$PVOUSZ 㾎 HFU(FOSFT DPVOUSZ*E

    -JTU(FOSF 㾎 HFU*UFNT DPVOUSZ*E HFOSF*E -JTU.VTJD 3BOLJOH4FSWJDF ϥϯΩϯά഑৴
  7. γεςϜઃܭ࡞ۀચ͍ग़͠ 㾎 ४උ 㾎 αʔόʔͷηοτΞοϓʢQIQ OHJOY NZTRM FUDʣ 㾎 ։ൃϨϙδτϦͷ४උ

    㾎 ϥϯΩϯάੜ੒ 㾎 ࠃผδϟϯϧผϥϯΩϯά৘ใͷऔಘ 㾎 :PVUVCF৘ใඥ෇͚ 㾎 ഑৴αʔόʔ΁σϓϩΠδϣϒ 㾎 ΞϓϦ࡞੒ 㾎 ϥϯΩϯάදࣔػೳ 㾎 ۂৄࡉදࣔػೳ 㾎 ۂ࠶ੜػೳ 㾎 FUD 㾎 ʜ 㾎 ϦϦʔε ચ͍ग़ͤͳ͍৔߹ʹ͸ʁ ˠࣗ໰ࣗ౴ͯ͠ɺԿʹ٧·͍ͬͯΔͷ͔Λݟ͚ͭΔ ˠϝϯλʔͱ࿩ͯ͠ΈΑ͏
  8. γεςϜઃܭεέδϡʔϧܾΊ 㾎 ४උ 㾎 αʔόʔͷηοτΞοϓʢQZUIPO OHJOY KFOLJOT FUDʣɹ݄X 㾎 ։ൃϨϙδτϦͷ४උɹ݄X

    㾎 ϥϯΩϯάੜ੒ 㾎 ࠃผδϟϯϧผϥϯΩϯά৘ใͷऔಘɹ݄X 㾎 :PVUVCF৘ใඥ෇͚ɹ݄X 㾎 ഑৴αʔόʔ΁σϓϩΠδϣϒɹ݄X 㾎 ΞϓϦ࡞੒ 㾎 ϥϯΩϯάදࣔػೳɹ݄X 㾎 ۂৄࡉදࣔػೳɹ݄X 㾎 ۂ࠶ੜػೳɹ݄X 㾎 FUD 㾎 ʜ 㾎 ϦϦʔεɹ݄೔༧ఆ ϚΠϧετʔϯΛઃఆ͢Δ ˠத໨ඪΛ͍͔ͭ͘࡞ΓɺͦΕʹ޲͔ͬͯؤுΔ ˠۙ৔ͷεέδϡʔϧ͕ݟ͍͑ͯΔํ͕஗ΕͮΒ͍
  9. γεςϜઃܭٕज़తෆ໌఺ͷྻڍ 㾎 ४උ 㾎 QIQ OHJOY NZTRMΛΠϯετʔϧ͢Δʹ͸ʁ 㾎 ϥϯΩϯάੜ੒ 㾎

    J5VOFT344ͷ࢖͍ํ͸ʁ 㾎 :PVUVCF"1*͸ͲͷΑ͏ͳ΋ͷ͔ʁͲ͏΍ͬͯ࢖͏ʁ 㾎 ΞϓϦ࡞੒ 㾎 ඇಉظ"1*௨৴͸ͲͷΑ͏ʹߦ͏͔ʁ 㾎 :PVUVCFͷը૾Λਖ਼ํܗʹද͍͚ࣔͨ͠Ͳɾɾɾʁ 㾎 FUD ɾͰ͖Δ͚ͩ୔ࢁચ͍ग़͢ ݸʙ  ɾચ͍ग़͠੾Δͱɺ৺ʹ༨༟͕ੜ·ΕΔ ɾ࣮૷લʹ՝୊ղܾ͢Δͱɺεέδϡʔϧ͕஗ΕͮΒ͍
  10. ։ൃઃܭ࣮૷ݕূʢྫʣ var Ranking = function () {} Ranking.prototype.getItems = function

    (cId, gId) { } // ฦ٫ // ݁ՌͷՃ޻ // 0݅νΣοΫ // apiίʔϧ ·ͣ͸ઃܭΛॻ͘
  11. ։ൃઃܭ࣮૷ݕূʢྫʣ var Ranking = function () {} Ranking.prototype.getItems = function

    (cId, gId) { } // ฦ٫ // ݁ՌͷՃ޻ // 0݅νΣοΫ // apiίʔϧ ͜͜Ͱςετ
  12. ։ൃઃܭ࣮૷ݕূʢྫʣ var Ranking = function () {} Ranking.prototype.getItems = function

    (cId, gId) { var results = api(‘/ranking/items’, {cid: cid, gid: gid}); } ͙͢ʹςετ // ฦ٫ // ݁ՌͷՃ޻ // 0݅νΣοΫ // apiίʔϧ
  13. ։ൃઃܭ࣮૷ݕূʢྫʣ var Ranking = function () {} Ranking.prototype.getItems = function

    (cId, gId) { var results = api(‘/ranking/items’, {cid: cid, gid: gid}); if (results === null || results.length === 0) return []; } ·ͨςετ // ฦ٫ // ݁ՌͷՃ޻ // 0݅νΣοΫ // apiίʔϧ
  14. ։ൃઃܭ࣮૷ݕূʢྫʣ var Ranking = function () {} Ranking.prototype.getItems = function

    (cId, gId) { var results = api(‘/ranking/items’, {cid: cid, gid: gid}); if (results === null || results.length === 0) return []; var musicList = this._createMusicList(results); return musicList; } ·ͨ·ͨςετ // ฦ٫ // ݁ՌͷՃ޻ // 0݅νΣοΫ // apiίʔϧ
  15. ։ൃઃܭ࣮૷ݕূʢྫʣ var Ranking = function () {} Ranking.prototype.getItems = function

    (cId, gId) { var results = api(‘/ranking/items’, {cid: cid, gid: gid}); if (results === null || results.length === 0) return []; var musicList = this._createMusicList(results); return musicList; } ׬੒ // ฦ٫ // ݁ՌͷՃ޻ // 0݅νΣοΫ // apiίʔϧ
  16. ։ൃϫʔΫϑϩʔৼΓฦΓ اը σβΠϯ શମઃܭ ։ൃ ϦϦʔε 㾎 ͭͷܾΊࣄ 㾎 .71

    㾎 ը໘ߏ੒ 㾎 ϦϦʔεϊʔτ 㾎 ݕূ 㾎 શମσβΠϯ 㾎 ΞΠίϯ੍࡞ 㾎 ը໘σβΠϯ 㾎 ݕূ 㾎 γεςϜશମ૾ 㾎 ಺෦ઃܭ 㾎 ࡞ۀચ͍ग़͠ 㾎 εέδϡʔϦϯά 㾎 ٕज़తෆ໌఺ͷྻڍ 㾎 ઃܭͱ࣮૷ͷ෼཭ 㾎 ݕূΛࡉ͔͘
  17. ։ൃϫʔΫϑϩʔৼΓฦΓ اը σβΠϯ શମઃܭ ։ൃ ϦϦʔε 㾎 ͭͷܾΊࣄ 㾎 .71

    㾎 ը໘ߏ੒ 㾎 ϦϦʔεϊʔτ 㾎 ݕূ 㾎 શମσβΠϯ 㾎 ΞΠίϯ੍࡞ 㾎 ը໘σβΠϯ 㾎 ݕূ 㾎 γεςϜશମ૾ 㾎 ಺෦ઃܭ 㾎 ࡞ۀચ͍ग़͠ 㾎 εέδϡʔϦϯά 㾎 ٕज़తෆ໌఺ͷྻڍ 㾎 ઃܭͱ࣮૷ͷ෼཭ 㾎 ݕূΛࡉ͔͘ ࡞ۀΛ෼͚Δݕূ͸ࡉ͔͘
  18. շదίʔσΟϯά(PPHMFݕࡧྫ 㾎 ݴޠ໊   ػೳ໊  ʜ 㾎 ྫɿʮQZUIPOMJTUTPSULFZʯɺʮQZUIPOUSZFYDFQUTUBDLUSBDFʯɺFUD

    㾎 ؀ڥ   ػೳ໊   ΍Γ͍ͨ͜ͱ  ʜ 㾎 ྫɿʮMJOVYDQV࢖༻཰֬ೝʯɺʮDFOUPTγΣϧEBUF೔લʯɺFUD 㾎 ݴޠ໊   ػೳ໊  OPUXPSL  ؀ڥ ʜ 㾎 ྫɿʮQZUIPOQMPUDPMPSOPUXPSLNBDʯ 㾎 ػೳ໊   ௐ΂͍ͨ͜ͱ ʜ 㾎 ྫɿʮUXJUUFSTFBSDIBQJMJNJUʯ 㾎 ݴޠ໊   Τϥʔ৘ใ ʜ 㾎 ྫɿʮQZUIPOTPSU5ZQF&SSPSDNQJTBOJOWBMJELFZXPSEBSHVNFOUʜʯ 㾎 ྫɿʮQZUIPO*NQPSU&SSPS/PNPEVMFOBNFEʯ
  19. ໰୊ղܾ࣮ફ࡞ۀ߲໨Λચ͍ग़ͦ͏ 㾎 άϥϑඳըͷϥΠϒϥϦΛೖख͢Δ 㾎 σϞαΠτΛࢀߟʹɺ๮άϥϑΛ࣮ͭ૷ͯ͠ΈΔ 㾎 ͭ໨ͷ๮άϥϑΛදࣔ͢Δ 㾎 ͭ໨ͷάϥϑʢંΕઢάϥϑʣΛදࣔ͢Δ 㾎

    Z࣠ͷࠨΛ๮άϥϑʹɺӈΛંΕઢάϥϑʹׂΓ౰ͯΔ 㾎 ຌྫΛදࣔͯ͠ΈΔ 㾎 ๮άϥϑΛάϥσʔγϣϯʹ͢Δ 㾎 άϥϑͷԼʹγϟυ΢Λදࣔ͢Δ 㾎 "1*݁ՌΛಈతʹදࣔͰ͖ΔΑ͏ʹ͢Δ 㾎 ࡉ͔͘දࣔσβΠϯΛमਖ਼͢Δ 㾎 άϥϑαΠζ ઢͷଠ͞ Z࣠ͷิॿઢ FUD ࡞ۀ಺༰͕ᡰʹམͪΔ·Ͱɺ ϒϨΠΫμ΢ϯ͢Δ
  20. ໰୊ղܾ࣮ફෆ໌఺Λચ͍ग़ͦ͏ 㾎 άϥϑඳըͷϥΠϒϥϦΛೖख͢Δ 㾎 σϞαΠτΛࢀߟʹɺ๮άϥϑΛ࣮ͭ૷ͯ͠ΈΔ 㾎 ͭ໨ͷ๮άϥϑΛදࣔ͢Δ 㾎 ͭ໨ͷάϥϑʢંΕઢάϥϑʣΛදࣔ͢Δ 㾎

    Z࣠ͷࠨΛ๮άϥϑʹɺӈΛંΕઢάϥϑʹׂΓ౰ͯΔ 㾎 ຌྫΛදࣔͯ͠ΈΔ 㾎 ๮άϥϑΛάϥσʔγϣϯʹ͢Δ 㾎 άϥϑͷԼʹγϟυ΢Λදࣔ͢Δ 㾎 "1*݁ՌΛಈతʹදࣔͰ͖ΔΑ͏ʹ͢Δ 㾎 ࡉ͔͘දࣔσβΠϯΛमਖ਼͢Δ 㾎 άϥϑαΠζ ઢͷଠ͞ Z࣠ͷิॿઢ FUD
  21. 㾎 άϥϑඳըͷϥΠϒϥϦΛೖख͢Δ 㾎 ݕࡧϫʔυʮ+BWBTDSJQUάϥϑϥΠϒϥϦʯ 㾎 σϞαΠτΛࢀߟʹɺ๮άϥϑΛ࣮ͭ૷ͯ͠ΈΔ 㾎 ݕࡧϫʔυʮ$IBSUKT๮άϥϑʯ 㾎 ͭ໨ͷ๮άϥϑΛදࣔ͢Δ

    㾎 ݕࡧϫʔυʮ$IBSUKTάϥϑෳ਺ʯ 㾎 ͭ໨ͷάϥϑʢંΕઢάϥϑʣΛදࣔ͢Δ 㾎 ݕࡧϫʔυʮ$IBSUKTંΕઢάϥϑʯ 㾎 Z࣠ͷࠨΛ๮άϥϑʹɺӈΛંΕઢάϥϑʹׂΓ౰ͯΔ 㾎 ݕࡧϫʔυʮ$IBSUKTZ࣠ͭʯ 㾎 ຌྫΛදࣔͯ͠ΈΔ 㾎 ݕࡧϫʔυʮ$IBSUKTຌྫΧελϚΠζʯʮ$IBSUKTDVTUPNMFHFOEʯ ໰୊ղܾ࣮ફෆ໌఺Λղফ͠Α͏
  22. 㾎 ๮άϥϑΛάϥσʔγϣϯʹ͢Δ 㾎 ݕࡧϫʔυʮ$IBSUKT๮άϥϑάϥσʔγϣϯʯʮ$IBSUKTCBSHSBEJFOUʯ 㾎 άϥϑͷԼʹγϟυ΢Λදࣔ͢Δ 㾎 ݕࡧϫʔυʮ$IBSUKTDIBSUBSFBTIBEPXʯʮ$IBSUKTDIBSU"SFBCBDLHSPVOEDPMPSʯ 㾎 "1*݁ՌΛಈతʹදࣔͰ͖ΔΑ͏ʹ͢Δ

    㾎 ࡉ͔͘දࣔσβΠϯΛमਖ਼͢Δ 㾎 άϥϑαΠζ ઢͷଠ͞ Z࣠ͷิॿઢ FUD 㾎 ݕࡧϫʔυʮ$IBSUKTHSBQITJ[FSFTQPOTJWFʯ 㾎 ݕࡧϫʔυʮ$IBSUKTCBSXJEUIʯ 㾎 ݕࡧϫʔυʮ$IBSUKTDPOpHZBYJTʯ 㾎 ಈ࡞ςετ 㾎 ׬੒ʂ ໰୊ղܾ࣮ફෆ໌఺Λղফ͠Α͏