Good programmer copies, Great programmer pastes

60e652d0244f47d2da4e1f7e712f9328?s=47 K
July 26, 2019

Good programmer copies, Great programmer pastes

琉球大学の情報産業社会学言論Iの講話で呼ばれたので、1年間こんな感じだったという話をしました

60e652d0244f47d2da4e1f7e712f9328?s=128

K

July 26, 2019
Tweet

Transcript

  1. Good programmer copies Great programmer pastes גࣜձࣾϝϧΧϦ
 ιϑτ΢ΣΞΤϯδχΞɹ্઒ɹܚ

  2. w ্઒ɹܚ ,FJ,BNJLBXBʣ w !DPEFIFY w ϓϩάϥϛϯάݴޠ1FSMͱ(P͕޷͖

  3. IUUQTNFSDBONFSDBSJDPNBSUJDMFT

  4. ུྺ w ླྀٿେֶ޻ֶ෦৘ใ޻ֶՊ΁ೖֶ w ϓϩάϥϛϯάݴޠ1FSMίϛϡχςΟ0LJOBXBQNઃཱ w ϓϩάϥϛϯάೖ໳Πϕϯτ1FSMೖֶࣜ։࢝ w גࣜձࣾλοϓͰΞϧόΠτ w

    גࣜձࣾϝϧΧϦೖࣾ w :"1$0LJOBXBΛ։࠵ w גࣜձࣾϝϧϖΠ΁ग़޲ w ݄ʹגࣜձࣾϝϧΧϦ΁໭Δ
  5. None
  6. None
  7. ͔ΜͨΜʹചΓങ͍͕Ͱ͖ͯ
 ͋Μ͠Μɾ͋ΜͥΜͳ͓औҾ͕Ͱ͖Δ
 ϑϦϚΞϓϦ

  8. None
  9. None
  10. ˔αʔϏε։࢝೔ɿ2013೥7݄ ˔ରԠOSɿAndroidɺiOS ˞8FCϒϥ΢β͔Β΋ར༻Մೳ ˔ར༻ྉɿແྉ ˞ചΕͨͱ͖ͷख਺ྉɿൢചՁ֨ͷ10% ˔ରԠ஍Ҭɾݴޠɿ೔ຊɾ೔ຊޠجຊ࢓༷

  11. ϝϧΧϦͷػೳͷҰྫ

  12. ΦϑΝʔػೳ ߪೖر๬ऀ͕ग़඼ऀʹՁ֨Λ ఏҊͯ͠஋Ҿ͖Λ͓ئ͍͢Δ ػೳɻग़඼ऀ͕ΦϑΝʔΛ
 ঝ୚͢ΔͱɺΦϑΝʔΛૹ৴ ͓ͨ͠٬͞·ͷΈ͕஋Ҿ͖ޙ ͷՁ֨ͰߪೖͰ͖Δ

  13. ࣸਅݕࡧػೳ ୳͍ͨ͠঎඼ͷը૾Λಡ ΈࠐΉͱɺϝϧΧϦ্ʹ ग़඼͞Ε͍ͯΔ঎඼ը૾ Λର৅ʹݕࡧΛߦ͍ɺը ૾ͱಉ͡঎඼΋͘͠͸ྨ ࣅ঎඼ΛݕࡧͰ͖Δ

  14. None
  15. ৽ͨͳՁ஋ΛੜΈͩ͢ ੈքతͳϚʔέοτϓϨΠεΛ૑Δ Create value in a global marketplace where anyone

    can buy & sell
  16. ҰਓͰ͸ୡ੒Ͱ͖ͳ͍େ͖ͳϛογϣϯ ΛɺνʔϜͷྗΛ߹Θͤɺશһ͕࠷େͷ ύϑΥʔϚϯεΛൃش͢Δ͜ͱͰ࣮ݱ͠ ·͢ɻ ੈͷதʹΠϯύΫτΛ༩͑ΔΠϊϕʔγ ϣϯΛੜΈग़ͨ͢Ίɺશһ͕େ୾ʹνϟ Ϩϯδ͠ɺ਺ଟ͘ͷࣦഊ͔Βֶͼɺ࣮ફ ͠·͢ɻ ϝϯόʔશһ͕ͦͷಓͷϓϩϑΣογϣ φϧͱͯ͠ΦʔφʔγοϓΛ࣋ͪɺ೔ʑ

    ͷֶͼΛଵΒͣɺ੒Ռ΍࣮੷ʹίϛοτ ͠·͢ɻ Go Bold େ୾ʹ΍Ζ͏ All for One શͯ͸੒ޭͷͨΊʹ Be ϓϩϑΣογϣφϧ
 Ͱ͋Ε a Pro
  17. ձࣾઃཱ೔ ౦ژɺઋ୆ɺ෱Ԭɺ Palo AltoɺPortlandɺ Boston ΦϑΟε ໿1,800໊ʢ࿈݁ʣ ैۀһ਺ ೥݄೔

  18. ೖࣾͷ͖͔͚ͬ

  19. None
  20. w ϝϧΧϦͷΤϯδχΞϦϯάϒϩάʹײܹͨ͠ w ಡΜͩهࣄ͸ͲΕ΋ߴ౓ͳ͜ͱ͹͔Γ w Ͳ͏΍ͬͨΒ࣮ݱͰ͖ΔΜͩΖ͏ w 

  21. w ϝϧΧϦͷΤϯδχΞϦϯάϒϩάʹײܹͨ͠ w ಡΜͩهࣄ͸ͲΕ΋ߴ౓ͳ͜ͱ͹͔Γ w Ͳ͏΍ͬͨΒ࣮ݱͰ͖ΔΜͩΖ͏ w ೖࣾͨ͠Βશ෦ݟΕΔ͸ͣ

  22. w ϝϧΧϦͬͯͲΜͳձࣾͳΜͩΖ͏ w NFSDBOΛಡΉ w ࣾ಺ͷऔΓ૊ΈΛ஌ΔΊͬͪΌΑͦ͞͏ w ৽ଔͰೖࣾͨ͠ਓͷϒϩάΛಡΉΊͬͪΌΑͦ͞͏ w 

  23. w ϝϧΧϦͬͯͲΜͳձࣾͳΜͩΖ͏ w NFSDBOΛಡΉ w ࣾ಺ͷऔΓ૊ΈΛ஌ΔΊͬͪΌΑͦ͞͏ w ৽ଔͰೖࣾͨ͠ਓͷϒϩάΛಡΉΊͬͪΌΑͦ͞͏ w 5XJUUFSͰͦͷϝϧΧϦͷΤϯδχΞ΁%.

  24. None
  25. None
  26. ͦͯ͠
 ιϑτ΢ΣΞΤϯδχΞʹͳͬͨ

  27. None
  28. ೖ࢛ࣾͯ͠൒ظΛৼΓฦΔ

  29. w 69νʔϜ΁഑ଐ͞ΕΔ w ϝϧΧϦΛ࢖ͬͯ௖͍ͯΔ͓٬༷ͷମݧΛ޲্ͤ͞Δͷ͕໨త w ౰࣌͸ओʹ഑ૹपΓͷମݧΛ޲্ͤ͞ΔͨΊʹίʔυΛॻ͘೔ʑ w ॳΊͯͷ͜ͱ͕ଟ͘ΊͬͪΌ໘ന͔ͬͨ Apr -

    Jun
  30. Develop Monolith Test Deploy Operate Backend Team QA team SRE

    team Release Flow
  31. w 69νʔϜ΁഑ଐ͞ΕΔ w ϝϧΧϦΛ࢖ͬͯ௖͍ͯΔ͓٬༷ͷମݧΛ޲্ͤ͞Δͷ͕໨త w ౰࣌͸ओʹ഑ૹपΓͷମݧΛ޲্ͤ͞ΔͨΊʹίʔυΛॻ͘೔ʑ w ΦϑΝʔػೳͷ։ൃʹ΋ܞΘͬͯͨ w ϝϧΧϦͰ͸"1*(BUFXBZʹඥ෇͍ͨॳͷ.JDSPTFSWJDF

    Apr - Jun
  32. API Gateway Offer service Mercari API Authority service  

           -BTU
  33. w .JDSPTFSWJDFT%FWFMPQNFOUνʔϜ΁഑ଐ w ຊ֨తʹ.POPMJUI͔Β.JDSPTFSWJDFT΁ w ϕʔεͱͳΔαʔϏε܊ͷ։ൃ w ·ͣ͸ग़඼޲͚ػೳͷҠߦΛਐΊͯͨ MJTUJOH 

    w ਫ਼Ӷ෦ୂͩͬͨͷͰֶͼ͕ଟ͘ɺΊͬͪΌָ͔ͬͨ͠ Jul - Sep, Oct - Dec
  34. w .JDSPTFSWJDFT%FWFMPQNFOUνʔϜ΁഑ଐ w ຊ֨తʹ.POPMJUI͔Β.JDSPTFSWJDFT΁ w ϕʔεͱͳΔαʔϏε܊ͷ։ൃ w ·ͣ͸ग़඼޲͚ػೳͷҠߦΛਐΊͯͨ MJTUJOH 

    w ਫ਼Ӷ෦ୂͩͬͨͷͰֶͼ͕ଟ͘ɺΊͬͪΌָ͔ͬͨ͠ Jul - Sep, Oct - Dec ‏8IZ
  35. .POPMJUI.JDSPTFSWJDFT

  36. Monolith Microservices

  37. .POPMJUI.JDSPTFSWJDFT

  38. Listing Shipping Notification Review Purchase Login Timeline Search Search MySQL

    Mercari Monolith Solr
  39. Listing Shipping Notification Review Purchase Login Timeline Search Search MySQL

    Mercari Monolith Solr Scalability Need to scale everything for one part of functionalities.
  40. Listing Shipping Notification Review Purchase Login Timeline Search Search MySQL

    Mercari Monolith Solr Scalability Need to scale everything for one part of functionalities.
  41. Listing Shipping Notification Review Purchase Login Timeline Search Search MySQL

    Mercari Monolith Solr Scalability Need to scale everything for one part of functionalities. Availability If one part is dead, everything is dead...
  42. Listing Shipping Notification Review Purchase Login Timeline Search Search MySQL

    Mercari Monolith Solr Scalability Need to scale everything for one part of functionalities. If one part is dead, everything is dead... Availability
  43. Listing Shipping Notification Review Purchase Login Timeline Search Search MySQL

    Mercari Monolith Solr Scalability Need to scale everything for one part of functionalities. If one part is dead, everything is dead... Availability
  44. Listing Shipping Notification Review Purchase Login Timeline Search Search MySQL

    Mercari Monolith Solr Scalability Need to scale everything for one part of functionalities. If one part is dead, everything is dead... Availability
  45. Listing Shipping Notification Review Purchase Login Timeline Search Search MySQL

    Mercari Monolith Solr Scalability Need to scale everything for one part of functionalities. If one part is dead, everything is dead... Complexity Difficult to add new feature Difficult to try new technologies Difficult to on-boarding Availability
  46. Listing Shipping Notification Review Purchase Login Timeline Search Search MySQL

    Mercari Monolith Solr Scalability Need to scale everything for one part of functionalities. If one part is dead, everything is dead... Complexity Difficult to add new feature Difficult to try new technologies Difficult to on-boarding Velocity Communication overhead Max 32 deployment per day Availability
  47. Listing Shipping Notification Review Purchase Login Timeline Search Search MySQL

    Mercari Monolith Solr Scalability Need to scale everything for one part of functionalities. If one part is dead, everything is dead... Complexity Difficult to add new feature Difficult to try new technologies Difficult to on-boarding Velocity Communication overhead Max 32 deployment per day Availability
  48. Listing Shipping Notification Review Purchase Login Timeline Search Search MySQL

    Mercari Monolith Solr Scalability Need to scale everything for one part of functionalities. If one part is dead, everything is dead... Complexity Difficult to add new feature Difficult to try new technologies Difficult to on-boarding Velocity Communication overhead Max 32 deployment per day Availability
  49. .POPMJUI.JDSPTFSWJDFT

  50. Listing DB Listing team User DB User team Item DB

    Item team Shipping DB Shipping team Timeline DB Timeline team
  51. Listing DB Listing team User DB User team Item DB

    Item team Shipping DB Shipping team Timeline DB Timeline team Resilient If one service is dead, others can continue to work
  52. Listing DB Listing team User DB User team Item DB

    Item team Shipping DB Shipping team Timeline DB Timeline team Resilient If one service is dead, others can continue to work
  53. Listing DB Listing team User DB User team Item DB

    Item team Shipping DB Shipping team Timeline DB Timeline team Resilient If one service is dead, others can continue to work
  54. Listing DB Listing team User DB User team Item DB

    Item team Shipping DB Shipping team Timeline DB Timeline team Resilient If one service is dead, others can continue to work
  55. Listing DB Listing team User DB User team Item DB

    Item team Shipping DB Shipping team Timeline DB Timeline team Resilient If one service is dead, others can continue to work Flexible scaling Each service can scale independently on demand
  56. Listing DB Listing team User DB User team Item DB

    Item team Shipping DB Shipping team Timeline DB Timeline team Resilient If one service is dead, others can continue to work Flexible scaling Each service can scale independently on demand
  57. Item Item Listing DB Listing team User DB User team

    Item DB Item team Shipping DB Shipping team Timeline DB Timeline team Resilient If one service is dead, others can continue to work Flexible scaling Each service can scale independently on demand
  58. Item Item Listing DB Listing team User DB User team

    Item DB Item team Shipping DB Shipping team Timeline DB Timeline team Resilient If one service is dead, others can continue to work Flexible scaling Each service can scale independently on demand Simplicity Easy to add new feature Easy to use well suited technology (DB)
  59. Item Item Listing DB Listing team User DB User team

    Item DB Item team Shipping DB Shipping team Timeline DB Timeline team Resilient If one service is dead, others can continue to work Flexible scaling Each service can scale independently on demand Simplicity Easy to add new feature Easy to use well suited technology (DB) Agility Independent deployement Independent decision in small context
  60. Item Item Listing DB Listing team User DB User team

    Item DB Item team Shipping DB Shipping team Timeline DB Timeline team Resilient If one service is dead, others can continue to work Flexible scaling Each service can scale independently on demand Simplicity Easy to add new feature Easy to use well suited technology (DB) Agility Independent deployement Independent decision in small context
  61. API Gateway Listing service Mercari API Authority service  

        -BTU #FGPSF-BTU
  62. Listing Item User Shipping Shipping A Shipping B Shipping C

    DB DB DB DB DB Service A Service B DB DB
  63. w ࣾ಺ͷಈ͖ w .JDSPTFSWJDFTʹ൐ͬͯ૊৫ͷࡏΓํ΋ߟ͍͖͍͑ͯͨ w εέʔϧ͢Δ૊৫ͷઃܭ w ͲͷαʔϏεͰ͸ͲΜͳॲཧΛ͢΂͖ͳͲ੹຿ͷٞ࿦͕͋Δ w JF

    6TFSTFSWJDFͰ͸ͲΜͳػೳ͕Ϣʔβʔʹؔ࿈͢Δʁ Jul - Sep, Oct - Dec
  64. w גࣜձࣾϝϧϖΠ΁ग़޲ w εϚϗͰ؆୯ʹܾࡁ͕Ͱ͖ΔαʔϏεͷϝϧϖΠΛϦϦʔε w ೔ຊશࠃͷ͓ళͰ࢖͑Δ w ϝϧΧϦͷച্͕ۚ࢖͑Δ w ΧελϚʔαϙʔτ΍ࣄۀऀ৹ࠪͰඞཁͳ.JDSPTFSWJDFTͷ։ൃ

    w ओʹ৹ࠪ࣌ؒͷ୹ॖʢࣗಈʣԽ΁ߩݙ Jan - Mar, Apr - Jun
  65. Develop Service B Test Deploy Operate Service B Team Develop

    Service A Test Deploy Operate Service A Team Develop Service C Test Deploy Operate Service C Team Release Flow
  66. IUUQTTQFBLFSEFDLDPNDPEFIFYDISPNFBTBTFSWJDFJOHP

  67. ιϑτ΢ΣΞΤϯδχΞͱͯ͠ ಇ͍ͯΈͯ

  68. خ͍͠ɺָ͍͜͠ͱ

  69. w େྔͷιʔείʔυͷதʹҳࡐͳίʔυΛݟ͚ͭͨ࣌ w 1)1෼͔Βͳ͍ɺͰ΋͜͏͍͏΍Γํ͕͋Δͷ͔ʜ w εʔύʔΤϯδχΞ͕ίϝϯτʹ࢒ͨ͠࠷ߴͷυΩϡϝϯτΛ
 ݟ͚ͭͨ࣌ w ࣗ෼ͰΦʔφʔγοϓΛ࣋ͬͯ։ൃ͍ͯ͘͠ w

    ઃܭɺΞʔΩςΫνϟͷબ୒ w %#ͳͲͷϛυϧ΢ΣΞͷௐ੔ w αʔϏεΛ࡞ΔաఔͰੜ·ΕͨϥΠϒϥϦΛҭ͍ͯͯ͘ w ຍ࠿ͱҰॹ
  70. ΍Γ͕͍

  71. w ઃܭͰࣗ෼ͷߟ͕͑ਖ਼͍͔͠ɺͦͷಓͷϓϩʹͿ͚ͭΒΕΔ࣌ w ٞ࿦͕௕Ҿ͍ͯɺࣗ෼ͷҙݟ͕௨ΔͱΊͬͪΌؾ͍͍࣋ͪ w ࣗ෼ͷ࡞ͬͯΔػೳ͕͓٬༷ʹتΜͰ΋ΒͬͯΔ࣌ w ϦϦʔεͨ͠ޙʹΤΰαͯ͠Δ w ͦͷ༷ࢠΛݟͳ͕ΒνʔϜͰඒຯ͍͠͝൧৯΂ʹߦ͘

    w ίετ࡟ݮͰ͖ͨͱ͖ͷ૘շײ w ύζϧ͕ղ͚ͨ࣌Έ͍ͨͳײ͡
  72. ࣾձਓʹͳͬͯ

  73. w d·Ͱ͕ίΞλΠϜ w ͜ͷ࣌ؒͷؒۈ຿͍ͯ͠Ε͹޷͖ͳ࣌ؒʹग़ࣾɺୀࣾͰ͖Δ w ޷͖ͳ֨޷Ͱग़ࣾ w ͍͍ͩͨδʔϯζɺՆ͸αϯμϧ w ෭ۀਪ঑ͳͷͰ෭ۀ΋ͯ͠Δ

    w ࠷ॳ͸ࣗਬ͚ͯͨ͠Ͳɺ࠷ۙ໘౗ʹͳͬͯ֎৯͹͔Γ w ۙྡͷҿ৯ళ͍͍͕ͩͨৗ࿈ w ԕ͘ͷ͓ళʹߦ͘Α͏ʹͯ͠Δ w ձࣾͷਓͱͷҿΈձ΋૿͑ͨ w ޷͖ͳ͚ͩίʔυΛॻ͍͕ͯ΋Β͑Δ
  74. ͍͍͜ͱ͹͔Γʜ

  75. w ΋ͪΖΜਏ͍ͱ͖΋͋Δ w Ͱ͖Δ͚ͩҰਓͰ๊͑ࠐ·ͳ͍Α͏ʹͯ͠Δ w ࣗ༝ͳ؀ڥͳͨΊɺࣗ෼͕ಇ࣌ؒ͘Λௐ੔͠ͳ͍ͱ͍͚ͳ͍ w ϑϨοΫε੍ͱ͸͍͑ɺ݄Ͱಇ͔ͳ͖Ό͍͚ͳ͍࣌ؒ͸ܾ·ͬͯΔ w ಇ͖͗͢Δਓ͸͍ͳ͍͚Ͳۤઓͯ͠Δͱ͖͸࢒ۀ͕ͪ͠

    w ͦͷ࣌ͷ࣮ྗͱܦݧͱ؀ڥʢӡʣ͕ࠨӈ͢Δؾ͕͢Δʜ
  76. w ΋ͪΖΜਏ͍ͱ͖΋͋Δ w Ͱ͖Δ͚ͩҰਓͰ๊͑ࠐ·ͳ͍Α͏ʹͯ͠Δ w ࣗ༝ͳ؀ڥͳͨΊɺࣗ෼͕ಇ࣌ؒ͘Λௐ੔͠ͳ͍ͱ͍͚ͳ͍ w ϑϨοΫε੍ͱ͸͍͑ɺ݄Ͱಇ͔ͳ͖Ό͍͚ͳ͍࣌ؒ͸ܾ·ͬͯΔ w ಇ͖͗͢Δਓ͸͍ͳ͍͚Ͳۤઓͯ͠Δͱ͖͸࢒ۀ͕ͪ͠

    w ͦͷ࣌ͷ࣮ྗͱܦݧͱ؀ڥʢӡʣ͕ࠨӈ͢Δؾ͕͢Δʜ
  77. w ࣾձਓҰ೥໨ w ॳΊͯͷࣾձਓͳͷͰܦݧ͕ͳ͍ w ؀ڥʢӡʣΛྑ͘͢Δํ๏͕͋Δͷ͔ʜ  w ͋Δ͔΋͠Εͳ͍͚Ͳ๻͸஌Βͳ͍ w

    ػձΛ૿΍ͨ͢Ίʹ৭Μͳਓʹग़ձ͏ͷ͸༗Γͩͱࢥ͏ w ࣮ྗͳΒ஁͑ํ࣍ୈͰ޲্͢Δ
  78. None
  79. Good programmer copies

  80. w ʬ໊ɾεଞʭࣸ͠ɻෳࣸʢ͢Δ͜ͱʣɻʮॻྨΛʕ͢ΔʯʮผͷهԱഔମ ʹʕ͢ΔʯʮʕΛऔΔʯɻ໛฿ʢ͢Δ͜ͱʣɻ໛଄඼ɻ IUUQTKBXJLJQFEJBPSHXJLJ&#&&#$ ίϐʔ

  81. w ઌਓͷ໛฿͢Δ w େ఍ͷ͜ͱ͸طʹରॲ͞Ε͍ͯΔ w ࣗ෼͕਎ʹ͚͍ͭͨεΩϧͷಓͷϓϩΛ໛฿͢Δ w ޮ཰Α͘৘ใऩूͷεΩϧ w ϞνϕʔγϣϯΛҡ࣋͢ΔεΩϧ

    w ௕͘׆༻Ͱ͖ΔΑ͏ͳεΩϧ w How to copy for your skill
  82. w ઌਓͷ໛฿͢Δ w େ఍ͷ͜ͱ͸طʹରॲ͞Ε͍ͯΔ w ࣗ෼͕਎ʹ͚͍ͭͨεΩϧͷಓͷϓϩΛ໛฿͢Δ w ޮ཰Α͘৘ใऩूͷεΩϧ w ϞνϕʔγϣϯΛҡ࣋͢ΔεΩϧ

    w ௕͘׆༻Ͱ͖ΔΑ͏ͳεΩϧ w શͯΛԿ΋ߟ͑ͣʹؙύΫϦ͢ΔΘ͚͡Όͳ͍ How to copy for your skill
  83. Great programmer pastes

  84. w ίϐʔͨ͠΋ͷΛผͷ৔ॴͳͲ΁ϖʔετʢసࣸɾష෇ʣ͢Δͱ͍͏ૢ࡞ Λද͢ίϯϐϡʔλ༻ޠͰ͋Δɻ IUUQTKBXJLJQFEJBPSHXJLJίϐʔɾΞϯυɾϖʔετ ϖʔετ

  85. w ໛฿ͨ͜͠ͱΛΞ΢τϓοτ͢Δ w ໛฿ͯ͠ͳ͍͜ͱ΋Ξ΢τϓοτ͢Δ w ࣗ෼͕ಘͨεΩϧΛ࣍ͷਓʹ޲͚ͯΞ΢τϓοτ͢Δ w ϒϩά΍4/4౳ɺΦϯϥΠϯͰਓ໨ʹͭ͘ͱ͜Ζ w ΋ͪΖΜ௚઀ڭ͑ͯ͋͛Δͷ΋Ξ΢τϓοτ

    w ͜ΕΛ܁Γฦ͢ͱࣅͨଐੑͷਓ຺΋޿͕Δ How to paste your skill
  86. ίϐϖͰ࠷ߴͷਓࡐ΁

  87. ·ͱΊ

  88. w ೖ͔ࣾͯ͠Β೥໨ͰֶΜͩ͜ͱ w ໛฿͢Δ͜ͱͷେ੾͞ w Ξ΢τϓοτ͢Δॴʹٕज़ʢεΩϧʣ͕ू·Δ w ࣌ؒͷଟֶ͍ੜ࣌୅ʹ͜ΕΛ஌Γ͔ͨͬͨ