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

5fc8ab822e946a8ddfa46ba15a848392?s=47 fuqda
August 03, 2020

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

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

5fc8ab822e946a8ddfa46ba15a848392?s=128

fuqda

August 03, 2020
Tweet

Transcript

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

  2. About me • 2017೥11݄ʹגࣜձࣾϒϥέοτ (ݱSTORES.jp, Inc) ʹJoin • ϓϩμΫτόοΫΤϯυBϥΠϯνʔϜॴଐ •

    2018೥2݄ʙݱࡏ Tama.rbͱ͍͏஍ҬRubyίϛϡχςΟ΍ͬͯ·͢
  3. Today’s thema OSS΁ͷ ϓϧϦΫΤετ࡞੒ͷ खҾ͖

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

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

  6. Today’s Agenda ɾϦϙδτϦͷ୳͠ํ 1. ۀ຿Ͱ࢖͍ͬͯΔϥΠϒϥϦͷίʔυ΍ڍಈͷؾʹͳΔ෦෼Λ֬ೝͯ͠ΈΔ 2. GitHub help wanted Ͱ୳ͯ͠ΈΔ

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

    ɾϓϧϦΫΤετ࡞੒(લޙ)ͷྲྀΕ 1. bug(վળϙΠϯτ)Λݟ͚ͭΔ 2. ର৅ϦϙδτϦͷFork 3. ର৅ϦϙδτϦͷίϯτϦϏϡʔγϣϯΨΠυ(ଘࡏ͢Δ৔߹)ʹ໨Λ௨͢ 4. ίʔυɾυΩϡϝϯτͷमਖ਼ 5. ϓϧϦΫΤετΛ࡞੒ 6. ϨϏϡʔΛड͚Δ(मਖ਼͋Ε͹దٓ) 7. ϚʔδΛ଴ͭ ɾ࣮࿥ɿաڈͷ͘͠͡ΓμΠδΣετ ※ ͕࣌ؒ͋Ε͹࿩͠·͢
  8. 1. ۀ຿Ͱ࢖͍ͬͯΔϥΠϒϥϦͷ ίʔυ΍ڍಈͷؾʹͳΔ෦෼Λ֬ೝͯ͠ΈΔ ɾϥΠϒϥϦʓʓͷσϑΥϧτͷڍಈ͕ ɹ΋ͬͱ͜͏ͩͬͨΒͳ͊…ͬͯͳ͍ʁ ɾ࢓ࣄͰ࢖ͬͯΔOSSͷίʔυΛಡΜͰΈΔ (OSSͷಡॻձͱ͔ͨ͠ͱ͖͸νϟϯε͔΋) ※ ͪͳΈʹɺ΅͘ͷ৔߹͸RailsͷίʔυΛಡΜͰ͍ͯɺ ɹͨ·ͨ·௚ͤͦ͏ͳͱ͜Ζݟ͚ͭͨ͜ͱ͕͋Γ·͢

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

  10. Today’s Agenda ɾϦϙδτϦͷ୳͠ํ 1. ۀ຿Ͱ࢖͍ͬͯΔϥΠϒϥϦͷίʔυ΍ڍಈͷؾʹͳΔ෦෼Λ֬ೝͯ͠ΈΔ 2. GitHub help wanted Ͱ୳ͯ͠ΈΔ

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

    ɾϓϧϦΫΤετ࡞੒(લޙ)ͷྲྀΕ 1. bug(վળϙΠϯτ)Λݟ͚ͭΔ 2. ର৅ϦϙδτϦͷFork 3. ର৅ϦϙδτϦͷίϯτϦϏϡʔγϣϯΨΠυ(ଘࡏ͢Δ৔߹)ʹ໨Λ௨͢ 4. ίʔυɾυΩϡϝϯτͷमਖ਼ 5. ϓϧϦΫΤετΛ࡞੒ 6. ϨϏϡʔΛड͚Δ(मਖ਼͋Ε͹దٓ) 7. ϚʔδΛ଴ͭ ɾ࣮࿥ɿաڈͷ͘͠͡ΓμΠδΣετ ※ ͕࣌ؒ͋Ε͹࿩͠·͢
  12. 1. bug(վળϙΠϯτ)Λݟ͚ͭΔ ex1) σϑΥϧτͷڍಈ΁ͷҧ࿨ײ ʓʓίϚϯυͰੜ੒͞ΕΔϑΝΠϧɺ σϑΥϧτͰ˚˚͕ແޮʹͳͬͯΔ͚Ͳɺ ຖճ༗ޮʹॻ͖׵͑ΔͷΊΜͲ͍͘͞ͳ͊… ແޮͰخ͍͠ύλʔϯͳ͘ͳ͍ʁ ex2) υΩϡϝϯτͷमਖ਼

    ͋Ε!?υΩϡϝϯτͱ࣮ࡍͷίʔυͷڍಈҧ͘ͳ͍ʁ...
  13. 2. ର৅ϦϙδτϦͷFork step1. ର৅ϦϙδτϦΛFork͢Δ step2. ࣗ෼ͷखݩʹForkͨ͠ϦϙδτϦΛ ϩʔΧϧʹclone͢Δ

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

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

    ͦͷϦϙδτϦͷงғؾ͕෼͔ΔͷͰ͓͢͢ΊͰ͢ ɹɹ(Ͳ͏͍͏ϓϧϦΫΤετͩͱϚʔδ͞ΕΔ͔ݟΔͷେࣄ )
  16. 4. ίʔυɾυΩϡϝϯτͷमਖ਼ step1. ίʔυͷ֘౰ՕॴΛमਖ਼ (౰ͨΓલ͚ͩͲίϛοτϝοηʔδ͸ӳޠͰ͢Α) step2. खݩͰςετ͕ύε͢Δ͜ͱΛ֬ೝ ✅ ɹɹɹ

  17. 4. ίʔυɾυΩϡϝϯτͷमਖ਼ step3. remoteͱͯ͠ొ࿥͞Ε͍ͯΔϦϙδτϦΛ֬ೝ ɹɹɹ step4. origin(ࣗ෼ͷखݩͷ࡞ۀϦϙδτϦ)΁ϓογϡ͢Δ ɹɹɹ ϓογϡ͕׬ྃ͢Δͱ ҎԼͷϘλϯ͔Βࣗ෼ͷ࡞ۀϦϙδτϦ͔Β

    ɹɹɹ GUI্ͰForkݩͷϦϙδτϦʹϓϧϦΫΤετΛ࡞੒ग़དྷΔΑ͏ʹͳΓ·͢
  18. 5. ϓϧϦΫΤετΛ࡞੒ ForkݩͷϦϙδτϦʹϓϧϦΫΤετΛ࡞੒͠·͢ɹɹɹ ϓϧϦΫΤετʹॻ͍ͨํ͕͍͍ͱࢥ͏͜ͱ ɹ˞ ProblemɿͲ͏͍͏໰୊͕͋ͬͨͷʁ ɹ˞ SolutionɿͲ͏௚ͨ͠ͷʁ جຊతʹյΕΔमਖ਼͸Ϛʔδͨ͘͠ͳ͍͸ͣͳͷͰɺ Before

    / After ͰͲΜͳخ͍͜͠ͱ͕͋Δͷ͔ɺ ͦΕͰ໰୊ͳ͍͜ͱΛ֬ೝͨ͠Αʂͱ͍͏ΤϏσϯεΛৄࡉʹॻ͘ͷ͕͓͢͢ΊͰ͢ ϝϯςφʔ͞Μͷؾ࣋ͪʹͳͬͯ֬ೝͷίετΛݮΒ͠·͠ΐ͏❗ (ٯʹͪΌΜͱॻ͔ͳ͍ͱӳޠͰΊͬͪΌ࣭໰͞ΕͯࠔΔͷͰɺ΅͘͸ҰܸͰ࢓ཹΊΔͨΊʹ ͳΔ΂͘ৄ͘͠ॻ͘Α͏ʹ͍ͯ͠·͢)
  19. 6. ϨϏϡʔΛड͚Δ(मਖ਼͋Ε͹దٓ) ӳޠͰٞ࿦ʹಥೖ͢Δͱେมݫ͍͠Ͱ͕͢ɺ େ͖ͳमਖ਼(ഁյతͳมߋ)Λͨ͠Γ͢Δͱ ආ͚ΒΕͳ͍͜ͱ΋ଟ͍ͷͰ΍͍͖ͬͯ·͠ΐ͏

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

  21. Today’s Agenda ɾϦϙδτϦͷ୳͠ํ 1. ۀ຿Ͱ࢖͍ͬͯΔϥΠϒϥϦͷίʔυ΍ڍಈͷؾʹͳΔ෦෼Λ֬ೝͯ͠ΈΔ 2. GitHub help wanted Ͱ୳ͯ͠ΈΔ

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

    ɾϓϧϦΫΤετ࡞੒(લޙ)ͷྲྀΕ 1. bug(վળϙΠϯτ)Λݟ͚ͭΔ 2. ର৅ϦϙδτϦͷFork 3. ର৅ϦϙδτϦͷίϯτϦϏϡʔγϣϯΨΠυ(ଘࡏ͢Δ৔߹)ʹ໨Λ௨͢ 4. ίʔυɾυΩϡϝϯτͷमਖ਼ 5. ϓϧϦΫΤετΛ࡞੒ 6. ϨϏϡʔΛड͚Δ(मਖ਼͋Ε͹దٓ) 7. ϚʔδΛ଴ͭ ɾ࣮࿥ɿաڈͷ͘͠͡ΓμΠδΣετ ※ ͕࣌ؒ͋Ε͹࿩͠·͢
  23. ࣮࿥ɿաڈͷ͘͠͡ΓμΠδΣετ ݸਓతʹ΍Γ͕͔ͪͳͱࢥ͏͘͠͡ΓΛڞ༗ աڈissueಡ·ͳ͍ͰϓϧϦΫ࡞ͬͨΒ଎߈Ϋϩʔζ͞ Εͨ݅ ഁյతมߋͨ͠ΒόνϘίʹٞ࿦ʹͳͬͯݫ͔ͬͨ͠ ݅ ӳޠͲ͏͠Α͏…Ͱ೰ΜͰमਖ਼ऴΘͬͯΔͷʹ਺िؒϓ ϧϦΫग़ͤͳ͔ͬͨ݅

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

  25. ڭ܇ ɾ͡ͿΜ͕ࢥ͍෇͘Α͏ͳ͜ͱ͸ ɹଞਓ͕΋͏͢Ͱʹߟ͍͑ͯΔ͜ͱ͕ଟ͍ աڈissue / PR Λݟͯ͡ͿΜͱಉ͡໰୊ҙࣝ ͷٞ࿦ɾमਖ਼ͰΫϩʔζ͞Εͨ΋ͷ͕ͳ͍͔ ɹཁ֬ೝ (·͔ͨΑͬͯͳͬͪΌ͏ͷͰ…)

    ɾେ͖ͳOSSͩͱGitHubͷissueͰ͸ͳ͘JIRAͰ νέοτ؅ཧͯ͠Δ৔߹΋͋ΔͷͰGitHubҎ֎ ΋దٓνΣοΫ͔ͯ͠ΒϓϧϦΫΤετΛ౤͛Α͏ ✅
  26. ഁյతมߋͨ͠ΒόνϘίʹ ٞ࿦ʹͳͬͯݫ͔ͬͨ݅͠ ɾ͕࣌ؒ଍Γͳ͍ͷͰৄࡉ͸ׂѪ͠·͢ σϑΥϧτͷڍಈ͕ มΘΔͷݫ͍͠ͳ͊ʜ

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

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

  29. ৺഑ͳ͍

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

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

  32. ·ͱΊ

  33. ɾϓϧϦΫΤετͷωλ ɹ͸ීஈͷۀ຿Ͱ΋ݟ͚ͭΒΕΔ  ɾϓϧϦΫΤετ࡞੒͔ΒϚʔδͷྲྀΕ͸ ɹجຊతʹ௨ৗͷ(JU)VC'MPXͱಉ͡  ɾमਖ਼಺༰ʹ͸ৗʹݱࡏͷϢʔβʔͱ ɹϝϯςφʔ͞Μ΁ͷ഑ྀΛఴ͑ͯ ɾϝϯςφʔ͞Μ͕Ϛʔδ͢Δͷʹඞཁͳ৘ใ͕ ɹἧͬͯΔ͔Λߟ͑ͯ࡞Ε͹੿͍ӳޠͰ΋఻ΘΔ

    ϓϧϦΫΤετʹͳΔͷͰ৺഑͠ͳͯ͘େৎ෉
  34. 044׆ಈָ͍͠Ͱ͢Α☺ ·ͩͷํ΋͜ͷػձʹ νϟϨϯδ ͯ͠Έ·ͤΜ͔ʁ

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