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

効果的にGitHubを使うために

 効果的にGitHubを使うために

GitHub Constellation Tokyo
https://githubuniverse.com/constellation/

Takafumi Ikeda

June 07, 2017
Tweet

More Decks by Takafumi Ikeda

Other Decks in Technology

Transcript

  1. Where software is built
    ޮՌతʹGitHubΛ࢖͏ͨΊʹ
    @ikeike443

    View Slide

  2. !
    Where software is built
    Who am I?
    2
    a ikeike443

    View Slide

  3. #
    Where software is built
    #
    $
    3
    TAKAFUMI IKEDA
    SOLUTIONS ENGINEER
    Who am I?

    View Slide

  4. Where software is built
    %
    Agenda
    4
    •͓٬༷ʹڞ௨͢Δ՝୊
    •։ൃϑϩʔߏஙͷͨΊͷιϦϡʔγϣϯ
    •ҙ֎ͱ஌ΒΕ͍ͯͳ͍Tips
    •·ͱΊ
    %

    View Slide

  5. How people build software
    %
    ڞ௨͢Δ՝୊
    5
    • OrgΛ෼͚͗͢ɺϓϩδΣΫτຖɺ෦ॺຖʹαΠϩԽ͍ͯ͠Δ
    • CI·Ͱख͕ճΒͳ͍ɺϏϧυखॱ͕ҰఆͰͳ͍
    • Pull RequestΛ͏·͘࢖͑ͳ͍ɺϚʔδʹۤ࿑͢Δ
    • νʔϜͷशख़౓ʹ͹Β͖͕ͭ͋Δ
    • Φʔϓϯʹ͍͕ͨ͠ɺಉ࣌ʹ҆શੑ΋୲อ͍ͨ͠

    View Slide

  6. How people build software
    %
    ຊ೔͸
    6
    • Org/Teamͷਖ਼͍͠࢖͍͜ͳ͠ํ
    • GitHub FlowͷԠ༻ɺपลػೳͷ࢖͍ํ
    • ͦͷଞɺϑϩʔߏஙʹ໾ཱͭҙ֎ͱ஌ΒΕ͍ͯͳ͍ػೳͷ঺հ

    View Slide

  7. How people build software
    OrganizationͱTeam
    ࠷ॳʹऔΓ૊Ή΂͖͸͜͜
    7
    %

    View Slide

  8. How people build software
    %
    8

    View Slide

  9. How people build software
    %
    9

    View Slide

  10. How people build software
    %
    OrganizationΛ෼͚͗͢Δ
    10
    • Α͋͘Δࣄྫ:
    • ෦ॺ͝ͱʹOrgΛ෼͚Δʢ૊৫ߏ଄ͱҰகͤ͞Α͏ͱ͢Δʣ
    • ϓϩδΣΫτ͕࢝·ΔͨͼʹOrgΛ෼͚Δ
    • 200Ҏ্ͷOrg͕͋Δྫ΋

    View Slide

  11. How people build software
    %
    Org͕ଟ͍ͱى͖Δ໰୊
    11
    • @mention͸OrgΛԣஅͯ͠ಧ͔ͳ͍ͨΊɺαΠϩԽ
    • ϝϯόʔ͕૿͑ΔͨͼʹOrg΁ͷ௥Ճ࡞ۀ͕ൃੜ

    View Slide

  12. How people build software
    %
    OrgΛগͳ͘ɺTeamΛଟ͘
    12
    • OrgΛͰ͖ΔݶΓগͳ͘͠ɺݟ௨͠ΛΑ͘
    • TeamΛ࢖ͬͯݖݶ؅ཧΛࡉ͘ઃఆ͢Δ͜ͱ
    • LDAP Team SyncΛ͏·͘࢖͍ɺϝϯς޻਺Λ࡟ݮ

    View Slide

  13. How people build software
    %
    OrgΛগͳ͘͢Δͱෆ҆
    13
    • ಁ໌ԽʹΑΔϝϦοτͱɺෆҙͷ৘ใ࿙͍͑ͷؒͰ೰Ή

    View Slide

  14. How people build software
    %
    ಁ໌Խͷ༷ʑͳྫ
    14
    • ͢΂ͯΦʔϓϯ
    • GitHub.comΛ࢖ͬͨOSSӡӦ
    • ࣾ಺͸͢΂ͯΦʔϓϯɺࣾ֎ʹ͸Ϋϩʔζ
    • GitHub.com Business Plan Hosted
    • GHEʹͯPublic Modeӡ༻
    • ࣾһʹ͸Φʔϓϯʹɺύʔτφʔʹ͸੍ݶΛೖΕ͍ͨ
    • ز͔ͭͷύλʔϯ

    View Slide

  15. How people build software
    %
    GitHubͰͰ͖Δݖݶ؅ཧ
    15
    • GHEͷPublic/Private Mode
    • GHEͷΈɺΠϯελϯεશମͷՄࢹੑΛઃఆՄೳ

    View Slide

  16. How people build software
    %
    GitHubͰͰ͖Δݖݶ؅ཧ
    16
    • OrgͷDefault Permission
    • ϝϯόʔͷσϑΥϧτݖݶʹ͍ͭͯ4ͭͷҟͳΔઃఆ͕Մೳ

    View Slide

  17. How people build software
    %
    ࣾһʹΦʔϓϯɺύʔτφʔʹ੍ݶ
    17
    • Α͋͘Δχʔζ
    • ࣾһͱύʔτφʔͰݖݶΛ෼͚͍ͨ
    • ύʔτφʔʹ͸ಛఆͷϦϙδτϦҎ֎͸Ұ੾Ӿཡ͢Βڐͨ͘͠ͳ͍

    View Slide

  18. How people build software
    %
    ࣾһʹΦʔϓϯɺύʔτφʔʹ੍ݶʢ̍ʣ
    18
    • OrgΛ෼͚Δ
    • OrgΛ෼͚ɺશϦϙδτϦΛPrivateʹ͢Δ
    • ࣾһͱύʔτφʔͰ࡞Δ΋ͷɺݟΔ΋ͷ͕׬શʹผͷ৔߹ʹ༗ޮ
    • ྆ऀͷίϥϘϨʔγϣϯΛॏࢹ͠ͳ͍έʔε

    View Slide

  19. How people build software
    %
    ࣾһʹΦʔϓϯɺύʔτφʔʹ੍ݶʢ̎ʣ
    19
    • ίϥϘϨʔλΛ͏·͘׆༻͢Δ
    • ࣾһ͚ͩͷOrgΛ࡞ΓɺύʔτφʔΛೖΕͳ͍
    • ύʔτφʔͷڠྗ͕ඞཁͳϦϙδτϦʹରͯ͠͸ɺݸผʹίϥϘϨʔ
    λͱͯ͠௥Ճ

    View Slide

  20. How people build software
    %
    ࣾһʹΦʔϓϯɺύʔτφʔʹ੍ݶʢ̏ʣ
    20
    • OrgͷσϑΥϧτઃఆΛNoneʹ͢Δ
    • ࣾһ΋ύʔτφʔ΋ಉ͡Orgʹॴଐ͠ɺTeamͰ෼͚ΔΠϝʔδ
    • σϑΥϧτͰ͸Ұ੾PrivateϦϙδτϦΛݟΔ͜ͱ͕Ͱ͖ͳ͘ͳΔ
    • ύʔτφʔTeamΛݸผʹϦϙδτϦʹ௥Ճ͢Δ͜ͱͰݖݶ؅ཧ
    • ͨͩ͠ɺࣾһTeam΋ݸผʹ௥Ճ͢Δඞཁ͋Γɺগ͠൥ࡶ

    View Slide

  21. How people build software
    %
    Org/Team ·ͱΊ
    21
    • OrgΛগͳ͘ɺTeamΛଟ͘
    • @mention͸OrgΛ·ͨ͛ͳ͍
    • OrgͷDefault Permission, Private ModeΛ࢖͍͜ͳ͢
    • Outside Collaborator͸֎෦ύʔτʔφʔʹ࠷ద

    View Slide

  22. How people build software
    %
    Org/Team Tips
    22
    • TeamΛ૊৫ߏ଄ͱҰகͤ͞Δඞཁ͸ͳ͍
    • Java Specialists, Security, SQL, Managers, Designers, …
    • ઐ໳ੑ΍ؔ৺ࣄͰ౎౓άϧʔϐϯά͢Δ͜ͱ΋େม༗ޮ
    • See also: https://github.com/blog/2316-organize-your-experts-with-ad-hoc-teams

    View Slide

  23. How people build software
    %
    Org/Team Tips
    23
    • OrgΛू໿͢Δͱ
    • ϦϙδτϦͷ਺͕๲େʹͳΓ୳͢ͷ͕େมʁ

    View Slide

  24. How people build software
    %
    Org/Team Tips
    24
    • Topics
    • ϦϙδτϦͷλά෇͚͕Մೳɺݕࡧʹ΋࢖͑Δ
    • GHE͸2.10ΑΓ

    View Slide

  25. How people build software
    %
    Org/Team Tips
    25
    • Pinned Repositories
    • ୅දతͳϦϙδτϦ͸ઌ಄ʹషΓ෇͚͓͚ͯΔ

    View Slide

  26. How people build software
    %
    ໺ੜͷ Org/Team ྫ
    26

    View Slide

  27. How people build software
    GitHub Flow
    ͢΂ͯͷجຊͰ͢
    27
    %

    View Slide

  28. How people build software
    %
    GitHub Flow
    28

    View Slide

  29. Create a Feature Branch

    View Slide

  30. Add commits

    View Slide

  31. Open a Pull Request

    View Slide

  32. Discuss and Review Code

    View Slide

  33. How people build software
    %
    ίʔυϨϏϡʔ
    33

    View Slide

  34. %
    %
    hubot

    View Slide

  35. How people build software
    %
    Hubot
    35

    View Slide

  36. How people build software
    %
    CI status Λ PR ʹ໭͢
    36

    View Slide

  37. Ship

    View Slide

  38. How people build software
    %
    Deployment API
    38

    View Slide

  39. Merge with master

    View Slide

  40. How people build software
    %
    40

    View Slide

  41. How people build software
    %
    Α͋͘Δޡղ
    41
    • ϚʔδલʹσϓϩΠͳΜͯͰ͖ͳ͍͔Βҧ͏ϑϩʔʹ
    • GitHub Flow͸Web։ൃҎ֎ʹ͸࢖͑ͳ͍
    • Git-Flow͕େن໛։ൃʹ͸޲͍͍ͯΔ

    View Slide

  42. How people build software
    %
    ϙΠϯτ
    42
    • ੜଘظؒͷ௕͍ϒϥϯνΛݮΒ͢͜ͱ
    • ཧ૝తʹ͸MasterҰຊͷΈ
    • Pull Requestϒϥϯν͸Ͱ͖Δ͚ͩૣ͘Ϛʔδ͢Δ
    • ҰͭҰͭͷมߋΛখ͘͞
    • ϑΟʔνϟʔϑϥάͳͲ΋༗ޮʹ࢖͏
    • Ϛʔδͨ͠Β͙͢ʹফ͢

    View Slide

  43. How people build software
    %
    ෳ਺ͷϒϥϯν͕ඞཁ
    43
    • ͦΕͧΕͷϒϥϯνʹରͯ͠GitHub Flow͕Մೳ
    Open a Pull Request
    Open a Pull Request

    View Slide

  44. How people build software
    %
    ෳ਺ͷϒϥϯν͕ඞཁ
    44
    • ϒϥϯν͕ଟ͍΄ͲBack Portͷ਺͕૿͑ɺෳࡶԽ
    • ϒϥϯνΛݮΒ͢Α͏ʹ޻෉͢Δ͜ͱ͕ॏཁ

    View Slide

  45. How people build software
    %
    λάͰ୅ସͰ͖ͳ͍͔ߟ͑ͯΈΔ
    45
    • ग़ՙόʔδϣϯɺίʔυϑϦʔζɺQAظ͕ؒඞཁͰ͋Ε͹ɺλάͰ୅ସͰ͖ͳ͍͔
    • ඞཁ͕ੜͨ͡ͱ͖ͷΈϒϥϯνΛ࡞ΓɺऴΘͬͨΒফ͢
    • ͜͜Ͱ΋ෳ਺όʔδϣϯ͕ಉ࣌ʹଘࡏ͢ΔͱෳࡶʹͳΔ͜ͱʹ஫ҙ
    v0.1.pre
    v0.1.pre.2
    v0.1
    v0.2.pre

    View Slide

  46. How people build software
    %
    GitHub Flow·ͱΊ
    46
    • GitHub Flow͸Ԡ༻Մೳ
    • ௕ظؒϒϥϯνͷ਺ΛͰ͖Δ͚ͩݮΒ͢
    • λάΛ༗ޮ׆༻͢Δ

    View Slide

  47. How people build software
    Pull Requestपลͷศརͳػೳ
    ͞·͟·ͳϫʔΫϑϩʔΛՄೳʹ
    47
    %

    View Slide

  48. How people build software
    %
    ศརͳػೳ
    48
    • Revert
    • Blame
    • Update Branch
    • Conflictͷղফ
    • ֤छϚʔδΦϓγϣϯ
    • ForkઌͷฤूڐՄ
    • etc

    View Slide

  49. How people build software
    %
    Revert
    49

    View Slide

  50. how software is built
    %
    Revert
    50
    ೔ຊޠԽͨ͠ ςετ΋मਖ਼
    ؔ܎ͷͳ͍मਖ਼ REVERT
    Pull Request
    Pull Request͕ؔ࿈͢ΔίϛοτΛ஌͍ͬͯΔ

    View Slide

  51. how software is built
    %
    Blame
    51

    View Slide

  52. the best way to build and ship software
    %
    52
    Web UI͔ΒͷConflictղফ

    View Slide

  53. How people build software
    Protected Branches
    ॊೈ͔ͭηΩϡΞͳϫʔΫϑϩʔߏஙΛՄೳʹ
    53
    %

    View Slide

  54. How people build software
    %
    Protected Branches
    54
    • ༷ʑͳܗͰϒϥϯνΛอޢ
    • Delete, Push -f ͷېࢭ
    • ϨϏϡʔͷඞਢԽ
    • CIͳͲεςʔλενΣοΫ
    • ϚʔδՄೳͳਓ/TeamΛ੍ݶ

    View Slide

  55. How people build software
    ͦͷଞͷศརػೳ
    ࡉ͔͗ͯ͢఻ΘΒͳ͍ػೳ
    55
    %

    View Slide

  56. How people build software
    %
    ҙ֎ͱ஌ΒΕ͍ͯͳ͍ػೳ܈
    56
    • Release
    • Pre-Receive Hooks (GHE Only)
    • ͞·͟·ͳRenderingΦϓγϣϯ
    • SVN Bridge
    • git-import

    View Slide

  57. How people build software
    %
    Release
    57
    • Tagʹؔ࿈෇͚ͯΞηοτ΍ςΩετΛ؅ཧͰ͖Δ

    View Slide

  58. How people build software
    %
    Pre Receive Hooks
    58
    • GHE only͕ͩɺαʔόαΠυͷPre Receive Hook͕ॻ͚Δ
    • ৘ใ࿙͍͑νΣοΫɺPGP伴ͷνΣοΫͳͲͳͲʹ
    • ηΩϡϦςΟ্ͷݒ೦Λ༧๷తʹνΣοΫͰ͖Δ
    • ࣗ෼ͷ޷͖ͳϥΠϒϥϦɺݴޠΛΠϯετʔϧՄೳ
    • Chroot, DockerରԠ
    • جຊతʹ͸ͳΜͰ΋Ͱ͖ΔͷͰӡ༻ʹ͸஫ҙ͕ඞཁ

    View Slide

  59. How people build software
    %
    ༷ʑͳϨϯμϦϯά
    59
    • ը૾
    • PDF
    • GeoJson
    • Jupyternootbook
    • STL
    • CSV/TSV
    • Markdown
    • etc

    View Slide

  60. How people build software
    %
    ༷ʑͳϨϯμϦϯά: STL
    60

    View Slide

  61. How people build software
    %
    ༷ʑͳϨϯμϦϯά: CSV/TSV
    61

    View Slide

  62. How people build software
    %
    SVN Bridge
    62
    • GitHubͷΫϥΠΞϯτͱͯ͠SVNΛར༻Մೳ

    View Slide

  63. How people build software
    %
    git-import
    63
    • ༷ʑͳVCS͔ΒͷҠߦΛαϙʔτ

    View Slide

  64. How people build software
    %
    ·ͱΊ
    64
    • Org/TeamΛ஌Γɺ্खʹ࢖͍͜ͳͦ͏
    • GitHub Flow͸༷ʑͳܗͰԠ༻Մೳ
    • Protected BranchesΛ࢝ΊɺػೳΛ஌Γɺ։ൃϑϩʔΛߏங͠Α͏
    • ࢼߦࡨޡ͠ɺࣗ͝਎ʹͱͬͯͷ࠷దղΛݟग़ͦ͏

    View Slide

  65. How people build software
    Thank you!

    View Slide

  66. How people build software
    Questions?

    View Slide