企業内のソフトウェア開発にOSSのベストプラクティスを取り入れるやり方
OSS։ൃελΠϧΛ औΓೖΕͯޮతͳ։ൃΛʂ15-D-4#devsumiD
View Slide
Who am I?Yuichi TanakaSolutions Engineera yuichielectricyuichielectric
SHARE YOUR FUN!GitHubʹೖͬͯײͨ͡تͼ
2018/08ʹGitHubʹೖࣾ
URLͷؒҧ͍Λൃݟ
README.mdʹ͜Μͳهࡌ͕ʢ͋ͳͨͷग़൪Ͱ͢ɺ͋ͳͨͷίϯτϦϏϡʔτ͕ඞཁͰ͢ʂʣ
Pull Request
ϨϏϡΞʔ͕ࣗಈͰઃఆ͞ΕΔ
Continuous Integration• ϑΝΠϧ໊ͷνΣοΫ• υΩϡϝϯτͷελΠϧͷνΣοΫ
bot͕࣍Λࣗಈੜ
ϨϏϡʔOKʂ
ࣾͰOSSΛ࣮ફ• ߩݙͰ͖Δتͼ• ॏෳͨ͠ແବͳ࡞ۀ͕ͳ͍• ߴ͍ੜ࢈ੑ
InnerSource
اۀͷιϑτΣΞ։ൃ๊͕͑Δ• ιʔείʔυυΩϡϝϯτ͕؆୯ʹݕࡧͰ͖ͳ͍• ৫ͷࣝڞ༗͕͏·͘Ͱ͖͍ͯͳ͍• ࣾͷιϑτΣΞͷ࠶ར༻ੑ͕͍• νʔϜؒͷίϛϡχέʔγϣϯίετ͕ߴ͍
InnerSourceͱΦʔϓϯιʔεͷ ϕετϓϥΫςΟεΛاۀͷιϑτΣΞ։ൃʹద༻͢ΔऔΓΈͷ͜ͱ
InnerSourceͷΰʔϧ• ίʔυͷ࠶ར༻• νʔϜΛލ͍ͩίϥϘϨʔγϣϯ• ࣭ͷߴ͍ιϑτΣΞΛΑΓߴʹ։ൃ
InnerSourceΛ͍͔ʹ ࣮ફ͢Δ͔ʁ
πʔϧจԽΛม͑Δ৮ഔ• จԽΛม͑Δͷͱͯେม• ͔͠͠ɺπʔϧΛಋೖ͢Δ͜ͱͰ ͦΕΛ͏ਓͷߦಈ͕มΘΔ• ͦΕ͕จԽ͕มΘΔ͖͔͚ͬͱͳΔ
1. ใΛڞ༗͢Δج൫Λ౷Ұ͢Δ• ·ͣଞͷਓ͕ݟΔ͜ͱ͕Ͱ͖ΔΑ͏ʹ͠ͳ͍ͱ ࢝·Βͳ͍ɻ• ӾཡͰ͖ΔਓΛ੍ݶ͓ͯ͘͠໌֬ͳཧ༝͕ͳ͍ݶΓ ύϒϦοΫʹ͓ͯ͘͠ɻ• ݕࡧͰ͖ΔΑ͏ʹͳΔͷඇৗʹେࣄɻ
͋ΒΏΔίϯςϯπʹURLʮ͜͏͍͏ػೳΛ͋ͳͨͷϓϩδΣΫτʹ Ճ͍ͨ͠ΜͰ͚͢Ͳʯʮͦ͏Ͱ͔ͨ͠ɻɻʯʮ͋ʔɺͦΕڈݕ౼ͯ͠Βͳ͍ ͜ͱʹͨ͠ΜͰ͢ʯ
͋ΒΏΔίϯςϯπʹURLʮ͜͏͍͏ػೳΛ͋ͳͨͷϓϩδΣΫτʹ Ճ͍ͨ͠ΜͰ͚͢ͲʯʮͳΔ΄Ͳɺͦ͏͍͏ཧ༝ͩͬͨΜͰ͢Ͷɻ࣌બࢶʹͳ͔ͬͨʓʓͱ͍͏Γํ ͋Δͱࢥ͏ͷͰ͕͢Ͳ͏Ͱ͠ΐ͏ʁʯʮ͋ʔɺͦΕڈݕ౼ͯ͠Βͳ͍ ͜ͱʹͨ͠Μͩɻͦͷ࣌ͷٞͩ͜͜Α https://github.com/hogehoge/fuga/issues/2139ʯɾɾɾ
2. ίϯτϦϏϡʔτͷํΛ໌֬ʹ• ίϯτϦϏϡʔτͷෑډΛԼ͛Δ• νʔϜ֎͔ΒͷίϯτϦϏϡʔτΛ ܴ͍ͯ͠Δ͜ͱΛ໌ه• ίϯτϦϏϡʔτͷ۩ମతͳखॱΛ໌هhttps://github.com/asciidwango/js-primer
CONTRIBUTING.md• όάϨϙʔτͷొͷํ• ػೳཁͷొͷํ• Pull RequestͷૹΓํ• Pull RequestΛड͚ೖΕΔ݅• ϨϏϡʔϓϩηε
https://github.com/asciidwango/js-primer/blob/master/CONTRIBUTING.md
Issue/PR Template
3. ϫʔΫϑϩʔͷࣗಈԽ• มߋʹ༰ʹͬͯϨϏϡΞʔΛࣗಈͰઃఆ• PR͕ϚʔδՄೳͱͳΔ݅ͷ໌֬Խ• υΩϡϝϯταΠτͷࣗಈੜ• ͦͷଞͷϫʔΫϑϩʔࣗಈԽ
CODEOWNERS• ϑΝΠϧͷछྨσΟϨΫτϦຖʹΦʔφʔΛࢦఆՄೳ• JavaScriptͷमਖ਼ϑϩϯτΤϯυνʔϜ• όοΫΤϯυͷमਖ਼όοΫΤϯυνʔϜ• CSSը૾ͷमਖ਼σβΠϯνʔϜ
# ΦʔφʔݸਓͰνʔϜͰྑ͍* @global-owner1 @global-owner2*.js @frontend-team*.go @backend-team*.css @design-team/build/logs/ @infra-teamdocs/* @mr-document
CI + Protected Branch
GitHub Pages
GitHub Actions
GitHub Actions• GitHub্ͷଟ͘ͷΠϕϯτͰτϦΨʔՄೳ• CI/CDతͳ͍ํ͚ͩͰͳ͘ɺࡉ͔ͳϫʔΫϑϩʔ ࣗಈԽʹ༗ޮ• ྫ• ϚʔδࡁΈͷϒϥϯνΛআ͢Δ• ϚʔΫμϯͷ࣍Λੜ͢Δ• WIPͳPRΛؒҧͬͯϚʔδ͠ͳ͍Α͏ʹ͢Δ
InnerSourceΛଅਐ͢ΔΈ1. ใΛڞ༗͢Δج൫Λ౷Ұ͢Δ2. ίϯτϦϏϡʔτͷํΛ໌֬ʹ͢Δ3. ϫʔΫϑϩʔΛࣗಈԽ͢Δ
org/devGroupA org/devGroupB org/devGroupC
org/devGroupA org/devGroupB org/devGroupCorg/javascript-devsorg/securityorg/SQL
PayPal͕ૺ۰ͨ͠• ଞνʔϜ͔ΒͷPRͷϨϏϡʔΛ୭͕Δ͔ʁ• ϘϥϯςΟΞͩͱɺ୭Βͳ͍• ࣗͷϓϩδΣΫτͷλεΫΛ༏ઌ͕ͪ͠
Trusted Committers• ଞνʔϜ͔ΒͷΠγϡʔͷରԠ• ଞνʔϜ͔ΒͷϓϧϦΫΤετͷϨϏϡʔ• υΩϡϝϯτͷඋ• ྑ͍ϓϧϦΫΤετΛ࡞ΔͨΊͷखॱ• ػೳཁɾόάϨϙʔτΛ͛Δखॱ• ྃͷఆٛ• Ϗϧυϓϩηεͷ໌จԽ• ίʔσΟϯάنͷඋ• ϫʔΫϑϩʔࣗಈԽ
Trusted Committers• ՝• ίʔσΟϯά͢Δ͕࣌ؒ͋·Γແ͍ͷͰෆධ• ϓϩδΣΫτͷ͋ΒΏΔྖҬͷϨϏϡʔ͕དྷͯେม• ղܾࡦ• εϓϦϯτຖͷ൪੍• ൪දΛυΩϡϝϯτԽ• ֤ϝϯόʔ͕ಘҙͳྖҬυΩϡϝϯτԽ
·ͱΊ• ৫ͰOSSతʹιϑτΣΞ։ൃΛ͢Δ͜ͱ ߴ͍ੜ࢈ੑɺߴ࣭ͳιϑτΣΞʹܨ͕Δ• GitHubΛ͏·ͬͯ͘৫มֵͷ͖͔͚ͬʹ͠Α͏• ใΛڞ༗͢Δج൫Λ౷Ұ͢Δ• ίϯτϦϏϡʔτͷํΛ໌֬ʹ͢Δ• ϫʔΫϑϩʔΛࣗಈԽ͢Δ
ࢀߟࢿྉ
InnerSourcehttps://www.oreilly.com/programming/free/getting-started-with-innersource.csp
InnerSourcehttp://paypal.github.io/InnerSourceCommons/checklist/
InnerSource Commonshttp://paypal.github.io/InnerSourceCommons/
Open Source Guideshttps://opensource.guide/
ຊޠ༁ϓϩδΣΫτਐߦதhttps://github.com/github/opensource.guide/pull/702
CONTRIBUTING.md• CONTRIBUTING-template• https://github.com/nayafia/contributing-template/blob/master/CONTRIBUTING-template.md• MozillaʹΑΔCONTRIBUTING.mdͷॻ͖ํ• https://mozillascience.github.io/working-open-workshop/contributing/• ຊޠͷCONTRIBUTING.mdͷྫ• https://github.com/asciidwango/js-primer/blob/master/CONTRIBUTING.md
8https://github.co.jp 1