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

コードレビュー地獄から 抜け出すためのペアプロ育成法 〜学習科学の視点から〜 #xpjug

latte
September 19, 2020

コードレビュー地獄から 抜け出すためのペアプロ育成法 〜学習科学の視点から〜 #xpjug

XP祭り2020 #xpjug で発表した内容です。

コードレビューが教育に良い理由と、
更に効果を高めるTipsを紹介しました。

latte

September 19, 2020
Tweet

More Decks by latte

Other Decks in Technology

Transcript

  1. ؒҧ͑ͨ΍Γํʹ ؾ͚ͮແ͍ ίʔυϨϏϡʔͰ ҭͯΔ ਖ਼͍͠΍Γํ͕ ෼͔Βͳ͍ ΍Γ௚͠ʹͳΔ ग़དྷ্͕ͬͨ΋ͷ͕ Α͔͔ͬͨɺѱ͔ͬ ͨͷ͔͸෼͔Δ

    ಉ࣌ؒ͡ʹ ಇ͔ͳ͍͍ͯ͘ Ͳ͏ͯ͠ɺͩΊͳ ϓϩάϥϜ͕Ͱ͖ ͔ͨ෼͔Βͳ͍ ΍͍ͬͯͨ͜ͱͷ Ұ෦·ͨ͸શ෦͕ ϜμʹͳΔ ϓϩάϥϛϯά͕ ݏ͍ʹͳΔ Ϟνϕʔγϣϯ ௿Լ ࣗྗͰ ղܾͰ͖ͳ͍ ग़དྷ্͕Δͷ͕ ஗͍ Կ౓΋ ಉࣦ͡ഊΛ͢Δ
  2. ؒҧ͑ͨ΍Γํʹ ؾ͚ͮແ͍ ίʔυϨϏϡʔͰ ҭͯΔ ਖ਼͍͠΍Γํ͕ ෼͔Βͳ͍ ΍Γ௚͠ʹͳΔ ग़དྷ্͕ͬͨ΋ͷ͕ Α͔͔ͬͨɺѱ͔ͬ ͨͷ͔͸෼͔Δ

    ಉ࣌ؒ͡ʹ ಇ͔ͳ͍͍ͯ͘ Ͳ͏ͯ͠ɺͩΊͳ ϓϩάϥϜ͕Ͱ͖ ͔ͨ෼͔Βͳ͍ ΍͍ͬͯͨ͜ͱͷ Ұ෦·ͨ͸શ෦͕ ϜμʹͳΔ ϓϩάϥϛϯά͕ ݏ͍ʹͳΔ Ϟνϕʔγϣϯ ௿Լ ࣗྗͰ ղܾͰ͖ͳ͍ ग़དྷ্͕Δͷ͕ ஗͍ Կ౓΋ ಉࣦ͡ഊΛ͢Δ ϖΞϓϩͰ ҭͯΔ ΍Γ௚͠ʹ ͳΒͳ͍ ਖ਼͍͠΍Γํ͕ ෼͔Δ ؒҧ͑ͨ΍Γํʹ ؾ͚ͮΔ
  3. ెఋੑ • ࢣঊͱఋࢠͰֶͿελΠϧ • ਌ํʹఋࢠೖΓͯ͠ɺٕज़Λڭ͑ͯ΋Β͏ • ษڧΛڭ͑Δͱ͖ • ՈఉڭࢣελΠϧ •

    ͜ͷํ๏͸ߋʹਐԽ͍ͯͯ͠ ʮೝ஌తెఋ੍ʯͱݺ͹Ε͍ͯ·͢ ग़དྷ্͕ͬͨΒݟͤͯʁ ൷ධ͢Δ͔Β
  4. ెఋੑ • ࢣঊͱఋࢠͰֶͿελΠϧ • ਌ํʹఋࢠೖΓͯ͠ɺٕज़Λڭ͑ͯ΋Β͏ • ษڧΛڭ͑Δͱ͖ • ՈఉڭࢣελΠϧ •

    ͜ͷํ๏͸ߋʹਐԽ͍ͯͯ͠ ʮೝ஌తెఋ੍ʯͱݺ͹Ε͍ͯ·͢ ग़དྷ্͕ͬͨΒݟͤͯʁ ൷ධ͢Δ͔Β
  5. ెఋੑ • ࢣঊͱఋࢠͰֶͿελΠϧ • ਌ํʹఋࢠೖΓͯ͠ɺٕज़Λڭ͑ͯ΋Β͏ • ษڧΛڭ͑Δͱ͖ • ՈఉڭࢣελΠϧ •

    ͜ͷํ๏͸ߋʹਐԽ͍ͯͯ͠ ʮೝ஌తెఋ੍ʯͬͯ΋ͷ͕͋Γ·͢ "MMBO$PMMJOT   $PHOJUJWF"QQSFOUJDFTIJQ5FBDIJOHUIF$SBGUPG3FBEJOH 8SJUJOH  BOE.BUIFNBUJDT5FDIOJDBM3FQPSU/P ग़དྷ্͕ͬͨΒݟͤͯʁ ൷ධ͢Δ͔Β
  6. ؒҧ͑ͨ΍Γํʹ ؾ͚ͮແ͍ ίʔυϨϏϡʔͰ ҭͯΔ ਖ਼͍͠΍Γํ͕ ෼͔Βͳ͍ ΍Γ௚͠ʹͳΔ ग़དྷ্͕ͬͨ΋ͷ͕ Α͔͔ͬͨɺѱ͔ͬ ͨͷ͔͸෼͔Δ

    ಉ࣌ؒ͡ʹ ಇ͔ͳ͍͍ͯ͘ Ͳ͏ͯ͠ɺͩΊͳ ϓϩάϥϜ͕Ͱ͖ ͔ͨ෼͔Βͳ͍ ΍͍ͬͯͨ͜ͱͷ Ұ෦·ͨ͸શ෦͕ ϜμʹͳΔ ϓϩάϥϛϯά͕ ݏ͍ʹͳΔ Ϟνϕʔγϣϯ ௿Լ ࣗྗͰ ղܾͰ͖ͳ͍ ग़དྷ্͕Δͷ͕ ஗͍ Կ౓΋ ಉࣦ͡ഊΛ͢Δ ϖΞϓϩͰ ҭͯΔ ΍Γ௚͠ʹ ͳΒͳ͍ ਖ਼͍͠΍Γํ͕ ෼͔Δ ؒҧ͑ͨ΍Γํʹ ؾ͚ͮΔ
  7. ࣦഊΛ͔ͯ͠Β͓खຊΛݟͤΔ • ؆୯ʹઆ໌͢Δͱʁ • ·ͣ͸ɺޙഐʹઌʹ΍ͬͯ΋Β͍·͠ΐ͏ • Ͱ͖ͳ͔ͬͨΒɺ୅ΘΓʹ͓खຊΛݟͤ·͠ΐ͏ • ྫ͑͹ʁ •

    ػೳΛͭ௥Ճ͢Δͱͯ͠ʮͰ͖Δͱ͜Ζ·Ͱ΍ͬͯΈͯʯͱ͓ئ͍͢Δ • ʮ͡Ό͋ɺ͓खຊݟͤΔͶʯͱɺ΍͍ͬͯΔͱ͜ΖΛݟͤΔ • ʮࣦഊͤ͞ΔݏͳઌഐʯͬͯࢥΘΕͨ͘ͳ͍ͷͰ͋Ε͹ɺઆ໌Λɻ • ͳͥɺྑ͍ͷʁ • ࣗ෼͕Կ͕Ͱ͖͍ͯͳ͍͔ཧղͰ͖ΔͷͰɺͲ͜ΛݟͨΒ͍͍͔Θ͔Δ • Ͱ͖ͳ͍ͱ͜Ζɺࣗ෼ͱ͸ҧ͏ͱ͜Ζʹ஫ࢹͰ͖Δ ͓खຊΛݟͤΔ جૅྗ 61
  8. ॿ͚ͨ͜ͱϦετΛ࡞Δ • ؆୯ʹઆ໌͢Δͱʁ • ޙഐ͕Ͱ͖ͳ͔ͬͨΓɺؒҧ͑ͨΒॿ͚ͯ͋͛ͯɺ಺༰ΛϦετʹ௥Ճ • ҰॹʹαϙʔτݮΒ͍͚ͯ͠ΔΑ͏ʹೝࣝ߹ΘͤΛ͢Δ • ྫ͑͹ʁ •

    ςΩετϑΝΠϧͰɺॿ͚ͨ͜ͱϦετͷϑΝΠϧΛ࡞Δ • (JUͷૢ࡞Ͱɺ༨ܭͳϑΝΠϧΛ௥Ճ͍ͯͨ͠ΒϦετʹೖΕΔ • ϓϩάϥϜͰɺྫ֎ॲཧʹൈ͚͕͋ͬͨΒϦετʹೖΕΔ • ͳͥɺྑ͍ͷʁ • ઌഐ͸ɺͰ͖Δ͚ͩॿ͚Δ෦෼ΛݮΒͯ͠Ұਓલʹͳͬͯ΋Β͍͍ͨ • ޙഐ͸ɺԿ͕Ͱ͖ΔΑ͏ʹͳΕ͹͍͍͔໌֬ʹͳΔ • ͳ͘ͳΒͳ͍߲໨͕͋Ε͹ɺڭ͑ํΛม͑ΔͳͲɺରࡦΛߟ͑ΒΕΔ Ͱ͖ͳ͍͜ͱΛ Ͱ͖ΔΑ͏ʹ͢Δɻ ՝୊Λఏڙ͢Δɻ جૅྗ 61
  9. ग़དྷͳ͍͜ͱΛ৐Γӽ͑Δ՝୊ • ؆୯ʹઆ໌͢Δͱʁ • ޙഐ͕Ͱ͖ͳ͍͜ͱ͕͋Ε͹ɺूதͯ͠औΓ૊ΊΔ՝୊Λఏڙ͢Δ • ྫ͑͹ʁ • (JUͷૢ࡞ͰɺϒϥϯνΛͲ͔͜Β੾ͬͨͷӨڹΛཧղ͍ͯ͠ͳ͔ͬͨ •

    (JUͷૢ࡞Ͱɺϒϥϯνͷ੾Γସ͑࣌ʹૢ࡞͕Θ͔Βͣखؒऔ͍ͬͯͨ • 8FCαʔϏεʰ-FBSO(JU#SBODIJOHʱΛ঺հ͢Δ • ͳͥɺྑ͍ͷʁ • Ͱ͖ͳ͍͜ͱ͸ɺࢥ͏ଘ෼ࣦഊͰ͖Δ؀ڥͷํ্͕ୡ͢Δ • ࣦഊ͠ͳ͍Ͱ͓͜͏ͱߟ͑͗͢Δͱɺ҆શࡦͰίϐϖʹ͢Δ • ஫ྗ͠ͳ͍ͱɺίπΛ͔ͭΉલʹ๨Εͯ͠·͏ • ೔ʹճͰ͖Δ͜ͱ • ݄ʹճ͚ͩ΍Δ͜ͱ Ͱ͖ͳ͍͜ͱΛ Ͱ͖ΔΑ͏ʹ͢Δɻ ՝୊Λఏڙ͢Δɻ جૅྗ 61
  10. ग़དྷͳ͍͜ͱΛ৐Γӽ͑Δ՝୊Λ • ؆୯ʹઆ໌͢Δͱʁ • ޙഐ͕Ͱ͖ͳ͍͜ͱ͕͋Ε͹ɺूதͯ͠औΓ૊ΊΔ՝୊Λఏڙ͢Δ • ྫ͑͹ʁ • (JUͷૢ࡞ͰɺϒϥϯνΛͲ͔͜Β੾ͬͨͷӨڹΛཧղ͍ͯ͠ͳ͔ͬͨ •

    (JUͷૢ࡞Ͱɺϒϥϯνͷ੾Γସ͑࣌ʹૢ࡞͕Θ͔Βͣखؒऔ͍ͬͯͨ • 8FCαʔϏεʰ-FBSO(JU#SBODIJOHʱΛ঺հ͢Δ • ͳͥɺྑ͍ͷʁ • Ͱ͖ͳ͍͜ͱ͸ɺࢥ͏ଘ෼ࣦഊͰ͖Δ؀ڥͷํ্͕ୡ͢Δ • ࣦഊ͠ͳ͍Ͱ͓͜͏ͱߟ͑͗͢Δͱɺ҆શࡦͰίϐϖʹ͢Δ • ஫ྗ͠ͳ͍ͱɺίπΛ͔ͭΉલʹ๨Εͯ͠·͏ • ೔ʹճͰ͖Δ͜ͱ • ݄ʹճ͚ͩ΍Δ͜ͱ Ͱ͖ͳ͍͜ͱΛ Ͱ͖ΔΑ͏ʹ͢Δɻ ՝୊Λఏڙ͢Δɻ
  11. ग़དྷͳ͍͜ͱΛ৐Γӽ͑Δ՝୊ • ؆୯ʹઆ໌͢Δͱʁ • ޙഐ͕Ͱ͖ͳ͍͜ͱ͕͋Ε͹ɺूதͯ͠औΓ૊ΊΔ՝୊Λఏڙ͢Δ • ྫ͑͹ʁ • (JUͷૢ࡞ͰɺϒϥϯνΛͲ͔͜Β੾ͬͨͷӨڹΛཧղ͍ͯ͠ͳ͔ͬͨ •

    (JUͷૢ࡞Ͱɺϒϥϯνͷ੾Γସ͑࣌ʹૢ࡞͕Θ͔Βͣखؒऔ͍ͬͯͨ • 8FCαʔϏεʰ-FBSO(JU#SBODIJOHʱΛ঺հ͢Δ • ͳͥɺྑ͍ͷʁ • Ͱ͖ͳ͍͜ͱ͸ɺࢥ͏ଘ෼ࣦഊͰ͖Δ؀ڥͷํ্͕ୡ͢Δ • ࣦഊ͠ͳ͍Ͱ͓͜͏ͱߟ͑͗͢Δͱɺ҆શࡦͰίϐϖʹ͢Δ • ूத͠ͳ͍ͱɺίπΛ͔ͭΉલʹ๨Εͯ͠·͏ • ೔ʹճͰ͖Δ͜ͱ • ݄ʹճ͚ͩ΍Δ͜ͱ Ͱ͖ͳ͍͜ͱΛ Ͱ͖ΔΑ͏ʹ͢Δɻ ՝୊Λఏڙ͢Δɻ جૅྗ 61
  12. બ୒ͷཧ༝ΛਘͶΔ • ؆୯ʹઆ໌͢Δͱʁ • ޙഐ͕બΜͩํ๏ʹ͍ͭͯɺͳͥબΜͩͷ͔໰͏ • ଞͷํ๏Ͱ͸μϝͳͷ͔ɺީิΛڍ͛ͯҙݟΛฉ͘ • ྫ͑͹ʁ •

    ޙഐ͕ɺσʔλͷอଘͷͨΊʹ.Z42-ΛఏҊ͢Δ • ઌഐ͸ɺʮͲ͏ͯ͠3FEJT΍ɺ42-JUFͰͳ͍ͷʯͱཧ༝Λฉ͍ͯΈΔ • ઌഐ͸ɺ෼͔͍ͬͯͯ΋ҙਤతʹฉ͍ͯΈΔ͜ͱͰޙഐͷཧղΛਂΊΔ • ͳͥɺྑ͍ͷʁ • ࣗ෼ͷબΜͩબ୒ࢶͷಛ௃Λઆ໌͢Δ͜ͱͰɺཧղ͕ਂ·Δ • ผͷ৔໘ʹૺ۰ͨ͠ͱ͖ʹɺԠ༻͢Δ͜ͱ͕Ͱ͖Δ ஌ࣝ΍ࢥߟΛ આ໌Ͱ͖ΔΑ͏ʹ ͢Δ Ԡ༻ྗ 61
  13. ·ͱΊ • ϖΞϓϩ͕ҭ੒ʹྑ͍ཧ༝ • ֶशՊֶͰྑ͍ͱ͞ΕΔೝ஌తెఋ੍ͷ ࠷ॳͷεςοϓ͕ຬͨ͞Ε͍ͯΔ • ޮՌΛߋʹߴΊΔ5JQT • ࣦഊΛ͔ͯ͠Β͓खຊΛݟͤΔ

    • ॿ͚ͨ͜ͱϦετΛ࡞ͬͯೝࣝΛ߹ΘͤΔ • ग़དྷͳ͍͜ͱΛ৐Γӽ͑Δ՝୊Λఏڙ͢Δ • બ୒ͷཧ༝ΛਘͶΔ
  14. •͔͠͠ • ϖΞϓϩͨ͘͠ͳ͍ • ͜Ε·Ͱͷݫ͍͠ϑΟʔυόοΫͰؔ܎ੑ͕ྑ͘ͳ͍ • ઌഐ͕ޙഐʹରͯ͠ݫ͍͠ • ޙഐͷֶशʹର͢Δ΍Δؾ͕௿͍ •

    ϓϩάϥϛϯάҎ֎ͷ࢓ࣄͰࠔ͍ͬͯΔ • ͳͲͳͲ • ͏·͍͔͘ͳ͍͜ͱ΋ଟ͍ͱࢥ͍·͢ • ͦΜͳͱ͖͸͝૬ஊ͍ͩ͘͞ • ৬৔ʹݺΜͰ͍͚ͨͩΕ͹ • ՝୊Λݟ͚ͭͯվળͷ͓ख఻͍͠·͢
  15. •͔͠͠ • ϖΞϓϩͨ͘͠ͳ͍ • ͜Ε·Ͱͷݫ͍͠ϑΟʔυόοΫͰؔ܎ੑ͕ྑ͘ͳ͍ • ઌഐ͕ޙഐʹରͯ͠ݫ͍͠ • ޙഐͷֶशʹର͢Δ΍Δؾ͕௿͍ •

    ϓϩάϥϛϯάҎ֎ͷ࢓ࣄͰࠔ͍ͬͯΔ • ͳͲͳͲ • ͏·͍͔͘ͳ͍͜ͱ΋ଟ͍ͱࢥ͍·͢ • ͦΜͳͱ͖͸͝૬ஊ͍ͩ͘͞ • ৬৔ʹݺΜͰ͍͚ͨͩΕ͹ • ՝୊Λݟ͚ͭͯվળͷ͓ख఻͍͠·͢