Pro Yearly is on sale from $80 to $50! »

A Training System of Ruby Programmers / Rubyプログラマが育つ仕組み - Rubyでの受託開発を10年回してみて -

B5689026d84bb3a823c82590eefc3b8f?s=47 Yasuko Ohba
November 02, 2017

A Training System of Ruby Programmers / Rubyプログラマが育つ仕組み - Rubyでの受託開発を10年回してみて -

A talk presentation for RubyWorld Conference 2017 held in Matsue, Japan. Introducing Everyleaf Corporation's training program. Written in Japanese.

B5689026d84bb3a823c82590eefc3b8f?s=128

Yasuko Ohba

November 02, 2017
Tweet

Transcript

  1. 3VCZϓϩάϥϚ͕ ҭͭ࢓૊Έ 3VCZͰͷडୗ։ൃΛ೥ճͯ͠Έͯ  ג ສ༿େ৔ೡࢠ!OBZ

  2. "CPVU.F େ৔ೡࢠʢ͓͓͹ɹ΍͢͜ʣ!OBZ ϓϩάϥϚྺ೥͘Β͍ 3VCZϓϩάϥϚ 3BJMTΤϯδχΞ ג ສ༿୅දऔక໾

  3. 'BNJMZ

  4. 5PQJDT 3VCZͷडୗ։ൃձࣾͱͯ͠೥ͷத Ͱม͖͑ͯͨ͜ͱͷ঺հ ৽ਓݚमͷ࢓૊ΈΛม͑ͨ࿩

  5. ג ສ༿ ೥݄೔ʹ໊Ͱઃཱ 3VCZPO3BJMTΛ࢖ͬͨडୗ։ൃ͕ த৺ ͓͔͛͞·Ͱɺ೥݄Ͱप೥ Λܴ͑Δ͜ͱ͕Ͱ͖·ͨ͠ʂ ݱࡏ໊

  6. 8FBSFIJSJOH ʮͨͷ͘͠νʔϜ։ൃ͢Δ͜ͱʯʹϑΥʔ Χε͍ͨ͠ํ མͪண͍ͨ؀ڥͰϓϥΠϕʔτ΋ॏࢹ͠ ͳ͕ΒεΩϧ޲্ΛਤΓ͍ͨํ ϦϞʔτۈ຿੍౓͋Γʢݚमத͸౦ژۈ ຿͕ඞཁʣ

  7. ೥ͷதͰ ສ༿͕ ม͖͑ͯͨ͜ͱ IUUQTXXXqJDLSDPNQIPUPTTBOUIFP

  8. ࢓ࣄͷܗɾ಺༰ νʔϜ։ൃ ૊৫ͷܗ ࠾༻γεςϜ ڭҭγεςϜ ධՁγεςϜʢࠓ೔͸৮Ε·ͤΜʣ

  9. ࢓ࣄͷܗ ʲաڈ೥ؒͷ࢓ࣄܗଶͷมԽʳ

  10. ࢓ࣄͷ಺༰ 3BJMTத৺ 7VFKTɺ3FBDUͳͲ͕૿͑ͨ ్தɺεϚϑΥΞϓϦΛͨ·ʹ 1)1Λ౓͚ͩड͚ͨ ࠷ۙ(PͷҊ݅΋΍ͬͨΓ͍ͯ͠·͢

  11. νʔϜ։ൃ ೖࣾͨ͠ਓʑͷฃಆʹΑͬͯ ҭ͖ͯͯͨ෼໺ ೔ʑݚڀ IUUQTXXXqJDLSDPNQIPUPTTDITCPZTTPDDFS

  12. ૊৫ͷܗ IUUQTXXXqJDLSDPNQIPUPTGSFZBTFSFOEJQJUZ

  13. ࠷ॳ͸ݹయతͳ ϐϥϛουܕͷ தখاۀΛࢤ޲

  14. ϐϥϛουܕ૊৫ͷ՝୊ νʔϜ։ൃͱͷ૬ੑ͕ѱ͔ͬͨ νʔϜ։ൃ͸ϑϥοτࢤ޲ ඞཁͳ৘ใΛެ։ͯ͠ݸਓ͕൑அͰ͖ΔΑ͏ʹ͢Δ جຊݪଇ͕ɺ৘ใΛؚΊͯ౷੍͢Δϐϥϛουܕͱ ͙ͦΘͳ͍ डୗͰ͸ɺҊ݅νʔϜ͸͓٬༷ͷঢ়گͰॊೈʹมಈ Ҋ݅νʔϜओମͷ೔ʑͷੜ׆ͱɺݻఆతͳάϧʔϓ ͝ͱʹதؒ؅ཧ৬ʹ؅ཧͯ͠΋Β͏ܗ͕߹Θͳ͍

  15. ʮϗϥΫϥγʔʯ Λࢀߟʹͨ͠

  16. ϗϥΫϥγʔͱ͸ ϐϥϛουܕͷ૊৫ͱ͸ҧ͏৽͍͠૊৫ͷܗͱͯ͠ఏ এ͞Ε͍ͯΔ ੜ෺ͷࡉ๔ͷΑ͏ʹɺػೳผʹࣗ཯ͯ͠ಇ͘࢓૊ΈΛ ໨ࢦ͢ ೴͕ݸʑͷࡉ๔ͷ׆ಈʹ௚઀ࢦࣔΛग़͞ͳ͍Α͏ʹɺ ϗϥΫϥγʔͰ͸αʔΫϧ΍ϩʔϧͱ͍ͬͨػೳ͕ࣗ ෼ͷ͜ͱΛࣗ෼ͰܾΊΔ ϑϥοτߏ଄ͱݴΘΕΔ͜ͱ΋͋Δ͕ɺͲͪΒ͔ͱ͍ ͏ͱࡉ๔ߏ଄ʢೖΕࢠߏ଄ʣ͕ਖ਼ͦ͠͏

  17. ݱࡏͷαʔΫϧϩʔϧ ૯຿ܥͷ࢓ࣄͷ੔ཧ ʹ࢖͏ͱͱ΋ʹɺ޿ ใɺΞαΠϯܾఆɺ ࠾༻ॻྨબߟɺ৽ਓ ࣾһڭҭɺ৘ใγε ςϜɺXJLJ੔ཧͳͲ ͍Ζ͍Ζͳϩʔϧʹ ٕज़ܥͷࣾһ΋ब೚

  18. ྑ͘ͳ͖ͬͯͨ ୲౰ऀɾ୲౰ൣғ͕͸͖ͬΓͯ͠ɺ෺ࣄ ΛܾΊ΍͘͢ͳͬͨ ৘ใެ։ɾϨϏϡʔͱͷ૬ੑ͕ྑ͍ νʔϜ։ൃͱͷ૬ੑ͕ྑ͍ ݫ֨ͳӡ༻Ͱ͸ͳ͘ɺΏΔ͘औΓೖΕͯ ͍Δ

  19. ࠾༻ γεςϜ IUUQTXXXqJDLSDPNQIPUPTCPPCPPCPPL

  20. ઃཱޙ·΋ͳ͔͘Β ໘઀ͰνΣοΫ͍ͨ͠ ߲໨Λࣾ಺Ͱڞ༗

  21. ԿΛͲΕ͚ͩॏࢹͯ͠ ࠾൱ΛܾΊΔ͔͕ ೉͍͠ IUUQTXXXqJDLSDPNQIPUPTVOSFMBYFEEBE

  22. ໘઀׭ʹΑΔ࠾఺͔Β ࠾൱Λࢉग़͢Δ ํ๏Λཱ֬ ˠ͏·͍͘͘Α͏ʹͳͬͨʂ

  23. ڭҭγεςϜ IUUQTXXXqJDLSDPNQIPUPTNFSDIBV

  24. डୗ։ൃ͸ ٕज़ऀΛ ҭͯ΍͍͢ ܗଶ ৭ʑͳ ։ൃҊ݅ νʔϜ จԽ

  25. ࣾձͷͨΊʹ΋ ٕज़ऀΛҭ͍ͯͨ ؾ͕࣋ͪ͋Δ ʢগͣͭ͠Ͱ͕͢ʣ

  26. ສ༿ͷϑΥʔΧε ੒ޭ͢ΔϓϩδΣΫτΛ૿΍͍ͨ͠ ʮͱΓ͋͑ͣ3VCZͱ3BJMT͕ॻ͚Δ ਓʯͷ಄਺Λ૿΍ͯ͠΋੒ޭ͢ΔϓϩδΣ Ϋτ͸૿͑ͳ͍ ʮ্खʹ3VCZͱ3BJMT͕ॻ͚ͯɺνʔ ϜͰ։ൃ͕Ͱ͖ΔਓʯΛ૿΍͍ͨ͠

  27. ্खʹ3VCZ͕ॻ͚Δਓ 3VCZ͸ࣗ༝ͳݴޠ ࣗ༝ʹ͸੹೚͕൐͏ ॻ͖ํΛॊೈʹࣗ෼Ͱ൑அͰ͖Δͱྑ͍ 3VCZʹ߹͏ઃܭɺ໋໊ɺ࣮૷ ݱ࣮ͱ3VCZίʔυͷؒʹંΓ߹͍Λ͚ͭଓ ͚Δ

  28. ্खʹ3BJMT͕ॻ͚Δਓ 3BJMTͷϨʔϧʹ͏·͘৐͔ͬΓͳ͕ Β໨తୡ੒·Ͱ͍͚࣋ͬͯΔ എܠɾۙྡͷ஌ࣝʢ001ɺ3VCZɺ 8FCɺ3%#ɺ+4ͳͲʣ͕Θ͔Δ όʔδϣϯΞοϓͷߥ೾΍ϝϯόʔަ୅ ʹ଱͑ಘΔҡ࣋͠΍͍͢ίʔυΛॻ͚Δ

  29. ஌ࣝʹՃ͑ͯ ൑அͷ͏·͞ όϥϯεײ֮ ͕ॏཁ

  30. ࣮஍ͰܦݧΛ ੵΉඞཁ͕͋Δ

  31. Ҏલͷ৽ਓݚम ϝϯλʔΛ೚໋͢Δ ձࣾͷ͜ͱΛઆ໌ͨ͠Βɺ͙͢ʹϓϩ δΣΫτʹ഑ଐɻϝϯλʔ΍ϓϩδΣΫ τϝϯόʔ͕దٓ0+5Ͱڭҭɻ ࢼ༻ظؒதʹ3VCZ4JMWFSΛͱͬͯ ΋Β͏

  32. ਓ͸ҭͬͯ͸͍͚ͨΕ Ͳ΋ɺޮ཰͕ΠϚΠν

  33. ৽ਓͷΞαΠϯ͞ΕΔ Ҋ݅ͷঢ়گ͸ຖճҧ͏ʂ ԿΛ ΍Δͷ͔ ίʔυͷ ঢ়ଶ ϦϦʔε ࣌ظ νʔϜ ߏ੒

  34. ৽ਓͷεΩϧ΍ಛੑ΋ ຖճҧ͏ʂ ஌ࣝɾܦݧ ੑ֨ ίϛϡχέʔγϣϯ ಘҙ෼໺ ڵຯͷํ޲

  35. ڭ͑Δଆ͕େม Ҋ݅ͷঢ়گ ৽ਓͷಛੑ Ҋ݅ͷৄࡉΛ ೺Ѳ͢Δͷ͸େมʂ ΄͔ͷϓϩδΣΫτʹ͍Δͱ ڭҭʹࢀՃͮ͠Β͍ ৽ਓڭҭͷͨͼʹ θϩϕʔεͰڭ͑ํΛݕ౼

  36. ڭΘΔ಺༰͕ෆఆ ΞαΠϯ͞Εͨ ϓϩδΣΫτͷݸੑ΍ ୲౰ͨ͠λεΫʹ ࠨӈ͞ΕΔ

  37. ड͚ೖΕνʔϜ͕େม ઓྗʹͳΒͳ͍ ͩΖ͏͠ ڭ͑Δͷେมͩ͠ ϛεϚονͩͱ શһෆ޾ʹʜ IUUQTXXXqJDLSDPNQIPUPTUP⒎

  38. ձ͕ࣾେม ड͚ೖΕͷ੒൱΁ͷෆ҆ɺڭҭෛՙ΁ͷ ෆ͔҆Βɺ࠾༻ͦͷ΋ͷʹωΨςΟϒͳ งғؾ͕ੜ͡΍͍͢ ϝϯλʔ΍ड͚ೖΕνʔϜͷෛՙ͕ߴ͍ ͷͰख഑ʹͱͯ΋ؾΛ࢖͏͠೉͍͠

  39. ͦ͜Ͱ

  40. ৽ਓݚमͷ ࢓૊ΈΛվળ͢Δ ༗ࢤϓϩδΣΫτ͕ ൃ଍ʂ

  41. ݚम੍౓ΛҰ৽ IUUQTXXXqJDLSDPNQIPUPTKPFNBS

  42. ैདྷγεςϜΛ౿ऻͨ͠఺ ϝϯλʔΛ೚໋͢Δ ࢼ༻ظؒதʹ3VCZ4JMWFSΛͱͬͯ ΋Β͏ ϝϯςΟʔ͝ͱͷઐ༻ݚम4MBDLνϟ ϯωϧΛ࡞Δ

  43. มߋͨ͠఺

  44. ݚमظؒΛઃ͚ɺ ڭҭΧϦΩϡϥϜʹ Ԋͬͯ՝୊Λ ਐΊͯ΋Β͏

  45. ڭҭΧϦΩϡϥϜͱ͸ λεΫ؅ཧΞϓϦέʔγϣϯΛ։ൃ͢Δ ՝୊ ։ൃ؀ڥͷߏஙɺઃܭɺݸʑͷػೳͷ࣮ ૷ͳͲશ෦ͰεςοϓͰߏ੒͞Εͯ ͍Δ

  46. ֤εςοϓͷֶशཁૉ ؀ڥߏங πʔϧͷ ࢖͍ํ ઃܭ͢Δश׳ ։ൃखॱ 3BJMT σβΠϯ

  47. ࢓༷͸Θ͟ͱগ͠ᐆດʹ ݱ࣮ͷ։ൃͰ͸ɺ׬શͳ࢓༷͕ଘࡏ͢Δ ͜ͱ͸΄ͱΜͲͳ͍ ࣗ෼Ͱ࢓༷Λݕ౼ܾͯ͠ΊΔϓϩηε͕ ඞཁʹͳΔ࢓ֻ͚ΛೖΕ͍ͯΔ ϝϯλʔ޲͚ʹ͸ࢦಋཁྖΛ༻ҙ

  48. ݚमͷ࢓૊Έ ΧϦΩϡϥϜ ʢεςοϓʙʣ Ϛελʔσʔλ 4UFQͷ13 4UFQͷ13 ɾ ɾ ɾ ϝϯλʔ͕૬ஊʹͷΔ

    શࣾͷ༗ࢤ΋ંʑʹϨϏϡʔ ՝୊ΞϓϦέʔγϣϯ ϨϙδτϦ (JU)VC ৽ਓ͝ͱʹ ˓˓͞Μݚमઐ༻ 4MBDLνϟϯωϧ
  49. ೖࣾ࣌ͷεΩϧʹΑΒͣ ಉ͡ΧϦΩϡϥϜͰ ݚमΛߦ͍ɺ ݚम͕ऴ͔ྃͯ͠Β ࣮Ҋ݅ʹΞαΠϯ͢Δ

  50. εΩϧͷ͋Δਓ͸ ૣ࣮͘Ҋ݅ʹ ΞαΠϯ͞ΕΔ ॳ৺ऀ͸ͬ͘͡Γݚम ʹऔΓ૊ΊΔ

  51. ͱͯ΋ྑ͘ͳͬͨʂ IUUQTXXXqJDLSDPNQIPUPT!/

  52. ڭ͑Δଆ͕ϥΫ ݚम՝୊͕ܾ·͍ͬͯΔͷͰɺԿΛ΍ͬͯ΋Β͏ ͔Λ౎౓ߟ͑ͳ͍ͰࡁΉ աڈͷݚमͷܦݧ΍ࢿ࢈Λ׆͔ͤΔ ඪ४ΧϦΩϡϥϜΛ೺Ѳ͢Δͷ͸Ҋ݅ͷৄࡉΛ ཧղ͢ΔΑΓͣͬͱ؆୯ ୭Ͱ΋ڭ͑ΔଆʹͳΕΔͷͰɺෛՙ͕ϝϯλʔ ʹूத͠ͳ͍

  53. ڭΘΔଆ͕҆৺ ໢ཏੑͷ͋ΔશࣾͰڞ௨ͷֶश಺༰ ։ൃɺ13ɺϨϏϡʔͷαΠΫϧΛ௨͡ ͯɺສ༿ͷ։ൃελΠϧΛɺ࣮ࡍʹϓϩ δΣΫτʹࢀՃ͢Δલʹֶ΂Δ ݚमऴྃޙɺϓϩδΣΫτʹεϜʔζʹ ࢀՃͰ͖Δ

  54. ड͚ೖΕνʔϜ͕҆৺ (JUIVCͱ ࣗಈςετͱ 3BJMTͷ$36%͸ Θ͔Δ͸ͣ ݚम ϨϏϡʔ͚ͨ͠Ͳ ͳ͔ͳ͔ྑ͍ײ͡ͷ ରԠͯͨ͠Α 3%#͸ಘҙͰ

    σβΠϯۤखͬΆ͍ ͡Ό͋ɺ·ͣ͸ ͋ͷλεΫ ୲౰ͯ͠΋Β͓͏͔ IUUQTXXXqJDLSDPNQIPUPTDMJDLS
  55. ձ͕ࣾϥΫ ࠾༻ʹ͍ͭͯͷࣾ಺ͷงғؾ͕໌Δ͘ͳͬ ͨ ϝϯλʔ΍ݚममྃޙͷड͚ೖΕνʔϜ ͷબఆ͕͠΍͘͢ͳͬͨ ஫ɿ७ਮʹݚमͷΈͷظ͕ؒੜ͡ΔͷͰ ίετతʹ͸͔ͬ͠Γ͔͔Γ·͢

  56. ੍౓Λม͑ͯΈͯ ͸͡Ίͯ෼͔ͬͨ͜ͱ

  57. ݚमͷ13ϨϏϡʔͷ ޮՌ͕͍͢͝ʂ

  58. ΈΜͳͰϨϏϡʔͰ͖Δ ݚमܦݧऀ͸౰વ͘Θ͍͠ ϝϯλʔܦݧऀ΋౰વ͘Θ͍͠ ຖ౓ಉ͡՝୊͔ͩΒɺ΄͔ͷਓ΋಺༰Λਪ ଌ͠΍͘͢ɺޱΛͩ͠΍͍͢ ϝϯλʔͷෛՙ͕ܰݮ͞ΕΔ ϝϯςΟʔͷ࡞ۀޮ཰6Q

  59. จԽͷ͢Γ͋Θ͕ͤͰ͖Δ ࣮Ҋ݅ʹࢀՃ͢Δલʹɺ։ൃελΠϧ΍ จԽͷ͢Γ߹Θ͕ͤͰ͖Δ ϨϏϡʔΛ௨ͯ͡ɺਓฑ΍Ձ஋؍ɺͩ͜ ΘΓͳͲ΋෼͔Δ ৽ਓɾड͚ೖΕνʔϜ૒ํͷ҆৺ʹͭͳ ͕Δ

  60. ୈࡾऀ΋ษڧͰ͖Δ ઌഐࣾһͷϨϏϡʔ಺༰ΛΈͯ஌ࣝΛ਎ ʹ͚ͭͨΓɺϨϏϡʔͷண؟఺ΛֶͿ͜ ͱ͕Ͱ͖Δ ͜Ε·ͰֶΜͩ͜ͱͷ෮शʹ΋ͳΔ ࠷৽ͷ3BJMTͷ࢓༷Λ֬ೝ͢Δػձ΋૿ ͑Δ

  61. ϨϏϡʔࣗମ͕ࢿ࢈ ϨϏϡʔ಺༰͸কདྷͷݚमͷࢿྉͱ͠ ͯ׆༻Ͱ͖Δ IUUQTXXXqJDLSDPNQIPUPTQFUFSBMMFO

  62. ৽ਓڭҭ੍౓͸ ࣗ཯తʹ վળϧʔϓΛճͯ͠ ΧϦΩϡϥϜΛ όʔδϣϯΞοϓ

  63. ݚमऴ࣮ྃ࣌Ҋ݅΁ +PJOͯ͠গ͔ͯ͠͠Β ΠϯλϏϡʔΛ࣮ࢪ

  64. ΧϦΩϡϥϜͷόʔδϣϯΞοϓ ՝୊ͷू߹ɾϝϯλʔखҾॻ ʢεςοϓʙʣ Ϛελʔσʔλ 1VMM3FRVFTU ᶄΠϯλϏϡʔ݁ Ռ΍ࣗ෼ͷҙݟΛ ൓өͯ͠ɺϝϯλʔ ͕վળҊΛ13 ڭҭ.5(

    ᶅڭҭνʔϜͰɺ13 ͷࠩ෼ΛΈͯٞ࿦ 1VMM3FRVFTU ᶆ.5(ͷ੒ՌΛվΊ ͯ13ɺϚʔδ ᶃݚममྃޙɺϝϯςΟʔʹΠϯλϏϡʔΛ࣮ࢪ
  65. ͜Ε·ͰͷόʔδϣϯΞοϓ վળϧʔϓΛ௨ͯ͡ʮ͜ͷֶश΋ඞཁͩΑͶʯ ͱ͍͏ϑΟʔυόοΫ͕دͤΒΕɺֶश಺༰ ͷ໢ཏੑ͕ߴ·ͬͨ ֶͿͨΊͷ͓͢͢Ίڭࡐ৘ใ͕ू·ͬͨ ݚमऴྃ࣌ظ͕৽ਓ͝ͱʹҟͳΓɺΞαΠϯ ܭըཱ͕ͯͮΒ͍ͷͰɺաڈʹ͔͔ͬͨ࣌ؒ ͷه࿥Λ͔ͭͬͯ༧૝ऴྃ࣌ظΛܭࢉ͢ΔΑ ͏ʹͯ͠Έ͍ͯΔ

  66. ৽ਓ͸ ࣗ෼͕ड͚ͨ ڭҭ੍౓΁ͷ ؔ৺͕ߴΊ

  67. ͦͷ৽ਓ͕ҭͬͯ ϝϯλʔΛ͢Δ͜ͱͰ ڭ͑Δޮ཰6Q ੍౓վྑͷޮ཰΋6Q

  68. ྑ͍ϧʔϓʂ

  69. ͓஌Βͤ

  70. ສ༿ͷ ڭҭΧϦΩϡϥϜΛ ެ։͠·͢ʂ IUUQTHJUIVCDPN FWFSZMFBGFMUSBJOJOH

  71. ΧϦΩϡϥϜΛ ࡞Δͷ͸ ख͕͔͔ؒΔͷͰ ΋͠ྑ͔ͬͨΒ ͝ར༻͍ͩ͘͞

  72. 13׻ܴͰ͢

  73. ·ͱΊ 3VCZ 3BJMTͷडୗ։ൃձࣾͱͯ͠ͷ೥Ͱ޻ ෉͖ͯͨ͜͠ͱΛ঺հ ৽ਓݚम੍౓ͷ࡮৽Ͱ࠾༻ɾڭҭ͕εϜʔζʹͳͬ ͨ ՝୊ͷ13ϨϏϡʔΛશࣾͰߦ͏͜ͱͰɺٕज़ͩ ͚Ͱͳ͘ɺจԽɺ։ൃελΠϧɺՁ஋؍ͳͲΛ఻ ͑Δ͜ͱ͕Ͱ͖Δ ڭҭΧϦΩϡϥϜΛެ։த