https://pepabo.connpass.com/event/74938/ #師弟登壇2018 での発表資料です。OJTというか、新卒を受け入れたチームにおいて大事にしている中身を紹介しました。
νʔϜʹΑΔ͍͖͍͖ͱͨ͠ιϑτΣΞ։ൃࢣఋొஃ2018 ʲएखΤϯδχΞͷू͍ʳ2018-01-21ॾڮګհ @moro
View Slide
‣ (ࣸਅ)ղফͰ͖ͨෆ҆
Kyosuke MOROHASHImoro moro
Kyosuke MOROHASHIhttps://speakerdeck.com/moro/
http://techlife.cookpad.com/entry/2017/04/06/172601
νʔϜʹΑΔ͍͖͍͖ͱͨ͠ιϑτΣΞ։ൃ
‣ ར༻ऀʹՁΛಧ͚ΔͨΊʹɺԿΒ͔ͷιϑτΣΞΛഔհͱͯ͠։ൃ͢Δ׆ಈશൠΛ‣ 1ΤϯδχΞͱ͍͏͔֯ΒோΊͨදݱͰ͢ɻ‣ ͳͷͰɺαʔϏε։ൃɺࣄۀ։ൃɺetc… Ͱ͍͍͔‣ ͬ͘͠ΓདྷΔ֯ʹಡΈସ͓͑ͯฉ͖͍ͩ͘͞ιϑτΣΞ։ൃ
‣ ར༻ऀʹՁΛಧ͚ΔഔհͨΔʹɺϓϩάϥϜΛॻ͚ͩ͘ͰΓͳ͍ɻҎԼͷΑ͏ͳશମ͕ඞཁ:‣ αΠτػೳαʔϏεࢪࡦΛྑ͘͢Δ؍ͱ͔‣ ར༻ऀͷࠔΓ͝ͱʹدΓఴ͏؍ͱ͔‣ ։ൃͦΕࣗମΛޮతʹ͢Δ؍ͱ͔‣ ࣄۀ/ࣄۀମͱͯ͠ܧଓͰ͖ΔΑ͏ʹ͢Δ؍ͱ͔ιϑτΣΞ։ൃʺϓϩάϥϜΛॻ͘͜ͱ
‣ ͦ͏͍͏ΈΜͳ͕େࣄͳΘ͚Ͱ͢ɻ‣ ͦͷ͏͑Ͱɺ1ΤϯδχΞ/ϓϩάϥϚʔͱͯ͠ͷ؍͔Β Ͳ͏͋Γ͍ͨͱࢥ͏͔ɺͱ͍͏Λ͍͍ͭͯ͠·͢ɺ ͱ͍͏Λ͠·͢ɻʮશମʯͱͯ͠ͷιϑτΣΞ։ൃ
‣ ֤ϝϯόʔͷతಈػ͚ͮΛҡ࣋ɾ࠶ੜ͍ͨ͠ɻ‣ ͦΕΛଅ͢νʔϜͷ͋ΓΑ͏Λࢦ͢ɻ͍͖͍͖ͱͨ͠
“And there's business value in fun - afterall motivation is a major factor inprogrammer productivity. ͦΕ͔Βɺʮָ͠͞ʯʹϏδωεՁ͕͋Γ·݁͢ہɺϞνϕʔγϣϯ͕ͦ͜ϓϩάϥϚͷੜ࢈ੑΛࠨӈ͢ΔͷͰ͢ɻhttps://martinfowler.com/bliki/DynamicTyping.html ( http://bliki-ja.github.io/DynamicTyping/ )
“ΘΕΘΕػցͰͳ͍ͷͰɺΓ͍ͨͱࢥ͏ͱ͖ʹɺԿ͔ΛୡͰ͖ΔΜͰ͢ɻԿ͔Λୡ͢Δʹɺಥ͖ಈ͔͢ͳΔྗ͕ඞཁͰ͢ɻͦΕϞνϕʔγϣϯʹΑͬͯݱΕΔΜͰ͢Ͷɻ ུϞνϕʔγϣϯΛস͍͚ͬͯͳ͍ɻ「なんでRubyなんか作った!? 迷惑だ!」に対するMatzの答え http://el.jibun.atmarkit.co.jp/rails/2012/10/ruby-matz-7080.html
http://modernagile.org/
‣ ͍͜͠ͱΛ͏·͘Δʹɺؔऀશһͷ ओମతͳࢀՃ͕ඞཁͰ͋Δɻ‣ ʮओମੑʯଞਓ͕ೖͨ͠ΓͰ͖ͳ͍ɻ‣ ͦΕͧΕͷʮྑ͍ࣄ͕͍ͨ͠ؾ࣋ͪʯΛ ৴ͯ͡ɺݟ͚ͭͯɺ૬ޓʹྭ·͋͠͏ɻ͍͖͍͖ͱͨ͠
‣ ΓΓ࣮͢ΔएखΤϯδχΞ @iguchi1124‣ υϝΠϯΤΩεύʔτ / Done ͷఆٛ / MTGϑΝγϦςʔτ / νʔϜ֎ͱͷ૭ޱ ͳͲΛҰखʹ୲͏σΟϨΫλʔ‣ ( ͳͷ͚ͩͲɺReactॳಋೖͱ͔ͯ͘͠Ε͓ͯΓ͍͢͝ )‣ γχΞͳྲྀ͠ͷRubyist (ि2ϦϞʔτ)‣ ͱɺࢲ @moroձһࣄۀ෦Ϣʔβʔج൫νʔϜ
ΤϯδχΞಉ࢜ͰίʔυΛॻ͘νʔϜͰΑ͍ιϑτΣΞʹҭͯΔνʔϜͱνʔϜͷ֎ͷਓͱΈΜͳͰαʔϏεΛಧ͚Δ
‣ πʔϧϑϨʔϜϫʔΫΛͨͩద༻͢Δ͚ͩͰ ͏·͍͔͘ͳ͍ɻ‣ ʮRailsͭΒ͍ʯ‣ എܠʹͳ͍ͬͯͦ͏ͳίϯηϓτΛɺࣗͨͪͰ ͪΌΜͱࢼͯ͠ΈΑ͏ɻ͜ͷ10ͷֶͼ:
αʔϏεͱͯ͠ͷ Form Object ΛΑ͘ߟ͑ͯΈΔ
Value ObjectΛൃݟ͢Δ
‣ ొதͷσʔλόϦσʔγϣϯΛͨ͘͠ೖྗதσʔλͰͳ͍ɺͱ͔‣ ʮϑΥʔϜ͔ΒϝΞυͰϢʔβʔొͯ͠ར༻͢ΔʯҎ֎ͷܖػͰϢʔβʔʹͳΔɺͱ͔͜Ε·ͰͷϏδωε͔ΒֶͿ
‣ ར༻ऀʹͱ͍͍ͬͯ͢ͷʹͳΔΑ͏ʹɺֶΜͩ֓೦ʹج͍ͯม͍͑ͯ͘ɻ‣ ϦϑΝΫλϦϯάͨ͠Γɺׂͨ͠Γɺ৽نʹ࡞ͬͨΓɺ͍ΖΜͳ࡞ઓΛ͍͚ͨΓซ༻ͨ͠Γ͢ΔɻιϑτΣΞΛҭͯΔ
‣ ҭͯΔํੑॱ൪ɺٕज़తͳཧ༝ͱɺϏδωεར༻ऀͷؔ৺͝ͱͷόϥϯεʹΑܾͬͯ·Δɻ‣ ͦͷͨΊʹɺ͍ΖΜͳ৬ೳΛ࣋ͬͨਓ͕ू·Δ νʔϜͰͦ͜ҭͯΒΔɻνʔϜͰҭͯΔ
‣ ;Γ͔͑Γ‣ ݟੵΓͱܭըͮ͘Γ͍ΖΜͳϓϥΫςΟε͕͋Δ͚Ͳɺͪΐͬͱͣͭࢼͨ͠:
‣ ;Γ͔͑Γ‣ ͜Ε·ͰʹԿΛ͔ͨ͠‣ ݟੵΓͱܭըͮ͘Γ‣ ͜Ε͔ΒԿΛ͢Δ͔͍ΖΜͳϓϥΫςΟε͕͋Δ͚Ͳɺͪΐͬͱͣͭࢼͨ͠:
‣ ຖि n ϙΠϯτਐΜͰ͍ΔͷΘ͔ͬͨɻ͕ɺʮ͍ͭͰ͖Δʯ͔͕ݟ͑ͮΒ͔ͬͨɻ‣ ࣮ࡍʹॻ͍ͯΈͨΒɺײ͕֮දݱͰ͖ͯͨɻ
‣ ࣾͷϓϥΫςΟεΛ༌ೖͨ͠ɻ‣ υϝΠϯΤΩεύʔτʹ͞ΘͬͯΒ͏ɻ‣ େখ༷ʑͷؾ͍ͮͨ͜ͱΛͲΜͲΜ͢ɻ
Χϯόϯʹ5SZΛషΔ
‣ TryΛ͍ͭʹ͢ΔΑ͏ʹɺషͬͨɻ‣ ͜ΕະମݧͩͬͨΑ͏ͳɻ
‣ ʮ͜Ε·ͰʯʹֶΜͰ‣ RailsҰൠΞϓϦέʔγϣϯίʔυͷۤ࿑‣ ػೳͷΘΕํ‣ ʮ͜Ε͔ΒʯΛߟ͑Δ‣ ͪΐͬͱͣͭʮΑ͍ʯઃܭΛ͢Δ‣ ඞཁͳΒٕज़తෛ࠴ΛआΓೖΕΔֶशͱϑΟʔυόοΫ
‣ ʮ͜Ε·ͰʯʹֶΜͰ‣ ͜Ε·ͰͷνʔϜͷਐΊํɻ‣ ࡞Ζ͏ͱͨ͠ػೳͰ΄Μͱ͏ʹඞཁͩͬͨͷɻ‣ ʮ͜Ε͔ΒʯΛߟ͑Δ‣ Try‣ ͜Ε·ͰΛ౿·͑ͨݟੵΓͱܭըͮ͘ΓɻֶशͱϑΟʔυόοΫ
ʮ͍ͬͯͨʯ͜ͱ
“͕ͩɺߴΈʹ౸ୡ͢Δ͜ͱ͕తͰ͋ΕɺιϑτΣΞ։ൃʮϓϩάϥϚʔͱͦͷଞେʯͰཱ͢ΔͷͰͳ͍ɻͦΕ͕ɺաڈؒͰࢲֶ͕Μͩ͜ͱͩɻ— エクストリーム・プログラミング 「第25章 結論」
‣ αʔϏεΛར༻͢ΔϢʔβʔ͞Μ‣ Ϣʔβʔ͞Μʹ͚ͨࢪࡦΛاը͢ΔଞͷνʔϜ‣ Ϣʔβʔ͞ΜͷࠔΓࣄͷղܾ͕ͷνʔϜ‣ ଞͷج൫ܥγεςϜΛ։ൃɾҡ࣋ɾվળ͍ͯ͠ΔνʔϜ‣ …ʮϢʔβʔج൫ʯͷؔऀ
‣ αʔϏεΛར༻͢ΔϢʔβʔ͞Μ‣ Ϣʔβʔ͞ΜͷࠔΓࣄͷղܾ͕ͷνʔϜ‣ ج൫ܥγεςϜΛ։ൃɾҡ࣋ɾվળ͍ͯ͠ΔνʔϜ‣ Ϣʔβʔج൫νʔϜ ‣ …ʮϢʔβʔ͞Μʹ͚ͨࢪࡦΛاը͢ΔଞͷνʔϜʯͷؔऀ
‣ ͋ΔࢪࡦͷϦʔνΛ૿ͨ͢Ίɺͦ͜ΛϝΠϯͰקΊ͍ͯΔνʔϜͱڞಉͯ͠ɺϢʔβʔσʔλͷѻ͍ΛΨϥοͱม͑ͨɻ Ϣʔβʔج൫νʔϜͰαʔόଆAPIΛ࣮ͨ͠Γɺ݁Ռͱͯ͠Ϣʔβʔମݧ͕Ͳ͏͋Δ͖͔Λઃܭͨ͠Γɺ࠷ऴ֬ೝͨ͠Γͨ͠ɻiOSΞϓϦಘҙͳਓ͕গͳ͔ͬͨͨΊɺࢪࡦνʔϜͷΤϯδχΞ͕ࢪࡦͦΕࣗମͷΈͰͳ͘ɺΞϓϦ্Ͱͷج൫෦Ұॹʹ࡞ͬͯ͘Εͨɻٕज़ج൫ܥνʔϜ(αʔόଆɺΞϓϦଆɺQA)ઃܭɾ࣮ΛҰॹʹਐΊͯ͘Εͨɻ ݁Ռͱ͍͍ͯ͠ײ͡ʹಈ͘ͷΛఏڙͰ͖ͨɻ͕ɺେ͖ͳϦϦʔεͩͬͨͷͰଟগͷෆ۩߹ग़ͯ͠·͍ͬͯΔɻαϙʔτܥνʔϜͱڧௐͯ͠ਵ࣌ରԠதɻ‣ ͱ͍͏ͷΛɺྑ͘ɺϢʔβʔ͞ΜͷํΛ͖ͳ͕ΒΕͨͷͰͨ͠ɻઌͷࣄྫ: (͘Θ͘͠WebͰ)
“ʰॊೈͰ͍͍ײ͡ͷϢʔβʔج൫Λࢦ͢ʱͱ͍͏ͷ͕͜ͷ࠶ߏஙϓϩδΣΫτͷతͰ͢ɻhttp://techlife.cookpad.com/entry/2017/04/06/172601
ʮ͔͖ͬͯͨʯ͜ͱ
“91ͷՁɺϏδωεͷੈքͰ࣮ફ͖͢ͷͩɻշదʹΒͤΔੜ׆ΛૹΔ͚ͩͰͳ͘ɺؔऀશһ͕͓ޓ͍ʹϦεϖΫτͨ͠ਓؒؔʹΑͬͯɺ৽͍͠ಇ͖ํΛ։ൃ͢ΔͷͰ͋Δɻ׆ൃʹੵۃతʹɺੈքʹߩݙͰ͖ΔιϑτΣΞΛ࡞Γग़͢ͷͰ͋Δɻతʹ͍͖͍͖ͱಇ͘ͷͰ͋Δɻ— エクストリーム・プログラミング 「第25章 結論」