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

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

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.

Yasuko Ohba

November 02, 2017
Tweet

More Decks by Yasuko Ohba

Other Decks in Technology

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ϨϏϡʔΛશࣾͰߦ͏͜ͱͰɺٕज़ͩ ͚Ͱͳ͘ɺจԽɺ։ൃελΠϧɺՁ஋؍ͳͲΛ఻ ͑Δ͜ͱ͕Ͱ͖Δ ڭҭΧϦΩϡϥϜΛެ։த