STORES.jp, Incの開発チーム月次レビュー会のLT資料です。
044ͷϓϧϦΫΤετ࡞ͷखҾ͖4503&4%FWϨϏϡʔձ-5ίʔφʔ!GVREB
View Slide
About me • 201711݄ʹגࣜձࣾϒϥέοτ(ݱSTORES.jp, Inc) ʹJoin• ϓϩμΫτόοΫΤϯυBϥΠϯνʔϜॴଐ• 20182݄ʙݱࡏTama.rbͱ͍͏ҬRubyίϛϡχςΟͬͯ·͢
Today’s thema OSSͷϓϧϦΫΤετ࡞ͷखҾ͖
Introduction (ͦΜͳʹଟ͘ͳ͍͚ΕͲ)͡ͿΜOSSʹϓϧϦΫΤετΛૹΔΑ͏ʹͳͬͯɺϚʔδ·ͰͷྲྀΕ͕΅ΜΓΘ͔ΔΑ͏ʹͳΓ·ͨ͠ͰɺωοτΛݟͯମܥతʹྲྀΕΛॻ͍ͯΔهࣄͬͯ΄ͱΜͲݟ͔͚ͳ͍…ͱ͍͏Θ͚Ͱɺ͜Ε͔Β͍ͬͯͧ͘ͱ͍͏ਓͷͨΊʹखҾ͖Λ·ͱΊͯΈΑ͏ͱࢥ͍·͢
͓அΓ※ ͋͘·Ͱݸਓతܦݧʹج͍ͮͨݟղͳͷͰɹͬͱྑ͍ํ๏͕͋Δ͔͠Ε·ͤΜɹ(ͦͷ࣌ͬͦ͜Γڭ͍͑ͯͩ͘͞)※ ࠓճϓϧϦΫΤετΛૹΔ͜ͱΛ͢ͷͰɹissueΛཱͯΔ݅ʹ৮Ε·ͤΜ
Today’s AgendaɾϦϙδτϦͷ୳͠ํ1. ۀͰ͍ͬͯΔϥΠϒϥϦͷίʔυڍಈͷؾʹͳΔ෦Λ֬ೝͯ͠ΈΔ2. GitHub help wanted Ͱ୳ͯ͠ΈΔɾϓϧϦΫΤετ࡞(લޙ)ͷྲྀΕ 1. bug(վળϙΠϯτ)Λݟ͚ͭΔ2. ରϦϙδτϦͷFork3. ରϦϙδτϦͷίϯτϦϏϡʔγϣϯΨΠυ(ଘࡏ͢Δ߹)ʹΛ௨͢4. ίʔυɾυΩϡϝϯτͷमਖ਼5. ϓϧϦΫΤετΛ࡞6. ϨϏϡʔΛड͚Δ(मਖ਼͋Εదٓ)7. ϚʔδΛͭɾ࣮ɿաڈͷ͘͠͡ΓμΠδΣετ ※ ͕࣌ؒ͋Ε͠·͢
1. ۀͰ͍ͬͯΔϥΠϒϥϦͷίʔυڍಈͷؾʹͳΔ෦Λ֬ೝͯ͠ΈΔɾϥΠϒϥϦʓʓͷσϑΥϧτͷڍಈ͕ɹͬͱ͜͏ͩͬͨΒͳ͊…ͬͯͳ͍ʁɾࣄͰͬͯΔOSSͷίʔυΛಡΜͰΈΔ(OSSͷಡॻձͱ͔ͨ͠ͱ͖νϟϯε͔)※ ͪͳΈʹɺ΅͘ͷ߹RailsͷίʔυΛಡΜͰ͍ͯɺɹͨ·ͨ·ͤͦ͏ͳͱ͜Ζݟ͚ͭͨ͜ͱ͕͋Γ·͢
2. GitHub help wanted Ͱ୳ͯ͠ΈΔGitHub help wantedͱ͍͏αΠτͰࠔͬͯΔOSSΛݴޠผʹ୳͢͜ͱ͕ग़དྷΔͷͰܰΊͳͷΛݟ͚ͭΔʹ͍͍͔͠Ε·ͤΜ
1. bug(վળϙΠϯτ)Λݟ͚ͭΔex1) σϑΥϧτͷڍಈͷҧײʓʓίϚϯυͰੜ͞ΕΔϑΝΠϧɺσϑΥϧτͰ˚˚͕ແޮʹͳͬͯΔ͚Ͳɺຖճ༗ޮʹॻ͖͑ΔͷΊΜͲ͍͘͞ͳ͊…ແޮͰخ͍͠ύλʔϯͳ͘ͳ͍ʁex2) υΩϡϝϯτͷमਖ਼͋Ε!?υΩϡϝϯτͱ࣮ࡍͷίʔυͷڍಈҧ͘ͳ͍ʁ...
2. ରϦϙδτϦͷForkstep1. ରϦϙδτϦΛFork͢Δstep2. ࣗͷखݩʹForkͨ͠ϦϙδτϦΛϩʔΧϧʹclone͢Δ
2. ରϦϙδτϦͷForkstep3. ຊମΛupstream,ࣗͷϦϙδτϦΛoriginͱͯ͠ొɹɹɹ※ OSSͷ׳शͰݩͷϦϙδτϦΛupstreamɺɹɹɹɹɹࣗͷखݩΛoriginͱͯ͠ొ͢Δͱࣗฉ͍ͨͷͰɹɹɹɹɹͦ͏ͯ͠·͕͢͜ͷลΓ͓ΈͰ
3. ରϦϙδτϦͷίϯτϦϏϡʔγϣϯΨΠυ(ଘࡏ͢Δ߹)ʹΛ௨͢ɹɹɾRailsͷΑ͏ͳେنͳOSSʹΨΠυ͕ଘࡏ͢Δ͜ͱ͕ଟ͍ͷͰͦͪΒʹΛ௨͠·͠ΐ͏ ex1) https://guides.rubyonrails.org/contributing_to_ruby_on_rails.htmlɹɾແ͍߹ϦϙδτϦͷաڈͷissueɹɹϓϧϦΫΤετΛݟͯΈΔͱͦͷϦϙδτϦͷงғؾ͕͔ΔͷͰ͓͢͢ΊͰ͢ɹɹ(Ͳ͏͍͏ϓϧϦΫΤετͩͱϚʔδ͞ΕΔ͔ݟΔͷେࣄ )
4. ίʔυɾυΩϡϝϯτͷमਖ਼step1. ίʔυͷ֘ՕॴΛमਖ਼ (ͨΓલ͚ͩͲίϛοτϝοηʔδӳޠͰ͢Α)step2. खݩͰςετ͕ύε͢Δ͜ͱΛ֬ೝ ✅ɹɹɹ
4. ίʔυɾυΩϡϝϯτͷमਖ਼step3. remoteͱͯ͠ొ͞Ε͍ͯΔϦϙδτϦΛ֬ೝɹɹɹstep4. origin(ࣗͷखݩͷ࡞ۀϦϙδτϦ)ϓογϡ͢Δɹɹɹ ϓογϡ͕ྃ͢Δͱ ҎԼͷϘλϯ͔Βࣗͷ࡞ۀϦϙδτϦ͔Βɹɹɹ GUI্ͰForkݩͷϦϙδτϦʹϓϧϦΫΤετΛ࡞ग़དྷΔΑ͏ʹͳΓ·͢
5. ϓϧϦΫΤετΛ࡞ForkݩͷϦϙδτϦʹϓϧϦΫΤετΛ࡞͠·͢ɹɹɹϓϧϦΫΤετʹॻ͍ͨํ͕͍͍ͱࢥ͏͜ͱɹ˞ ProblemɿͲ͏͍͏͕͋ͬͨͷʁɹ˞ SolutionɿͲ͏ͨ͠ͷʁجຊతʹյΕΔमਖ਼Ϛʔδͨ͘͠ͳ͍ͣͳͷͰɺBefore / After ͰͲΜͳخ͍͜͠ͱ͕͋Δͷ͔ɺͦΕͰͳ͍͜ͱΛ֬ೝͨ͠Αʂͱ͍͏ΤϏσϯεΛৄࡉʹॻ͘ͷ͕͓͢͢ΊͰ͢ϝϯςφʔ͞Μͷؾ࣋ͪʹͳͬͯ֬ೝͷίετΛݮΒ͠·͠ΐ͏❗(ٯʹͪΌΜͱॻ͔ͳ͍ͱӳޠͰΊͬͪΌ࣭͞ΕͯࠔΔͷͰɺ΅͘ҰܸͰཹΊΔͨΊʹͳΔ͘ৄ͘͠ॻ͘Α͏ʹ͍ͯ͠·͢)
6. ϨϏϡʔΛड͚Δ(मਖ਼͋Εదٓ)ӳޠͰٞʹಥೖ͢Δͱେมݫ͍͠Ͱ͕͢ɺେ͖ͳमਖ਼(ഁյతͳมߋ)Λͨ͠Γ͢Δͱආ͚ΒΕͳ͍͜ͱଟ͍ͷͰ͍͖ͬͯ·͠ΐ͏
7. ϚʔδΛͭҰ௨Γमਖ਼͕ٞऴΘͬͨΒϚʔδ͞ΕΔ͜ͱΛئ͍ͭͭͪ·͠ΐ͏
࣮ɿաڈͷ͘͠͡ΓμΠδΣετݸਓతʹΓ͕͔ͪͳͱࢥ͏͘͠͡ΓΛڞ༗ աڈissueಡ·ͳ͍ͰϓϧϦΫ࡞ͬͨΒ߈Ϋϩʔζ͞Εͨ݅ ഁյతมߋͨ͠ΒόνϘίʹٞʹͳͬͯݫ͔ͬͨ݅͠ ӳޠͲ͏͠Α͏…ͰΜͰमਖ਼ऴΘͬͯΔͷʹिؒϓϧϦΫग़ͤͳ͔ͬͨ݅
աڈissueಡ·ͳ͍ͰϓϧϦΫ࡞ͬͨΒ߈Ϋϩʔζ͞Εͨ݅ɾաڈ͢Ͱʹٞ͞Εͯ٫Լ͞ΕͯΔमਖ਼Λͯ͠͏ͨͦͷ݅ʹ͍ͭͯ͏աڈʹٞͯ͠Δ͔ΒΫϩʔζ͢Δͥ
ڭ܇ ɾ͡ͿΜ͕ࢥ͍͘Α͏ͳ͜ͱɹଞਓ͕͏͢Ͱʹߟ͍͑ͯΔ͜ͱ͕ଟ͍աڈissue / PR Λݟͯ͡ͿΜͱಉ͡ҙࣝͷٞɾमਖ਼ͰΫϩʔζ͞Εͨͷ͕ͳ͍͔ɹཁ֬ೝ (·͔ͨΑͬͯͳͬͪΌ͏ͷͰ…)ɾେ͖ͳOSSͩͱGitHubͷissueͰͳ͘JIRAͰνέοτཧͯ͠Δ߹͋ΔͷͰGitHubҎ֎దٓνΣοΫ͔ͯ͠ΒϓϧϦΫΤετΛ͛Α͏ ✅
ഁյతมߋͨ͠ΒόνϘίʹٞʹͳͬͯݫ͔ͬͨ݅͠ɾ͕࣌ؒΓͳ͍ͷͰৄࡉׂѪ͠·͢σϑΥϧτͷڍಈ͕มΘΔͷݫ͍͠ͳ͊ʜ
ڭ܇ ɾ͜Ε͔ΒೖΕΔมߋطଘϢʔβʔͷෆརӹʹͳΒͳ͍͔ʁߟ͑ΔมߋىҼͰσϑΥϧτͷڍಈ͕มΘΔ߹Φϓγϣϯͷ༗ແͰطଘͷڍಈΛҡ࣋ग़དྷΔɹΑ͏ʹ͢ΔͳͲҰఆͷྀ͕ඞཁ⚠※ ิɹഁյతͳมߋϥΠϒϥϦͷϝδϟʔόʔδϣϯΞοϓϦϦʔεΛཁٻ͢Δ͜ͱʹͳΔϚΠφʔόʔδϣϯϦϦʔεʹࠞͥͮΒ͍ = Ϛʔδͮ͠Β͍
ӳޠͲ͏͠Α͏…ͰΜͰमਖ਼ऴΘͬͯΔͷʹिؒϓϧϦΫग़ͤͳ͔ͬͨ݅มͳӳޠͩͱʮwwwʯͬͯࢥΘΕͳ͍͔ΊͪΌΊͪΌ৺ͩͬͨ…ԿݴͬͯΔΜͩίΠπXXX
৺ͳ͍
݁ߏɺ͍ӳޠͷਓଟ͍ͧ͋͘·ͰݸਓతͳମײͰ͢
ڭ܇ ɾجຊతʹίʔυͷdiffʹΛ௨ͣ͢ͳͷͰɺӳޠ͕ᘳͰͳͯ͘ͱ͍͑ɺࣄͱಉ͡Α͏ʹ࣮ͷഎܠͳʹΛ͠Α͏ͱࢥͬͯΔ͜ͱΛ͑Δྗେࣄ આ໌͕͍͠߹ྫͱͯ͠ίʔυαϯϓϧΛdescriptionʹࡌͤΔͱΘΓ͍͢ͷͰ͓͢͢ΊͰ͢
·ͱΊ
ɾϓϧϦΫΤετͷωλɹීஈͷۀͰݟ͚ͭΒΕΔɾϓϧϦΫΤετ࡞͔ΒϚʔδͷྲྀΕɹجຊతʹ௨ৗͷ(JU)VC'MPXͱಉ͡ɾमਖ਼༰ʹৗʹݱࡏͷϢʔβʔͱɹϝϯςφʔ͞ΜͷྀΛఴ͑ͯɾϝϯςφʔ͞Μ͕Ϛʔδ͢Δͷʹඞཁͳใ͕ɹἧͬͯΔ͔Λߟ͑ͯ࡞Ε͍ӳޠͰΘΔϓϧϦΫΤετʹͳΔͷͰ৺͠ͳͯ͘େৎ
044׆ಈָ͍͠Ͱ͢Α☺·ͩͷํ͜ͷػձʹνϟϨϯδͯ͠Έ·ͤΜ͔ʁ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠