$30 off During Our Annual Pro Sale. View Details »

InnerSourceのすすめ / InnerSource

Yuichi Tanaka
February 15, 2019

InnerSourceのすすめ / InnerSource

企業内のソフトウェア開発にOSSのベストプラクティスを取り入れるやり方

Yuichi Tanaka

February 15, 2019
Tweet

More Decks by Yuichi Tanaka

Other Decks in Programming

Transcript

  1. OSS։ൃελΠϧΛ

    औΓೖΕ
    ͯޮ཰తͳ։ൃΛʂ
    15-D-4
    #devsumiD

    View Slide

  2. Who am I?
    Yuichi Tanaka
    Solutions Engineer
    a yuichielectric
    yuichielectric

    View Slide

  3. View Slide

  4. SHARE YOUR FUN!
    GitHubʹೖͬͯײͨ͡تͼ

    View Slide

  5. 2018/08ʹGitHubʹೖࣾ

    View Slide

  6. URLͷؒҧ͍Λൃݟ

    View Slide

  7. README.mdʹ͜Μͳهࡌ͕
    ʢ͋ͳͨͷग़൪Ͱ͢ɺ͋ͳͨͷίϯτϦϏϡʔτ͕ඞཁͰ͢ʂʣ

    View Slide

  8. Pull Request

    View Slide

  9. View Slide

  10. ϨϏϡΞʔ͕ࣗಈͰઃఆ͞ΕΔ

    View Slide

  11. Continuous Integration
    • ϑΝΠϧ໊ͷνΣοΫ
    • υΩϡϝϯτͷελΠϧͷνΣοΫ

    View Slide

  12. bot͕໨࣍Λࣗಈੜ੒

    View Slide

  13. ϨϏϡʔOKʂ

    View Slide

  14. ࣾ಺ͰOSSΛ࣮ફ
    • ߩݙͰ͖Δتͼ
    • ॏෳͨ͠ແବͳ࡞ۀ͕ͳ͍
    • ߴ͍ੜ࢈ੑ

    View Slide

  15. InnerSource

    View Slide

  16. اۀͷιϑτ΢ΣΞ։ൃ๊͕͑Δ໰୊
    • ιʔείʔυ΍υΩϡϝϯτ͕؆୯ʹݕࡧͰ͖ͳ͍
    • ૊৫಺ͷ஌ࣝڞ༗͕͏·͘Ͱ͖͍ͯͳ͍
    • ࣾ಺ͷιϑτ΢ΣΞͷ࠶ར༻ੑ͕௿͍
    • νʔϜؒͷίϛϡχέʔγϣϯίετ͕ߴ͍

    View Slide

  17. View Slide

  18. View Slide

  19. View Slide

  20. View Slide

  21. InnerSourceͱ͸Φʔϓϯιʔεͷ

    ϕετϓϥΫςΟεΛاۀ಺ͷιϑτ΢ΣΞ
    ։ൃʹద༻͢ΔऔΓ૊Έͷ͜ͱ

    View Slide

  22. InnerSourceͷΰʔϧ
    • ίʔυͷ࠶ར༻
    • νʔϜΛލ͍ͩίϥϘϨʔγϣϯ
    • ඼࣭ͷߴ͍ιϑτ΢ΣΞΛΑΓߴ଎ʹ։ൃ

    View Slide

  23. InnerSourceΛ͍͔ʹ

    ࣮ફ͢Δ͔ʁ

    View Slide

  24. πʔϧ͸จԽΛม͑Δ৮ഔ
    • จԽΛม͑Δͷ͸ͱͯ΋େม
    • ͔͠͠ɺπʔϧΛಋೖ͢Δ͜ͱͰ

    ͦΕΛ࢖͏ਓͷߦಈ͕มΘΔ
    • ͦΕ͕จԽ͕มΘΔ͖͔͚ͬͱͳΔ

    View Slide

  25. 1. ৘ใΛڞ༗͢Δج൫Λ౷Ұ͢Δ
    • ·ͣ͸ଞͷਓ͕ݟΔ͜ͱ͕Ͱ͖ΔΑ͏ʹ͠ͳ͍ͱ

    ࢝·Βͳ͍ɻ
    • ӾཡͰ͖ΔਓΛ੍ݶ͓ͯ͘͠໌֬ͳཧ༝͕ͳ͍ݶΓ͸

    ύϒϦοΫʹ͓ͯ͘͠ɻ
    • ݕࡧͰ͖ΔΑ͏ʹͳΔͷ΋ඇৗʹେࣄɻ

    View Slide

  26. ͋ΒΏΔίϯςϯπʹURL
    ʮ͜͏͍͏ػೳΛ͋ͳͨͷϓϩδΣΫτʹ

    ௥Ճ͍ͨ͠ΜͰ͚͢Ͳʯ
    ʮͦ͏Ͱ͔ͨ͠ɻɻʯ
    ʮ͋ʔɺͦΕ͸ڈ೥ݕ౼ͯ͠΍Βͳ͍

    ͜ͱʹͨ͠ΜͰ͢ʯ

    View Slide

  27. ͋ΒΏΔίϯςϯπʹURL
    ʮ͜͏͍͏ػೳΛ͋ͳͨͷϓϩδΣΫτʹ

    ௥Ճ͍ͨ͠ΜͰ͚͢Ͳʯ
    ʮͳΔ΄Ͳɺͦ͏͍͏ཧ༝ͩͬͨΜͰ͢Ͷɻ
    ౰࣌͸બ୒ࢶʹͳ͔ͬͨʓʓͱ͍͏΍Γํ΋

    ͋Δͱࢥ͏ͷͰ͕͢Ͳ͏Ͱ͠ΐ͏ʁʯ
    ʮ͋ʔɺͦΕ͸ڈ೥ݕ౼ͯ͠΍Βͳ͍

    ͜ͱʹͨ͠Μͩɻͦͷ࣌ͷٞ࿦͸ͩ͜͜Α

    https://github.com/hogehoge/fuga/issues/2139ʯ
    ɾɾɾ

    View Slide

  28. 2. ίϯτϦϏϡʔτͷ࢓ํΛ໌֬ʹ
    • ίϯτϦϏϡʔτ΁ͷෑډΛԼ͛Δ
    • νʔϜ֎͔ΒͷίϯτϦϏϡʔτΛ

    ׻ܴ͍ͯ͠Δ͜ͱΛ໌ه
    • ίϯτϦϏϡʔτͷ۩ମతͳखॱΛ໌ه
    https://github.com/asciidwango/js-primer

    View Slide

  29. CONTRIBUTING.md
    • όάϨϙʔτͷొ࿥ͷ࢓ํ
    • ػೳཁ๬ͷొ࿥ͷ࢓ํ
    • Pull RequestͷૹΓํ
    • Pull RequestΛड͚ೖΕΔ৚݅
    • ϨϏϡʔϓϩηε

    View Slide

  30. https://github.com/asciidwango/js-primer/blob/master/CONTRIBUTING.md

    View Slide

  31. Issue/PR Template

    View Slide

  32. 3. ϫʔΫϑϩʔͷࣗಈԽ
    • มߋʹ಺༰ʹͬͯϨϏϡΞʔΛࣗಈͰઃఆ
    • PR͕ϚʔδՄೳͱͳΔ৚݅ͷ໌֬Խ
    • υΩϡϝϯταΠτͷࣗಈੜ੒
    • ͦͷଞͷϫʔΫϑϩʔࣗಈԽ

    View Slide

  33. CODEOWNERS
    • ϑΝΠϧͷछྨ΍σΟϨΫτϦຖʹΦʔφʔΛࢦఆՄೳ
    • JavaScriptͷमਖ਼͸ϑϩϯτΤϯυνʔϜ
    • όοΫΤϯυͷमਖ਼͸όοΫΤϯυνʔϜ
    • CSS΍ը૾ͷमਖ਼͸σβΠϯνʔϜ

    View Slide

  34. # Φʔφʔ͸ݸਓͰ΋νʔϜͰ΋ྑ͍
    * @global-owner1 @global-owner2
    *.js @frontend-team
    *.go @backend-team
    *.css @design-team
    /build/logs/ @infra-team
    docs/* @mr-document

    View Slide

  35. CI + Protected Branch

    View Slide

  36. GitHub Pages

    View Slide

  37. View Slide

  38. GitHub Actions

    View Slide

  39. GitHub Actions
    • GitHub্ͷଟ͘ͷΠϕϯτͰτϦΨʔՄೳ
    • CI/CDతͳ࢖͍ํ͚ͩͰͳ͘ɺࡉ͔ͳϫʔΫϑϩʔ

    ࣗಈԽʹ΋༗ޮ
    • ྫ
    • ϚʔδࡁΈͷϒϥϯνΛ࡟আ͢Δ
    • ϚʔΫμ΢ϯͷ໨࣍Λੜ੒͢Δ
    • WIPͳPRΛؒҧͬͯϚʔδ͠ͳ͍Α͏ʹ͢Δ

    View Slide

  40. InnerSourceΛଅਐ͢Δ࢓૊Έ
    1. ৘ใΛڞ༗͢Δج൫Λ౷Ұ͢Δ
    2. ίϯτϦϏϡʔτͷ࢓ํΛ໌֬ʹ͢Δ
    3. ϫʔΫϑϩʔΛࣗಈԽ͢Δ

    View Slide

  41. View Slide

  42. org/devGroupA org/devGroupB org/devGroupC

    View Slide

  43. org/devGroupA org/devGroupB org/devGroupC
    org/javascript-devs
    org/security
    org/SQL

    View Slide

  44. PayPal͕ૺ۰ͨ͠໰୊
    • ଞνʔϜ͔ΒͷPRͷϨϏϡʔΛ୭͕΍Δ͔ʁ
    • ϘϥϯςΟΞͩͱɺ୭΋΍Βͳ͍
    • ࣗ෼ͷϓϩδΣΫτͷλεΫΛ༏ઌ͕ͪ͠

    View Slide

  45. Trusted Committers
    • ଞνʔϜ͔ΒͷΠγϡʔͷରԠ
    • ଞνʔϜ͔ΒͷϓϧϦΫΤετͷϨϏϡʔ
    • υΩϡϝϯτͷ੔උ
    • ྑ͍ϓϧϦΫΤετΛ࡞ΔͨΊͷखॱ
    • ػೳཁ๬ɾόάϨϙʔτΛ౤͛Δखॱ
    • ׬ྃͷఆٛ
    • Ϗϧυϓϩηεͷ໌จԽ
    • ίʔσΟϯάن໿ͷ੔උ
    • ϫʔΫϑϩʔࣗಈԽ

    View Slide

  46. Trusted Committers
    • ՝୊
    • ίʔσΟϯά͢Δ͕࣌ؒ͋·Γແ͍ͷͰෆධ
    • ϓϩδΣΫτͷ͋ΒΏΔྖҬͷϨϏϡʔ͕དྷͯେม
    • ղܾࡦ
    • εϓϦϯτຖͷ౰൪੍
    • ౰൪දΛυΩϡϝϯτԽ
    • ֤ϝϯόʔ͕ಘҙͳྖҬ΋υΩϡϝϯτԽ

    View Slide

  47. ·ͱΊ
    • ૊৫಺ͰOSSతʹιϑτ΢ΣΞ։ൃΛ͢Δ͜ͱ͸

    ߴ͍ੜ࢈ੑɺߴ඼࣭ͳιϑτ΢ΣΞʹܨ͕Δ
    • GitHubΛ͏·͘࢖ͬͯ૊৫มֵͷ͖͔͚ͬʹ͠Α͏
    • ৘ใΛڞ༗͢Δج൫Λ౷Ұ͢Δ
    • ίϯτϦϏϡʔτͷ࢓ํΛ໌֬ʹ͢Δ
    • ϫʔΫϑϩʔΛࣗಈԽ͢Δ

    View Slide

  48. ࢀߟࢿྉ

    View Slide

  49. InnerSource
    https://www.oreilly.com/programming/free/getting-started-with-innersource.csp

    View Slide

  50. InnerSource
    http://paypal.github.io/InnerSourceCommons/checklist/

    View Slide

  51. InnerSource Commons
    http://paypal.github.io/InnerSourceCommons/

    View Slide

  52. Open Source Guides
    https://opensource.guide/

    View Slide

  53. ೔ຊޠ༁ϓϩδΣΫτਐߦத
    https://github.com/github/opensource.guide/pull/702

    View Slide

  54. 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

    View Slide

  55. 8
    https://github.co.jp 1

    View Slide