Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

How people build software % 8

Slide 9

Slide 9 text

How people build software % 9

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

How people build software % GitHub Flow 28

Slide 29

Slide 29 text

Create a Feature Branch

Slide 30

Slide 30 text

Add commits

Slide 31

Slide 31 text

Open a Pull Request

Slide 32

Slide 32 text

Discuss and Review Code

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

% % hubot

Slide 35

Slide 35 text

How people build software % Hubot 35

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

Ship

Slide 38

Slide 38 text

How people build software % Deployment API 38

Slide 39

Slide 39 text

Merge with master

Slide 40

Slide 40 text

How people build software % 40

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

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

Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

How people build software % Revert 49

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

how software is built % Blame 51

Slide 52

Slide 52 text

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

Slide 53

Slide 53 text

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

Slide 54

Slide 54 text

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

Slide 55

Slide 55 text

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

Slide 56

Slide 56 text

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

Slide 57

Slide 57 text

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

Slide 58

Slide 58 text

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

Slide 59

Slide 59 text

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

Slide 60

Slide 60 text

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

Slide 61

Slide 61 text

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

Slide 62

Slide 62 text

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

Slide 63

Slide 63 text

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

Slide 64

Slide 64 text

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

Slide 65

Slide 65 text

How people build software Thank you!

Slide 66

Slide 66 text

How people build software Questions?