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

チームによるいきいきとしたソフトウェア開発/an-alive-team-grows-software

 チームによるいきいきとしたソフトウェア開発/an-alive-team-grows-software

https://pepabo.connpass.com/event/74938/ #師弟登壇2018 での発表資料です。OJTというか、新卒を受け入れたチームにおいて大事にしている中身を紹介しました。

70e13d9877054026fda46d5a5b53a236?s=128

MOROHASHI Kyosuke

January 21, 2018
Tweet

Transcript

  1. νʔϜʹΑΔ ͍͖͍͖ͱͨ͠ιϑτ΢ΣΞ։ൃ ࢣఋొஃ2018 ʲएखΤϯδχΞͷू͍ʳ 2018-01-21 ॾڮګհ @moro 

  2. ‣ (ࣸਅ) ղফͰ͖ͨෆ҆ 

  3.  Kyosuke MOROHASHI moro moro

  4.  Kyosuke MOROHASHI https://speakerdeck.com/moro/

  5. None
  6. None
  7.  http://techlife.cookpad.com/entry/2017/04/06/172601

  8. νʔϜʹΑΔ ͍͖͍͖ͱͨ͠ ιϑτ΢ΣΞ։ൃ 

  9. ‣ ར༻ऀʹՁ஋Λಧ͚ΔͨΊʹɺԿΒ͔ͷιϑτ΢ΣΞΛഔ հͱͯ͠։ൃ͢Δ׆ಈશൠΛ ‣ 1ΤϯδχΞͱ͍͏֯౓͔ΒோΊͨදݱͰ͢ɻ ‣ ͳͷͰɺαʔϏε։ൃɺࣄۀ։ൃɺetc… Ͱ΋͍͍͔΋ ‣ ͬ͘͠ΓདྷΔ֯౓ʹಡΈସ͓͑ͯฉ͖͍ͩ͘͞

    ιϑτ΢ΣΞ։ൃ 
  10. ‣ ར༻ऀʹՁ஋Λಧ͚ΔഔհͨΔʹ͸ɺϓϩάϥϜΛॻͩ͘ ͚Ͱ͸଍Γͳ͍ɻҎԼͷΑ͏ͳશମ͕ඞཁ: ‣ αΠτػೳ΍αʔϏεࢪࡦΛྑ͘͢Δ؍఺ͱ͔ ‣ ར༻ऀͷࠔΓ͝ͱʹدΓఴ͏؍఺ͱ͔ ‣ ։ൃͦΕࣗମΛޮ཰తʹ͢Δ؍఺ͱ͔ ‣

    ࣄۀ/ࣄۀମͱͯ͠ܧଓͰ͖ΔΑ͏ʹ͢Δ؍఺ͱ͔ ιϑτ΢ΣΞ։ൃʺϓϩάϥϜΛॻ͘͜ͱ 
  11. ‣ ͦ͏͍͏ΈΜͳ͕େࣄͳΘ͚Ͱ͢ɻ ‣ ͦͷ͏͑Ͱɺ1ΤϯδχΞ/ϓϩάϥϚʔͱͯ͠ͷ؍఺͔Β
 Ͳ͏͋Γ͍ͨͱࢥ͏͔ɺͱ͍͏࿩Λ͍ͭ΋͍ͯ͠·͢ɺ
 ͱ͍͏࿩Λ͠·͢ɻ ʮશମʯͱͯ͠ͷιϑτ΢ΣΞ։ൃ 

  12. νʔϜʹΑΔ ͍͖͍͖ͱͨ͠ ιϑτ΢ΣΞ։ൃ 

  13. ‣ ֤ϝϯόʔͷ಺తಈػ͚ͮΛҡ࣋ɾ࠶ੜ੒͍ͨ͠ɻ ‣ ͦΕΛଅ͢νʔϜͷ͋ΓΑ͏Λ໨ࢦ͢ɻ ͍͖͍͖ͱͨ͠ 

  14. “ And there's business value in fun - after all

    motivation is a major factor in programmer productivity. 
 ͦΕ͔Βɺʮָ͠͞ʯʹ΋ϏδωεՁ஋͕͋Γ·͢ŠŠ݁ہɺϞνϕʔγϣϯ ͕ͦ͜ϓϩάϥϚͷੜ࢈ੑΛࠨӈ͢ΔͷͰ͢ɻ https://martinfowler.com/bliki/DynamicTyping.html 
 ( http://bliki-ja.github.io/DynamicTyping/ )
  15. “ ΘΕΘΕ͸ػցͰ͸ͳ͍ͷͰɺ΍Γ͍ͨͱࢥ͏ͱ͖ ʹɺԿ͔Λୡ੒Ͱ͖ΔΜͰ͢ɻԿ͔Λୡ੒͢Δʹ͸ɺ ಥ͖ಈ͔͢಺ͳΔྗ͕ඞཁͰ͢ɻͦΕ͸Ϟνϕʔγϣ ϯʹΑͬͯݱΕΔΜͰ͢Ͷɻ ུ ϞνϕʔγϣϯΛ সͬͯ͸͍͚ͳ͍ɻ 「なんでRubyなんか作った!? 迷惑だ!」に対するMatzの答え


    
 http://el.jibun.atmarkit.co.jp/rails/2012/10/ruby-matz-7080.html
  16.  http://modernagile.org/

  17. ‣ ೉͍͜͠ͱΛ͏·͘΍Δʹ͸ɺؔ܎ऀશһͷ
 ओମతͳࢀՃ͕ඞཁͰ͋Δɻ ‣ ʮओମੑʯ͸ଞਓ͕஫ೖͨ͠ΓͰ͖ͳ͍ɻ ‣ ͦΕͧΕͷʮྑ͍࢓ࣄ͕͍ͨ͠ؾ࣋ͪʯΛ
 ৴ͯ͡ɺݟ͚ͭͯɺ૬ޓʹྭ·͋͠͏ɻ ͍͖͍͖ͱͨ͠ 

  18. νʔϜʹΑΔ ͍͖͍͖ͱͨ͠ ιϑτ΢ΣΞ։ൃ 

  19. ‣ ΋Γ΋Γ࣮૷͢ΔएखΤϯδχΞ @iguchi1124 ‣ υϝΠϯΤΩεύʔτ / Done ͷఆٛ / MTGϑΝγϦςʔ

    τ / νʔϜ֎ͱͷ૭ޱ ͳͲΛҰखʹ୲͏σΟϨΫλʔ ‣ ( ͳͷ͚ͩͲɺReactॳಋೖͱ͔΋ͯ͘͠Ε͓ͯΓ͍͢͝ ) ‣ γχΞͳྲྀ͠ͷRubyist (ि2ϦϞʔτ) ‣ ͱɺࢲ @moro ձһࣄۀ෦Ϣʔβʔج൫νʔϜ 
  20. νʔϜʹΑΔ ͍͖͍͖ͱͨ͠ ιϑτ΢ΣΞ։ൃ 

  21. ΤϯδχΞಉ࢜Ͱ ίʔυΛॻ͘ νʔϜͰΑ͍ιϑτ ΢ΣΞʹҭͯΔ νʔϜͱνʔϜͷ֎ͷਓͱ ΈΜͳͰαʔϏεΛಧ͚Δ

  22. ΤϯδχΞಉ࢜Ͱ ίʔυΛॻ͘ νʔϜͰΑ͍ιϑτ ΢ΣΞʹҭͯΔ νʔϜͱνʔϜͷ֎ͷਓͱ ΈΜͳͰαʔϏεΛಧ͚Δ

  23.  http://techlife.cookpad.com/entry/2017/04/06/172601

  24.  http://techlife.cookpad.com/entry/2017/04/06/172601

  25. ‣ πʔϧ΍ϑϨʔϜϫʔΫΛͨͩద༻͢Δ͚ͩͰ͸
 ͏·͍͔͘ͳ͍ɻ ‣ ʮRailsͭΒ͍ʯ໰୊ ‣ എܠʹͳ͍ͬͯͦ͏ͳίϯηϓτΛɺࣗ෼ͨͪͰ
 ͪΌΜͱࢼͯ͠ΈΑ͏ɻ ͜ͷ10೥ͷֶͼ: 

  26.  αʔϏε૚ͱͯ͠ͷ Form Object ΛΑ͘ߟ͑ͯΈΔ

  27.  Value ObjectΛൃݟ͢Δ

  28. ΤϯδχΞಉ࢜Ͱ ίʔυΛॻ͘ νʔϜͰΑ͍ιϑτ ΢ΣΞʹҭͯΔ νʔϜͱνʔϜͷ֎ͷਓͱ ΈΜͳͰαʔϏεΛಧ͚Δ

  29. ‣ ొ࿥தͷσʔλ͸όϦσʔγϣϯΛ؁ͨ͘͠ೖྗத σʔλͰ͸ͳ͍ɺͱ͔ ‣ ʮϑΥʔϜ͔ΒϝΞυͰϢʔβʔొ࿥ͯ͠ར༻͢Δʯ Ҏ֎ͷܖػͰϢʔβʔʹͳΔɺͱ͔ ͜Ε·ͰͷϏδωε͔ΒֶͿ 

  30. ‣ ར༻ऀʹͱͬͯ࢖͍΍͍͢΋ͷʹͳΔΑ͏ʹɺֶΜ ͩ֓೦ʹج͍ͯม͍͑ͯ͘ɻ ‣ ϦϑΝΫλϦϯάͨ͠Γɺ෼ׂͨ͠Γɺ৽نʹ࡞ͬ ͨΓɺ͍ΖΜͳ࡞ઓΛ࢖͍෼͚ͨΓซ༻ͨ͠Γ͢Δɻ ιϑτ΢ΣΞΛҭͯΔ 

  31. ‣ ҭͯΔํ޲ੑ΍ॱ൪͸ɺٕज़తͳཧ༝ͱɺϏδωε ΍ར༻ऀͷؔ৺͝ͱͷόϥϯεʹΑܾͬͯ·Δɻ ‣ ͦͷͨΊʹ΋ɺ͍ΖΜͳ৬ೳΛ࣋ͬͨਓ͕ू·Δ
 νʔϜͰͦ͜ҭͯΒΔɻ νʔϜͰҭͯΔ 

  32. ‣ ;Γ͔͑Γ ‣ ݟੵΓͱܭըͮ͘Γ ͍ΖΜͳϓϥΫςΟε͕͋Δ͚Ͳɺͪΐͬͱͣͭࢼͨ͠: 

  33. ‣ ;Γ͔͑Γ ‣ ͜Ε·ͰʹԿΛ͔ͨ͠ ‣ ݟੵΓͱܭըͮ͘Γ ‣ ͜Ε͔ΒԿΛ͢Δ͔ ͍ΖΜͳϓϥΫςΟε͕͋Δ͚Ͳɺͪΐͬͱͣͭࢼͨ͠: 

  34. 

  35.  ‣ ຖि n ϙΠϯτਐΜͰ͍Δͷ͸Θ͔ͬͨɻ͕ɺ ʮ͍ͭͰ͖Δʯ͔͕ݟ͑ͮΒ͔ͬͨɻ ‣ ࣮ࡍʹॻ͍ͯΈͨΒɺײ͕֮දݱͰ͖ͯͨɻ

  36. 

  37.  ‣ ࣾ಺ͷϓϥΫςΟεΛ༌ೖͨ͠ɻ ‣ υϝΠϯΤΩεύʔτʹ͞Θͬͯ΋Β͏ɻ ‣ େখ༷ʑͷؾ͍ͮͨ͜ͱΛͲΜͲΜ௚͢ɻ

  38.  Χϯόϯʹ5SZΛషΔ

  39.  ‣ TryΛ͍ͭ΋໨ʹ͢ΔΑ͏ʹɺషͬͨɻ ‣ ͜Ε͸ະମݧͩͬͨΑ͏ͳɻ

  40. ‣ ʮ͜Ε·ͰʯʹֶΜͰ ‣ RailsҰൠ΍ΞϓϦέʔγϣϯίʔυͷۤ࿑ ‣ ػೳͷ࢖ΘΕํ ‣ ʮ͜Ε͔ΒʯΛߟ͑Δ ‣ ͪΐͬͱͣͭʮΑ͍ʯઃܭΛ͢Δ

    ‣ ඞཁͳΒٕज़తෛ࠴ΛआΓೖΕΔ ֶशͱϑΟʔυόοΫ 
  41. ‣ ʮ͜Ε·ͰʯʹֶΜͰ ‣ ͜Ε·ͰͷνʔϜͷਐΊํɻ ‣ ࡞Ζ͏ͱͨ͠ػೳͰ΄Μͱ͏ʹඞཁͩͬͨ΋ͷɻ ‣ ʮ͜Ε͔ΒʯΛߟ͑Δ ‣ Try

    ‣ ͜Ε·ͰΛ౿·͑ͨݟੵΓͱܭըͮ͘Γɻ ֶशͱϑΟʔυόοΫ 
  42. ΤϯδχΞಉ࢜Ͱ ίʔυΛॻ͘ νʔϜͰΑ͍ιϑτ ΢ΣΞʹҭͯΔ νʔϜͱνʔϜͷ֎ͷਓͱ ΈΜͳͰαʔϏεΛಧ͚Δ

  43. ʮ஌͍ͬͯͨʯ͜ͱ 

  44. “ ͕ͩɺߴΈʹ౸ୡ͢Δ͜ͱ͕໨తͰ͋Ε͹ɺιϑτ ΢ΣΞ։ൃ͸ʮϓϩάϥϚʔͱͦͷଞେ੎ʯͰ੒ཱ ͢Δ΋ͷͰ͸ͳ͍ɻͦΕ͕ɺաڈ೥ؒͰࢲֶ͕Μ ͩ͜ͱͩɻ — エクストリーム・プログラミング 「第25章 結論」

  45. 

  46. ‣ αʔϏεΛར༻͢ΔϢʔβʔ͞Μ ‣ Ϣʔβʔ͞Μʹ޲͚ͨࢪࡦΛاը͢ΔଞͷνʔϜ ‣ Ϣʔβʔ͞ΜͷࠔΓࣄͷղܾ͕੹຿ͷνʔϜ ‣ ଞͷج൫ܥγεςϜΛ։ൃɾҡ࣋ɾվળ͍ͯ͠ΔνʔϜ ‣ …

    ʮϢʔβʔج൫ʯͷؔ܎ऀ 
  47. ‣ αʔϏεΛར༻͢ΔϢʔβʔ͞Μ ‣ Ϣʔβʔ͞ΜͷࠔΓࣄͷղܾ͕੹຿ͷνʔϜ ‣ ج൫ܥγεςϜΛ։ൃɾҡ࣋ɾվળ͍ͯ͠ΔνʔϜ ‣ Ϣʔβʔج൫νʔϜ ‣ …

    ʮϢʔβʔ͞Μʹ޲͚ͨࢪࡦΛاը͢ΔଞͷνʔϜʯͷؔ܎ऀ 
  48. ‣ ͋ΔࢪࡦͷϦʔνΛ૿΍ͨ͢Ίɺͦ͜ΛϝΠϯͰקΊ͍ͯΔνʔϜͱڞಉͯ͠ɺ Ϣʔβʔσʔλͷѻ͍ΛΨϥοͱม͑ͨɻ
 Ϣʔβʔج൫νʔϜͰ͸αʔόଆAPIΛ࣮૷ͨ͠Γɺ݁Ռͱͯ͠Ϣʔβʔମݧ ͕Ͳ͏͋Δ΂͖͔Λઃܭͨ͠Γɺ࠷ऴ֬ೝͨ͠Γͨ͠ɻiOSΞϓϦಘҙͳਓ͕ গͳ͔ͬͨͨΊɺࢪࡦνʔϜͷΤϯδχΞ͕ࢪࡦͦΕࣗମͷΈͰͳ͘ɺΞϓϦ ্Ͱͷج൫෦෼΋Ұॹʹ࡞ͬͯ͘Εͨɻٕज़ج൫ܥνʔϜ(αʔόଆɺΞϓϦ ଆɺQA)΋ઃܭɾ࣮૷ΛҰॹʹਐΊͯ͘Εͨɻ
 ݁Ռͱ͍͍ͯ͠ײ͡ʹಈ͘΋ͷΛఏڙͰ͖ͨɻ͕ɺେ͖ͳϦϦʔεͩͬͨͷͰ ଟগͷෆ۩߹΋ग़ͯ͠·͍ͬͯΔɻαϙʔτܥνʔϜͱڧௐͯ͠ਵ࣌ରԠதɻ

    ‣ ͱ͍͏ͷΛɺ஥ྑ͘ɺϢʔβʔ͞ΜͷํΛ޲͖ͳ͕Β΍ΕͨͷͰͨ͠ɻ ઌ೔ͷࣄྫ: (͘Θ͘͠͸WebͰ) 
  49.  http://techlife.cookpad.com/entry/2017/04/06/172601

  50. “ ʰॊೈͰ͍͍ײ͡ͷϢʔβʔج൫Λ໨ࢦ͢ʱͱ͍͏ͷ͕͜ͷ ࠶ߏஙϓϩδΣΫτͷ໨తͰ͢ɻ http://techlife.cookpad.com/entry/2017/04/06/172601

  51. ʮ෼͔͖ͬͯͨʯ͜ͱ 

  52. “ 91ͷՁ஋͸ɺϏδωεͷੈքͰ࣮ફ͢΂͖΋ͷͩɻշదʹ฻ ΒͤΔੜ׆ΛૹΔ͚ͩͰͳ͘ɺؔ܎ऀશһ͕͓ޓ͍ʹϦεϖ Ϋτͨ͠ਓؒؔ܎ʹΑͬͯɺ৽͍͠ಇ͖ํΛ։ൃ͢ΔͷͰ͋ Δɻ׆ൃʹੵۃతʹɺੈքʹߩݙͰ͖Διϑτ΢ΣΞΛ࡞Γ ग़͢ͷͰ͋Δɻ૑଄తʹ͍͖͍͖ͱಇ͘ͷͰ͋Δɻ — エクストリーム・プログラミング 「第25章 結論」

  53. ΤϯδχΞಉ࢜Ͱ ίʔυΛॻ͘ νʔϜͰΑ͍ιϑτ ΢ΣΞʹҭͯΔ νʔϜͱνʔϜͷ֎ͷਓͱ ΈΜͳͰαʔϏεΛಧ͚Δ

  54. νʔϜʹΑΔ ͍͖͍͖ͱͨ͠ιϑτ΢ΣΞ։ൃ ࢣఋొஃ2018 ʲएखΤϯδχΞͷू͍ʳ 2018-01-21 ॾڮګհ @moro