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

OSSへの
プルリクエスト作成の手引き

fuqda
August 03, 2020

 OSSへの
プルリクエスト作成の手引き

STORES.jp, Incの開発チーム月次レビュー会のLT資料です。

fuqda

August 03, 2020
Tweet

More Decks by fuqda

Other Decks in Programming

Transcript

  1. 044΁ͷ
    ϓϧϦΫΤετ࡞੒ͷ
    खҾ͖
    4503&4%FWϨϏϡʔձ-5ίʔφʔ
    !GVREB

    View full-size slide

  2. About me
    • 2017೥11݄ʹגࣜձࣾϒϥέοτ
    (ݱSTORES.jp, Inc) ʹJoin
    • ϓϩμΫτόοΫΤϯυBϥΠϯνʔϜॴଐ
    • 2018೥2݄ʙݱࡏ
    Tama.rbͱ͍͏஍ҬRubyίϛϡχςΟ΍ͬͯ·͢

    View full-size slide

  3. Today’s thema
    OSS΁ͷ
    ϓϧϦΫΤετ࡞੒ͷ
    खҾ͖

    View full-size slide

  4. Introduction
    (ͦΜͳʹଟ͘͸ͳ͍͚ΕͲ)
    ͡ͿΜ΋OSSʹϓϧϦΫΤετΛૹΔΑ͏ʹͳͬͯɺ
    Ϛʔδ·ͰͷྲྀΕ͕΅Μ΍ΓΘ͔ΔΑ͏ʹͳΓ·ͨ͠
    Ͱ΋ɺωοτΛݟͯ΋ମܥతʹྲྀΕΛॻ͍ͯΔهࣄͬͯ΄ͱΜ
    Ͳݟ͔͚ͳ͍…
    ͱ͍͏Θ͚Ͱɺ͜Ε͔Β΍͍ͬͯͧ͘ͱ͍͏ਓͷͨΊʹ
    खҾ͖Λ·ͱΊͯΈΑ͏ͱࢥ͍·͢

    View full-size slide

  5. ͓அΓ
    ※ ͋͘·Ͱݸਓతܦݧʹج͍ͮͨݟղͳͷͰ
    ɹ΋ͬͱྑ͍ํ๏͕͋Δ͔΋͠Ε·ͤΜ
    ɹ(ͦͷ࣌͸ͬͦ͜Γڭ͍͑ͯͩ͘͞)
    ※ ࠓճ͸ϓϧϦΫΤετΛૹΔ͜ͱΛ࿩͢ͷͰ
    ɹissueΛཱͯΔ݅ʹ͸৮Ε·ͤΜ

    View full-size slide

  6. Today’s Agenda
    ɾϦϙδτϦͷ୳͠ํ
    1. ۀ຿Ͱ࢖͍ͬͯΔϥΠϒϥϦͷίʔυ΍ڍಈͷؾʹͳΔ෦෼Λ֬ೝͯ͠ΈΔ
    2. GitHub help wanted Ͱ୳ͯ͠ΈΔ
    ɾϓϧϦΫΤετ࡞੒(લޙ)ͷྲྀΕ
    1. bug(վળϙΠϯτ)Λݟ͚ͭΔ
    2. ର৅ϦϙδτϦͷFork
    3. ର৅ϦϙδτϦͷίϯτϦϏϡʔγϣϯΨΠυ(ଘࡏ͢Δ৔߹)ʹ໨Λ௨͢
    4. ίʔυɾυΩϡϝϯτͷमਖ਼
    5. ϓϧϦΫΤετΛ࡞੒
    6. ϨϏϡʔΛड͚Δ(मਖ਼͋Ε͹దٓ)
    7. ϚʔδΛ଴ͭ
    ɾ࣮࿥ɿաڈͷ͘͠͡ΓμΠδΣετ ※ ͕࣌ؒ͋Ε͹࿩͠·͢

    View full-size slide

  7. Today’s Agenda
    ɾϦϙδτϦͷ୳͠ํ
    1. ۀ຿Ͱ࢖͍ͬͯΔϥΠϒϥϦͷίʔυ΍ڍಈͷؾʹͳΔ෦෼Λ֬ೝͯ͠ΈΔ
    2. GitHub help wanted Ͱ୳ͯ͠ΈΔ
    ɾϓϧϦΫΤετ࡞੒(લޙ)ͷྲྀΕ
    1. bug(վળϙΠϯτ)Λݟ͚ͭΔ
    2. ର৅ϦϙδτϦͷFork
    3. ର৅ϦϙδτϦͷίϯτϦϏϡʔγϣϯΨΠυ(ଘࡏ͢Δ৔߹)ʹ໨Λ௨͢
    4. ίʔυɾυΩϡϝϯτͷमਖ਼
    5. ϓϧϦΫΤετΛ࡞੒
    6. ϨϏϡʔΛड͚Δ(मਖ਼͋Ε͹దٓ)
    7. ϚʔδΛ଴ͭ
    ɾ࣮࿥ɿաڈͷ͘͠͡ΓμΠδΣετ ※ ͕࣌ؒ͋Ε͹࿩͠·͢

    View full-size slide

  8. 1. ۀ຿Ͱ࢖͍ͬͯΔϥΠϒϥϦͷ
    ίʔυ΍ڍಈͷؾʹͳΔ෦෼Λ֬ೝͯ͠ΈΔ
    ɾϥΠϒϥϦʓʓͷσϑΥϧτͷڍಈ͕
    ɹ΋ͬͱ͜͏ͩͬͨΒͳ͊…ͬͯͳ͍ʁ
    ɾ࢓ࣄͰ࢖ͬͯΔOSSͷίʔυΛಡΜͰΈΔ
    (OSSͷಡॻձͱ͔ͨ͠ͱ͖͸νϟϯε͔΋)
    ※ ͪͳΈʹɺ΅͘ͷ৔߹͸RailsͷίʔυΛಡΜͰ͍ͯɺ
    ɹͨ·ͨ·௚ͤͦ͏ͳͱ͜Ζݟ͚ͭͨ͜ͱ͕͋Γ·͢

    View full-size slide

  9. 2. GitHub help wanted Ͱ୳ͯ͠ΈΔ
    GitHub help wantedͱ͍͏αΠτͰࠔͬͯΔ
    OSSΛݴޠผʹ୳͢͜ͱ͕ग़དྷΔͷͰܰΊͳ΋
    ͷΛݟ͚ͭΔʹ͸͍͍͔΋͠Ε·ͤΜ

    View full-size slide

  10. Today’s Agenda
    ɾϦϙδτϦͷ୳͠ํ
    1. ۀ຿Ͱ࢖͍ͬͯΔϥΠϒϥϦͷίʔυ΍ڍಈͷؾʹͳΔ෦෼Λ֬ೝͯ͠ΈΔ
    2. GitHub help wanted Ͱ୳ͯ͠ΈΔ
    ɾϓϧϦΫΤετ࡞੒(લޙ)ͷྲྀΕ
    1. bug(վળϙΠϯτ)Λݟ͚ͭΔ
    2. ର৅ϦϙδτϦͷFork
    3. ର৅ϦϙδτϦͷίϯτϦϏϡʔγϣϯΨΠυ(ଘࡏ͢Δ৔߹)ʹ໨Λ௨͢
    4. ίʔυɾυΩϡϝϯτͷमਖ਼
    5. ϓϧϦΫΤετΛ࡞੒
    6. ϨϏϡʔΛड͚Δ(मਖ਼͋Ε͹దٓ)
    7. ϚʔδΛ଴ͭ
    ɾ࣮࿥ɿաڈͷ͘͠͡ΓμΠδΣετ ※ ͕࣌ؒ͋Ε͹࿩͠·͢

    View full-size slide

  11. Today’s Agenda
    ɾϦϙδτϦͷ୳͠ํ
    1. ۀ຿Ͱ࢖͍ͬͯΔϥΠϒϥϦͷίʔυ΍ڍಈͷؾʹͳΔ෦෼Λ֬ೝͯ͠ΈΔ
    2. GitHub help wanted Ͱ୳ͯ͠ΈΔ
    ɾϓϧϦΫΤετ࡞੒(લޙ)ͷྲྀΕ
    1. bug(վળϙΠϯτ)Λݟ͚ͭΔ
    2. ର৅ϦϙδτϦͷFork
    3. ର৅ϦϙδτϦͷίϯτϦϏϡʔγϣϯΨΠυ(ଘࡏ͢Δ৔߹)ʹ໨Λ௨͢
    4. ίʔυɾυΩϡϝϯτͷमਖ਼
    5. ϓϧϦΫΤετΛ࡞੒
    6. ϨϏϡʔΛड͚Δ(मਖ਼͋Ε͹దٓ)
    7. ϚʔδΛ଴ͭ
    ɾ࣮࿥ɿաڈͷ͘͠͡ΓμΠδΣετ ※ ͕࣌ؒ͋Ε͹࿩͠·͢

    View full-size slide

  12. 1. bug(վળϙΠϯτ)Λݟ͚ͭΔ
    ex1) σϑΥϧτͷڍಈ΁ͷҧ࿨ײ
    ʓʓίϚϯυͰੜ੒͞ΕΔϑΝΠϧɺ
    σϑΥϧτͰ˚˚͕ແޮʹͳͬͯΔ͚Ͳɺ
    ຖճ༗ޮʹॻ͖׵͑ΔͷΊΜͲ͍͘͞ͳ͊…
    ແޮͰخ͍͠ύλʔϯͳ͘ͳ͍ʁ
    ex2) υΩϡϝϯτͷमਖ਼
    ͋Ε!?υΩϡϝϯτͱ࣮ࡍͷίʔυͷڍಈҧ͘ͳ͍ʁ...

    View full-size slide

  13. 2. ର৅ϦϙδτϦͷFork
    step1. ର৅ϦϙδτϦΛFork͢Δ
    step2. ࣗ෼ͷखݩʹForkͨ͠ϦϙδτϦΛ
    ϩʔΧϧʹclone͢Δ

    View full-size slide

  14. 2. ର৅ϦϙδτϦͷFork
    step3. ຊମΛupstream,ࣗ෼ͷϦϙδτϦΛ
    originͱͯ͠ొ࿥
    ɹɹɹ※ OSSͷ׳शͰݩͷϦϙδτϦΛupstreamɺ
    ɹɹɹɹɹࣗ෼ͷखݩΛoriginͱͯ͠ొ࿥͢Δͱࣗ෼͸ฉ͍ͨͷͰ
    ɹɹɹɹɹͦ͏ͯ͠·͕͢͜ͷลΓ͸͓޷ΈͰ

    View full-size slide

  15. 3. ର৅ϦϙδτϦͷίϯτϦϏϡʔγϣϯΨΠυ
    (ଘࡏ͢Δ৔߹)ʹ໨Λ௨͢
    ɹ
    ɹɾRailsͷΑ͏ͳେن໛ͳOSSʹ͸ΨΠυ͕
    ଘࡏ͢Δ͜ͱ͕ଟ͍ͷͰͦͪΒʹ໨Λ௨͠·͠ΐ͏
    ex1) https://guides.rubyonrails.org/contributing_to_ruby_on_rails.html
    ɹɾແ͍৔߹͸ϦϙδτϦͷաڈͷissue΍
    ɹɹϓϧϦΫΤετΛݟͯΈΔͱ
    ͦͷϦϙδτϦͷงғؾ͕෼͔ΔͷͰ͓͢͢ΊͰ͢
    ɹɹ(Ͳ͏͍͏ϓϧϦΫΤετͩͱϚʔδ͞ΕΔ͔ݟΔͷେࣄ )

    View full-size slide

  16. 4. ίʔυɾυΩϡϝϯτͷमਖ਼
    step1. ίʔυͷ֘౰ՕॴΛमਖ਼ (౰ͨΓલ͚ͩͲίϛοτϝοηʔδ͸ӳޠͰ͢Α)
    step2. खݩͰςετ͕ύε͢Δ͜ͱΛ֬ೝ ✅
    ɹɹɹ

    View full-size slide

  17. 4. ίʔυɾυΩϡϝϯτͷमਖ਼
    step3. remoteͱͯ͠ొ࿥͞Ε͍ͯΔϦϙδτϦΛ֬ೝ
    ɹɹɹ
    step4. origin(ࣗ෼ͷखݩͷ࡞ۀϦϙδτϦ)΁ϓογϡ͢Δ
    ɹɹɹ ϓογϡ͕׬ྃ͢Δͱ ҎԼͷϘλϯ͔Βࣗ෼ͷ࡞ۀϦϙδτϦ͔Β
    ɹɹɹ GUI্ͰForkݩͷϦϙδτϦʹϓϧϦΫΤετΛ࡞੒ग़དྷΔΑ͏ʹͳΓ·͢

    View full-size slide

  18. 5. ϓϧϦΫΤετΛ࡞੒
    ForkݩͷϦϙδτϦʹϓϧϦΫΤετΛ࡞੒͠·͢ɹɹɹ
    ϓϧϦΫΤετʹॻ͍ͨํ͕͍͍ͱࢥ͏͜ͱ
    ɹ˞ ProblemɿͲ͏͍͏໰୊͕͋ͬͨͷʁ
    ɹ˞ SolutionɿͲ͏௚ͨ͠ͷʁ
    جຊతʹյΕΔमਖ਼͸Ϛʔδͨ͘͠ͳ͍͸ͣͳͷͰɺ
    Before / After ͰͲΜͳخ͍͜͠ͱ͕͋Δͷ͔ɺ
    ͦΕͰ໰୊ͳ͍͜ͱΛ֬ೝͨ͠Αʂͱ͍͏ΤϏσϯεΛৄࡉʹॻ͘ͷ͕͓͢͢ΊͰ͢
    ϝϯςφʔ͞Μͷؾ࣋ͪʹͳͬͯ֬ೝͷίετΛݮΒ͠·͠ΐ͏❗
    (ٯʹͪΌΜͱॻ͔ͳ͍ͱӳޠͰΊͬͪΌ࣭໰͞ΕͯࠔΔͷͰɺ΅͘͸ҰܸͰ࢓ཹΊΔͨΊʹ
    ͳΔ΂͘ৄ͘͠ॻ͘Α͏ʹ͍ͯ͠·͢)

    View full-size slide

  19. 6. ϨϏϡʔΛड͚Δ(मਖ਼͋Ε͹దٓ)
    ӳޠͰٞ࿦ʹಥೖ͢Δͱେมݫ͍͠Ͱ͕͢ɺ
    େ͖ͳमਖ਼(ഁյతͳมߋ)Λͨ͠Γ͢Δͱ
    ආ͚ΒΕͳ͍͜ͱ΋ଟ͍ͷͰ΍͍͖ͬͯ·͠ΐ͏

    View full-size slide

  20. 7. ϚʔδΛ଴ͭ
    Ұ௨Γमਖ਼΍ٞ࿦͕ऴΘͬͨΒϚʔδ͞ΕΔ͜ͱΛ
    ئ͍ͭͭ଴ͪ·͠ΐ͏

    View full-size slide

  21. Today’s Agenda
    ɾϦϙδτϦͷ୳͠ํ
    1. ۀ຿Ͱ࢖͍ͬͯΔϥΠϒϥϦͷίʔυ΍ڍಈͷؾʹͳΔ෦෼Λ֬ೝͯ͠ΈΔ
    2. GitHub help wanted Ͱ୳ͯ͠ΈΔ
    ɾϓϧϦΫΤετ࡞੒(લޙ)ͷྲྀΕ
    1. bug(վળϙΠϯτ)Λݟ͚ͭΔ
    2. ର৅ϦϙδτϦͷFork
    3. ର৅ϦϙδτϦͷίϯτϦϏϡʔγϣϯΨΠυ(ଘࡏ͢Δ৔߹)ʹ໨Λ௨͢
    4. ίʔυɾυΩϡϝϯτͷमਖ਼
    5. ϓϧϦΫΤετΛ࡞੒
    6. ϨϏϡʔΛड͚Δ(मਖ਼͋Ε͹దٓ)
    7. ϚʔδΛ଴ͭ
    ɾ࣮࿥ɿաڈͷ͘͠͡ΓμΠδΣετ ※ ͕࣌ؒ͋Ε͹࿩͠·͢

    View full-size slide

  22. Today’s Agenda
    ɾϦϙδτϦͷ୳͠ํ
    1. ۀ຿Ͱ࢖͍ͬͯΔϥΠϒϥϦͷίʔυ΍ڍಈͷؾʹͳΔ෦෼Λ֬ೝͯ͠ΈΔ
    2. GitHub help wanted Ͱ୳ͯ͠ΈΔ
    ɾϓϧϦΫΤετ࡞੒(લޙ)ͷྲྀΕ
    1. bug(վળϙΠϯτ)Λݟ͚ͭΔ
    2. ର৅ϦϙδτϦͷFork
    3. ର৅ϦϙδτϦͷίϯτϦϏϡʔγϣϯΨΠυ(ଘࡏ͢Δ৔߹)ʹ໨Λ௨͢
    4. ίʔυɾυΩϡϝϯτͷमਖ਼
    5. ϓϧϦΫΤετΛ࡞੒
    6. ϨϏϡʔΛड͚Δ(मਖ਼͋Ε͹దٓ)
    7. ϚʔδΛ଴ͭ
    ɾ࣮࿥ɿաڈͷ͘͠͡ΓμΠδΣετ ※ ͕࣌ؒ͋Ε͹࿩͠·͢

    View full-size slide

  23. ࣮࿥ɿաڈͷ͘͠͡ΓμΠδΣετ
    ݸਓతʹ΍Γ͕͔ͪͳͱࢥ͏͘͠͡ΓΛڞ༗
    աڈissueಡ·ͳ͍ͰϓϧϦΫ࡞ͬͨΒ଎߈Ϋϩʔζ͞
    Εͨ݅
    ഁյతมߋͨ͠ΒόνϘίʹٞ࿦ʹͳͬͯݫ͔ͬͨ͠
    ݅
    ӳޠͲ͏͠Α͏…Ͱ೰ΜͰमਖ਼ऴΘͬͯΔͷʹ਺िؒϓ
    ϧϦΫग़ͤͳ͔ͬͨ݅

    View full-size slide

  24. աڈissueಡ·ͳ͍ͰϓϧϦΫ࡞ͬͨΒ
    ଎߈Ϋϩʔζ͞Εͨ݅
    ɾաڈ͢Ͱʹٞ࿦͞Εͯ٫Լ͞ΕͯΔमਖ਼Λͯ͠΋͏ͨ
    ͦͷ݅ʹ͍ͭͯ͸
    ΋͏աڈʹٞ࿦ͯ͠Δ͔Β
    Ϋϩʔζ͢Δͥ

    View full-size slide

  25. ڭ܇
    ɾ͡ͿΜ͕ࢥ͍෇͘Α͏ͳ͜ͱ͸
    ɹଞਓ͕΋͏͢Ͱʹߟ͍͑ͯΔ͜ͱ͕ଟ͍
    աڈissue / PR Λݟͯ͡ͿΜͱಉ͡໰୊ҙࣝ
    ͷٞ࿦ɾमਖ਼ͰΫϩʔζ͞Εͨ΋ͷ͕ͳ͍͔
    ɹཁ֬ೝ (·͔ͨΑͬͯͳͬͪΌ͏ͷͰ…)
    ɾେ͖ͳOSSͩͱGitHubͷissueͰ͸ͳ͘JIRAͰ
    νέοτ؅ཧͯ͠Δ৔߹΋͋ΔͷͰGitHubҎ֎
    ΋దٓνΣοΫ͔ͯ͠ΒϓϧϦΫΤετΛ౤͛Α͏ ✅

    View full-size slide

  26. ഁյతมߋͨ͠ΒόνϘίʹ
    ٞ࿦ʹͳͬͯݫ͔ͬͨ݅͠
    ɾ͕࣌ؒ଍Γͳ͍ͷͰৄࡉ͸ׂѪ͠·͢
    σϑΥϧτͷڍಈ͕
    มΘΔͷݫ͍͠ͳ͊ʜ

    View full-size slide

  27. ڭ܇
    ɾ͜Ε͔ΒೖΕΔมߋ͸طଘϢʔβʔͷ
    ෆརӹʹͳΒͳ͍͔ʁߟ͑Δ
    มߋىҼͰσϑΥϧτͷڍಈ͕มΘΔ৔߹͸
    Φϓγϣϯͷ༗ແͰطଘͷڍಈΛҡ࣋ग़དྷΔ
    ɹΑ͏ʹ͢ΔͳͲҰఆͷ഑ྀ͕ඞཁ⚠
    ※ ิ଍
    ɹഁյతͳมߋ͸ϥΠϒϥϦͷϝδϟʔόʔδϣϯΞοϓϦϦʔεΛ
    ཁٻ͢Δ͜ͱʹͳΔ
    ϚΠφʔόʔδϣϯϦϦʔεʹࠞͥͮΒ͍ = Ϛʔδͮ͠Β͍

    View full-size slide

  28. ӳޠͲ͏͠Α͏…Ͱ೰ΜͰमਖ਼
    ऴΘͬͯΔͷʹ਺िؒϓϧϦΫग़ͤͳ͔ͬͨ݅
    มͳӳޠͩͱʮwwwʯͬͯࢥΘΕͳ͍͔
    ΊͪΌΊͪΌ৺഑ͩͬͨ…
    ԿݴͬͯΔΜͩίΠπXXX

    View full-size slide

  29. ݁ߏɺ
    ੎͍ӳޠͷਓ
    ଟ͍ͧ
    ͋͘·ͰݸਓతͳମײͰ͢

    View full-size slide

  30. ڭ܇
    ɾجຊతʹίʔυͷdiffʹ͸໨Λ௨͢͸ͣ
    ͳͷͰɺӳޠ͕׬ᘳͰͳͯ͘΋
    ͱ͸͍͑ɺ࢓ࣄͱಉ͡Α͏ʹ࣮૷ͷഎܠ΍
    ͳʹΛ͠Α͏ͱࢥͬͯΔ͜ͱΛ఻͑Δ౒ྗ͸
    େࣄ
    આ໌͕೉͍͠৔߹͸ྫͱͯ͠ίʔυαϯϓϧΛ
    descriptionʹࡌͤΔͱ఻ΘΓ΍͍͢ͷͰ
    ͓͢͢ΊͰ͢

    View full-size slide

  31. ɾϓϧϦΫΤετͷωλ
    ɹ͸ීஈͷۀ຿Ͱ΋ݟ͚ͭΒΕΔ

    ɾϓϧϦΫΤετ࡞੒͔ΒϚʔδͷྲྀΕ͸
    ɹجຊతʹ௨ৗͷ(JU)VC'MPXͱಉ͡

    ɾमਖ਼಺༰ʹ͸ৗʹݱࡏͷϢʔβʔͱ
    ɹϝϯςφʔ͞Μ΁ͷ഑ྀΛఴ͑ͯ
    ɾϝϯςφʔ͞Μ͕Ϛʔδ͢Δͷʹඞཁͳ৘ใ͕
    ɹἧͬͯΔ͔Λߟ͑ͯ࡞Ε͹੿͍ӳޠͰ΋఻ΘΔ
    ϓϧϦΫΤετʹͳΔͷͰ৺഑͠ͳͯ͘େৎ෉

    View full-size slide

  32. 044׆ಈָ͍͠Ͱ͢Α☺
    ·ͩͷํ΋͜ͷػձʹ
    νϟϨϯδ
    ͯ͠Έ·ͤΜ͔ʁ

    View full-size slide

  33. ͝ਗ਼ௌ͋Γ͕ͱ͏
    ͍͟͝·ͨ͠

    View full-size slide