6/1 github kaigi
ͯͳϒϩάνʔϜͷ։ൃϑϩʔͱGitHub2014/06/01 GitHub Kaigiגࣜձࣾͯͳ@shiba_yu36
View Slide
@shiba_yu36ͯͳϒϩάגࣜձࣾͯͳ
ࠓͷͯͳϒϩάνʔϜʹ͍ͭͯ։ൃϑϩʔͷ՝ͱͦͷղܾ
ͯͳϒϩάνʔϜ
ͯͳϒϩάhttp://hatenablog.com/
5 engineers2 designers
170 pull requests1,281 commitsper month
45 releasesper month
PO
։ൃΛอ͍ͯͯΔ
։ൃϑϩʔͷൃੜ։ൃϑϩʔͷվળon GHE
λεΫཧϨϏϡʔϦϦʔε
ϒϩάνʔϜͰͷ։ൃͷྲྀΕ
։ൃͷྲྀΕ• issueΛొɾΞαΠϯ• issueʹରԠ͢Δbranch࡞• ։ൃɾϨϏϡʔɾmerge• merge͕ཷ·ͬͨΒϦϦʔε
wNBTUFSwຊ൪ͱಉҰwEFWFMPQw։ൃCSBODIɻϦϦʔεՄೳͳͷNFSHFwGFBUVSFCSBODIwػೳ͝ͱͷ։ൃϒϥϯνϒϥϯνӡ༻
ϒϥϯνӡ༻NBTUFSEFWFMPQGFBUVSFCSBODIGFBUVSFCSBODISFMFBTF
ϒϥϯνӡ༻NBTUFSEFWFMPQGFBUVSFCSBODIGFBUVSFCSBODISFMFBTFHJUqPXͷ؆қ൛
GitHubͱλεΫཧ
ҎલͷλεΫཧϝΠϯͷ࣌ IssuesͷΈͷ࣌1. 2.
ϝΠϯͷ࣌
RedmineϝΠϯ• λεΫRedmineͰ• ίʔυϨϏϡʔGitHubͰ
Pull Request
Pull Request։ൃऀ͕྆πʔϧݟΔඞཁ͕͋Δίʔυͱͷ࿈ܞศརͰͳ͍
։ൃऀͷޮ্͕͕Βͳ͍
πʔϧΛҰͭʹIssuesͱίʔυͷ࿈ܞ
πʔϧΛҰͭʹIssuesͱίʔυͷ࿈ܞIssuesͷΈͷ࣌
IssuesϝΠϯ• λεΫཧIssuesͷΈ• ίʔυϨϏϡʔPull Request
։ൃऀͷݟΔπʔϧ͕ݮΔίʔυͱͷ࿈ܞ͕ศར։ൃऀͷޮΞοϓ
a few months later…
ൃੜ!!
νʔϜͷॏཁͳͷԿ?ͦͷ1
νʔϜͷॏཁͳͷԿ?ͦͷ1Issuesʹ༏ઌɾకΊΓͷΈগͳ͍
ࠓ୭͕ԿΛͬͯΔͷ?ͦͷ2
ࠓ୭͕ԿΛͬͯΔͷ?ͦͷ2IssuesͰਐߦதͷλεΫΛ၆ᛌͰ͖ͳ͍
։ൃऀͷޮྑ͍!Ϛωʔδϟ͕νʔϜͷ၆ᛌΛग़དྷͳ͍
IssuesϝΠϯʹ։ൃऀޮอͭνʔϜͷॏཁͳͷਐߦத͚ͩଞͰαϙʔτ+
IssuesϝΠϯʹ։ൃऀޮอͭνʔϜͷॏཁͳͷਐߦத͚ͩଞͰαϙʔτ+ΧϯόϯͰิॿ
x Χϯόϯ
Issuesͷׂ• શͯͷλεΫ͜͜ʹೖͬͯΔ• ୭Ͱ͜͜ʹՃ͍͍ͯ͠• Ճ͞ΕͨλεΫຖேݕ౼
Χϯόϯͷׂ• IssuesͷதͰॏཁͳͷ͚ͩɹɹϚωʔδϟ͕બ• ॏཁͳͷ͔͠Ճ͠ͳ͍• ேձͰ͔͠ݟͳ͍
Χϯόϯೋຕ• ॏཁͳͷλεΫϦετ• ॏཁͳͷਐḿ
ॏཁͳͷ͚ͩϚωʔδϟ͕ᝦՃ
0%~100%ਓ
։ൃऀॏཁ• Ϛωʔδϟ• ேձ
։ൃऀேձҎ֎GitHub͚ͩϚωʔδϟॏཁͳͷ͚ͩϗϫΠτϘʔυͰঢ়گѲ
ॏཁͳͷѲͭͭ͠։ൃऀޮͷྑ͍ཧʹ
GitHubͱλεΫཧ• ։ൃऀʹͱͬͯҰ൪ޮͷྑ͍ɹɹIssuesΛϝΠϯ• ϗϫΠτϘʔυͰॏཁͳͷΛཧ• εΫϥϜ·Ͱ͍͔ͳ͍ΏΔ͍λεΫཧ
GitHubͱϨϏϡʔ
ҎલͷϨϏϡʔͷྲྀΕ
@hitode909 PR͠·ͨ͠ϨϏϡʔΑΖ͓͘͠ئ͍͠·͍͢Γ·͢
@hitode909 PR͠·ͨ͠ϨϏϡʔΑΖ͓͘͠ئ͍͠·͍͢Γ·͢ݸผʹ͓ئ͍
ͳΜ͔ϨϏϡʔ͠Α͏Pull Request͔ΒͦΕͬΆ͍ͭ୳ͯ͠ϨϏϡʔ
ͳΜ͔ϨϏϡʔ͠Α͏Pull Request͔ΒͦΕͬΆ͍ͭ୳ͯ͠ϨϏϡʔPull Request͔Β୳͢
ී௨ͷPRϨϏϡʔ
ͦͷ1Pull Requestͷঢ়ଶ͕͔Βͳ͍!(ͷͰϨϏϡʔΛͨΊΒ͏)• ϨϏϡʔґཔத?• ϨϏϡʔҰͯ͠मਖ਼த?• ϨϏϡʔ͏ऴΘͬͯΔ?
ͦͷ2ϨϏϡʔ͕ফԽ͞Εͣ!Pull Request͕͍͢͝ྔʹ37݅…
ͦͷ3ϕςϥϯ͚͕ͩͻͨ͢Β!ϨϏϡʔ͠ଓ͚ΔΊʹ
GitHubͷϨϏϡʔπʔϧ࠷ߴ!͔͠͠ଅਐগͳ͍
ղܾҊ• ϨϏϡʔঢ়ଶΛ͖ͬΓ• ϨϏϡʔґཔҰཡΛ͔Γ͘͢• ΈΜͳͰϨϏϡʔ͢Δงғؾ࡞Γ
ϨϏϡʔঢ়ଶϥϕϧϨϏϡʔλΠϜ
ϨϏϡʔঢ়ଶϥϕϧϨϏϡʔঢ়ଶΛ͖ͬΓϨϏϡʔґཔҰཡ͔Γ͘͢
ϨϏϡʔঢ়ଶϥϕϧ• Pull RequestʹϥϕϧΛ• ࠓͷϨϏϡʔঢ়ଶΛ͔Γ͘͢
࠶ϨϏϡʔґཔWIP Pull Request
ϨϏϡʔґཔҰཡΛݟͨΒࠓϨϏϡʔ͖͢ͷ͕͔Δ
ࣗͷΞαΠϯ͔ΒϨϏϡʔྃݟ͘͢
https://github.com/shimobayashi/pull-req-labelQVMMSFRMBCFM
ϨϏϡʔλΠϜΈΜͳͰϨϏϡʔ͢Δงғؾ࡞Γ
ϨϏϡʔλΠϜ• ຖϥϯνޙ14:00ʙ• ʮϨϏϡʔґཔʯϥϕϧλεΫΛย͔ͬΒΈΜͳͰݟΔ
ϨϏϡʔλΠϜIRCʹ௨14:01 ikachan01 : Ξο14:01 ikachan03 : ϨϏϡʔλΠϜ͡ΌΜ14:01 ikachan02 : ϫʔΦʂ ϨϏϡʔґཔ͕9݅͋ΔΑʂ ࠓ͙͢νΣοΫνΣοΫʙ http://**** > cockscomb funnelbit hitode909shibayu36 ntakanashi
ϨϏϡʔͷ͖͔͚͕ͬग़དྷͯຖΈΜͳͰϨϏϡʔ͢ΔΑ͏ʹ
GitHubͱϨϏϡʔ• PR͚ͩͩͱϨϏϡʔͷଅਐ͕͏·͘ߦ͔ͳ͔ͬͨ• ϨϏϡʔϥϕϧɾϨϏϡʔλΠϜͰɺΈΜͳͰϨϏϡʔ͢Δงғؾʹ
GitHubͱϦϦʔε
ϦϦʔεͷྲྀΕPull Request͕ͲΜͲΜmerge͞ΕΔͲ͔͜ͰϦϦʔε
σϓϩΠࣗମίϚϯυҰൃʹ͍ͯͨ͠
σϓϩΠ࡞ۀͦͷͷҎ֎ʹϦϦʔεʹඞཁͳͷ͕͋Δ@onishi ͜ͷϦϦʔεΛͯ͠ྑ͍Ͱ͔͢ϦϦʔεલʹݕূڥͰ࠷ऴ֬ೝ͠·͠ΐ͏
ϦϦʔεͷྲྀΕ1. ϚωʔδϟʹϦϦʔεͯ͠Α͍͔֬ೝ2. ΈΜͳͰݕূڥͰ࠷ऴ֬ೝ3. σϓϩΠίϚϯυͰσϓϩΠ!
શ෦ࣗಈԽ͖͠Εͳ͍
ͦͷ1Ϛωʔδϟ֬ೝͤͣʹ!ϦϦʔεͯ͠͠·ͬͨ
ͦͷ1Ϛωʔδϟ֬ೝͤͣʹ!ϦϦʔεͯ͠͠·ͬͨࣗಈԽ͖͠Εͳ͍खॱͰͷϛε
ͦͷ2ࣗಈԽ͖͠Εͳ͍෦Λ!ڭ͑ͳ͍ͱ৽ਓ͕ϦϦʔεͰ͖ͳ͍
σϓϩΠͦͷͷҎ֎Λ্ख͘αϙʔτͰ͖ͳ͍͔
σϓϩΠͦͷͷҎ֎Λ্ख͘αϙʔτͰ͖ͳ͍͔ϦϦʔε༻Pull RequestʹखॱॻΛ·ͱΊΔ
ϦϦʔε༻Pull Request• develop͔ΒmasterͷPRΛɹɹɹϦϦʔεखॱαϙʔτπʔϧʹ͢Δ͜Ε
λΠτϧʹ֓ཁ·ͱ·Δ
ϦϦʔε͞ΕΔϦετΛूΊΔ
֬ೝ͢Δ߲͕νΣοΫϘοΫεͰ·ͱ·Δ
ϦϦʔεલݕূڥͰ֬ೝ͢Δͷ·ͱ·Δ
ίϚϯυҰൃͰશࣗಈ࡞
͋ͱ͜ΕΛͬͯϦϦʔε࡞ۀΛߦ͏
֬ೝͯ͠νΣοΫ
ΈΜͳͰνΣοΫ
શνΣοΫͯ͠ϦϦʔε!!
ϦϦʔεϛε͕ݮΓ୭ͰϦϦʔεͰ͖ΔΑ͏ʹ
HJUQSSFMFBTFhttps://github.com/motemen/git-pr-release• ϦϦʔεͪͷissueΛूΊΔ• ಠࣗʹ࡞ۀखॱॻͷςϯϓϨʔτΛ࡞ΕΔ
GitHubͱϦϦʔε• σϓϩΠग़དྷΔ͚ͩࣗಈԽ• શ෦ࣗಈԽ͍͠• Pull RequestΛ͏·͍͘ɺ࡞ۀखॱͰαϙʔτ
·ͱΊ
λεΫཧϨϏϡʔϦϦʔεIssues x ΧϯόϯϨϏϡʔϥϕϧϨϏϡʔλΠϜϦϦʔεPRgit-pr-release
• GitHubΛϝΠϯʹ࠷େݶ׆༻• ͍ΖΜͳ => ͦͷͨͼղܾ๏Λݕ౼• ͪΐͬͱͨ͠
ϫʔΫϑϩʔվળ͠ଓ͚Δ͜ͱ͕େࣄ
13
ͯͳΠϯλʔϯwࣾһͱಉ͡։ൃϑϩʔΛܦݧͰ͖·͢wֶੜͷํͥͻhttp://developer.hatenastaff.com/entry/2014/05/23/145719