Upgrade to Pro — share decks privately, control downloads, hide ads and more …

pull request を利用した開発ワークフロー

pull request を利用した開発ワークフロー

pull request を利用した開発ワークフローの話しですが、あんまりプルリの話ししてないし、コードレビュー的なお話しが多いです…。

Yuichi Tateno

August 28, 2013
Tweet

More Decks by Yuichi Tateno

Other Decks in Technology

Transcript

  1. QVMMSFRVFTU
    Λར༻ͨ͠
    ։ൃϫʔΫϑϩʔ
    JETFDPOEMJGF
    !IPUDIQPUDI

    View full-size slide

  2. wJETFDPOEMJGF
    w!IPUDIQPUDI
    wؘ໺༞Ұ:VJDIJ5BUFOP
    w71PG&OHJOOFSJOHBU$PPLQBE
    w
    w3VCZ (JU

    View full-size slide

  3. wJETFDPOEMJGF
    w!IPUDIQPUDI
    wؘ໺༞Ұ:VJDIJ5BUFOP
    w71PG&OHJOOFSJOHBU$PPLQBE
    w
    w3VCZ (JU

    View full-size slide

  4. wJETFDPOEMJGF
    w!IPUDIQPUDI
    wؘ໺༞Ұ:VJDIJ5BUFOP
    w71PG&OHJOOFSJOHBU$PPLQBE
    w
    w3VCZ (JU

    View full-size slide

  5. ޷͖ͳHJUίϚϯυ
    HJUCMBNF

    View full-size slide

  6. Α͘࢖ͬͯΔ
    HJUίϚϯυ
    IJTUPSZcHSFQHJUcBXL\QSJOU^
    cTPSUcVOJRDcTPSUOScIFBE
    HJUHSFQ
    HJUDPNNJU
    HJUQVTI
    HJUQVMM
    HJUDP
    HJUEJGG
    HJUBEE
    HJUTUBUVT
    HJUDMPOF
    HJUSFTFU
    HJUMPH
    HJUCS
    HJUSFCBTF
    HJUNFSHF

    View full-size slide

  7. ޷͖ͳHJUπʔϧ
    UJH

    View full-size slide

  8. HJU
    ͱͷग़ձ͍

    View full-size slide

  9. ࣌͸೥݄ɺ౰࣌पΓͷϝΠϯͷόʔδϣϯ؅ཧγεςϜͱݴ͑͹
    TVCWFSTJPOͰ͋ͬͨɻίϛοτͨ͠ΒϩʔΧϧͰͳ͘ɺதԝϨϙδτϦ
    ʹ൓ө͞ΕͯγεςϜɺٱ͠ͿΓʹࠓ࢖ͬͯΈΔͱϏοΫϦ͢ΔɻͦΜͳ
    ౰࣌෼ࢄWDTΛ࢖͍͍ͨҰ෦ͷਓ͕࢖͍ͬͯͨͷ͕TWLͱ͍͏TWOΛར༻
    ͨ͠γεςϜͩͬͨɻ͔͠͠౰࣌ͷࢲ͸෼ࢄWDTͷϝϦοτΛ΄ͱΜͲཧ
    ղͯ͠ͳ͔ͬͨͨΊ࢖ͬͯډͳ͔ͬͨɻ·ͨTWOTWL͸ϒϥϯνΛ೿ੜ͞
    ͤΔίετɺϒϥϯν΁ͷεΠονίετ͕ߴ͔ͬͨͨΊɺ࢖͍উख͕Π
    ϚΠνͩͬͨɻͦΜͳதɺ஌Γ߹͍ͷΪʔΫͰ͋ΔUZQFTUFS͕HJU͕͍͍
    ෺ͩͱΦεεϝ͍ͯͨ͠ͷͰɺ࢖ͬͯΈͨͷ͕࢝·ΓͰ͋Δɻ࠷ॳ͸ϒϥ
    ϯνͷεΠονϯάίετ͕଎͍͜ͱʹڻ͖ɺঃʑʹ෼ࢄWDTͰ͋Δ͜ͱ
    ͷྑ͞΋ཧղ͢Δ͜ͱ͕Ͱ͖ͨɻ·ͨHJUYYYͷ$6*πʔϧ܈ͷVOJYత
    ͳɺίϚϯυΛ૊Έ߹Θ༷ͤͯʑͳ͜ͱ͕ग़དྷΔࢥ૝΍ɺHJUͷઃܭΛݟΔ
    ͱɺ੍࡞ऀͷMJOVTͷײੑͱ͍͏͔ηϯεͷྑ͞ʹ͸ڻ͔͞Εͨ෺ͩɻ࢓ࣄ
    Ͱ΋HJUTWOΛ࢖͍࢝Ίͨͷ͕ͩɺ͔͠͠ϝΠϯͷϨϙδτϦ͸TWOͰ͋ͬ
    ͨͨΊɺHJUͱTWOͷΠϯςάϨʔτ͕൥Θ͘͠ײ͍ͯͨ͡ͷͰ͋ͬͨɻͦΜ
    ͳதɺ޾͔ෆ޾͔ɺձࣾͷTWOͷϨϙδτϦ͕յΕΔࣄ͕݅ൃੜ͢Δɻॏཁ
    ͳதԝόʔδϣϯ؅ཧγεςϜͳͷͰϛϥʔϦϯάͳ3"*%Ͱߏங͞Ε͍ͯ
    ΔͷͰͬ͘͞ͱ෮چɺͱࢥ͍͖΍࢒೦ɺ3"*%ͪΌΜͰͨ͠ʘ ?P?
    ʗͱ
    ͍͏ϏοΫϦࣄ͕݅ൃੜɻ͏͓ʔେมٽ͚Δʙɺ͔ͨͩ͠͠Ͱ͸స͹͵ɺͱ
    ͍͏Θ͚ͰͲ͏TWO͔ΒHJUʹࣾ಺ͷ༷ʑͳγεςϜɺσϓϩΠ౳ʑΛҠͤΔ
    ͔ߟ࡯ɺHJUʹҠͤͦ͏ͩΑͶɺͱ͍͏͜ͱͰࣾ಺ͷTWOΛHJUʹҠߦ͢Δ͜

    View full-size slide

  10. ࣌͸೥݄ɺ౰࣌पΓͷϝΠϯͷόʔδϣϯ؅ཧγεςϜͱݴ͑͹
    TVCWFSTJPOͰ͋ͬͨɻίϛοτͨ͠ΒϩʔΧϧͰͳ͘ɺதԝϨϙδτϦ
    ʹ൓ө͞ΕͯγεςϜɺٱ͠ͿΓʹࠓ࢖ͬͯΈΔͱϏοΫϦ͢ΔɻͦΜͳ
    ౰࣌෼ࢄWDTΛ࢖͍͍ͨҰ෦ͷਓ͕࢖͍ͬͯͨͷ͕TWLͱ͍͏TWOΛར༻
    ͨ͠γεςϜͩͬͨɻ͔͠͠౰࣌ͷࢲ͸෼ࢄWDTͷϝϦοτΛ΄ͱΜͲཧ
    ղͯ͠ͳ͔ͬͨͨΊ࢖ͬͯډͳ͔ͬͨɻ·ͨTWOTWL͸ϒϥϯνΛ೿ੜ͞
    ͤΔίετɺϒϥϯν΁ͷεΠονίετ͕ߴ͔ͬͨͨΊɺ࢖͍উख͕Π
    ϚΠνͩͬͨɻͦΜͳதɺ஌Γ߹͍ͷΪʔΫͰ͋ΔUZQFTUFS͕HJU͕͍͍
    ෺ͩͱΦεεϝ͍ͯͨ͠ͷͰɺ࢖ͬͯΈͨͷ͕࢝·ΓͰ͋Δɻ࠷ॳ͸ϒϥ
    ϯνͷεΠονϯάίετ͕଎͍͜ͱʹڻ͖ɺঃʑʹ෼ࢄWDTͰ͋Δ͜ͱ
    ͷྑ͞΋ཧղ͢Δ͜ͱ͕Ͱ͖ͨɻ·ͨHJUYYYͷ$6*πʔϧ܈ͷVOJYత
    ͳɺίϚϯυΛ૊Έ߹Θ༷ͤͯʑͳ͜ͱ͕ग़དྷΔࢥ૝΍ɺHJUͷઃܭΛݟΔ
    ͱɺ੍࡞ऀͷMJOVTͷײੑͱ͍͏͔ηϯεͷྑ͞ʹ͸ڻ͔͞Εͨ෺ͩɻ࢓ࣄ
    Ͱ΋HJUTWOΛ࢖͍࢝Ίͨͷ͕ͩɺ͔͠͠ϝΠϯͷϨϙδτϦ͸TWOͰ͋ͬ
    ͨͨΊɺHJUͱTWOͷΠϯςάϨʔτ͕൥Θ͘͠ײ͍ͯͨ͡ͷͰ͋ͬͨɻͦΜ
    ͳதɺ޾͔ෆ޾͔ɺձࣾͷTWOͷϨϙδτϦ͕յΕΔࣄ͕݅ൃੜ͢Δɻॏཁ
    ͳதԝόʔδϣϯ؅ཧγεςϜͳͷͰϛϥʔϦϯάͳ3"*%Ͱߏங͞Ε͍ͯ
    ΔͷͰͬ͘͞ͱ෮چɺͱࢥ͍͖΍࢒೦ɺ3"*%ͪΌΜͰͨ͠ʘ ?P?
    ʗͱ
    ͍͏ϏοΫϦࣄ͕݅ൃੜɻ͏͓ʔେมٽ͚Δʙɺ͔ͨͩ͠͠Ͱ͸స͹͵ɺͱ
    ͍͏Θ͚ͰͲ͏TWO͔ΒHJUʹࣾ಺ͷ༷ʑͳγεςϜɺσϓϩΠ౳ʑΛҠͤΔ
    ͔ߟ࡯ɺHJUʹҠͤͦ͏ͩΑͶɺͱ͍͏͜ͱͰࣾ಺ͷTWOΛHJUʹҠߦ͢Δ͜
    ௕͍ͷͰ
    ׂѪ

    View full-size slide

  11. ϓϧϦ
    ͱ͸ʁ

    View full-size slide

  12. ؆୯
    ʘ ?P?
    ʗ

    View full-size slide

  13. $00,1"%ͷ
    HJUIVC ()&
    ։ൃ

    View full-size slide

  14. ຖ݄໿ݸͷϓϧϦ
    HJUMPHTJODFAEBUFWN:NEAcHSFQF?"VUIPSc
    BXL\QSJOU^cTPSUcVOJRDcTPSUOScXDM

    ͻͱ݄Ͱਓ͕ίϛοτ

    View full-size slide

  15. $00,1"%Ͱͷ
    ։ൃϫʔΫϑϩʔ
    ࣗ෼ͷϨϙδτϦͱͯ͠GPSL
    ϒϥϯνΛ੾ͬͯ։ൃ
    ϝΠϯϨϙδτϦ΁ϓϧϦ
    ίʔυϨϏϡʔ
    ϝΠϯ΁Ϛʔδ

    View full-size slide

  16. ϓϧϦʹΑΔ
    ։ൃͷ΍Γ΍͢͞

    View full-size slide

  17. ίʔυϨϏϡʔ
    ͷྑ͞

    View full-size slide

  18. ίʔυϨϏϡʔ
    ͷྑ͞
    ৘ใͷڞ༗



    View full-size slide

  19. ίʔυϨϏϡʔ
    ͷྑ͞
    ৘ใͷڞ༗
    ʮ៉ྷͳίʔυʯΛҙࣝ


    View full-size slide

  20. ίʔυϨϏϡʔ
    ͷྑ͞
    ৘ใͷڞ༗
    ʮ៉ྷͳίʔυʯΛҙࣝ
    ੹೚ͷ෼ࢄ

    View full-size slide

  21. ίʔυϨϏϡʔ
    ͷྑ͞
    ৘ใͷڞ༗
    ʮ៉ྷͳίʔυʯΛҙࣝ
    ੹೚ͷ෼ࢄ
    ֶश

    View full-size slide

  22. ίʔυϨϏϡʔ
    ͷ
    ίετΛԼ͛Δ

    View full-size slide

  23. ίʔυϨϏϡʔ
    ͷίετΛԼ͛Δ
    ϏδωεϩδοΫͷࢹ఺
    ˠνʔϜͷϝϯόʔ͸͔ͬ͠Γͱɻଞͷ
    ϝϯόʔ͸ৄࡉ·ͰϨϏϡʔ͠ͳ͍
    ίʔυͷ࣭ͷࢹ఺
    ˠৄࡉͳ࢓༷Λ஌Βͳͯ͘΋ࢦఠͰ͖Δ
    ͷͰɺίετ͕͋·Γ͔͔Βͳ͍

    View full-size slide

  24. ϓϧϦ͸
    ҰߦͷมߋͰ΋ૹΔ

    View full-size slide

  25. େ͖ͳ࣮૷ͷ
    ϓϧϦ

    View full-size slide

  26. େ͖ͳ࣮૷ͷ
    ϓϧϦ
    ϨϏϡʔ͓ئ͍͠·͢

    View full-size slide

  27. େ͖ͳ࣮૷ͷ
    ϓϧϦ
    ϨϏϡʔ͓ئ͍͠·͢
    ˣ
    ߦͷEJGG

    View full-size slide

  28. େ͖ͳ࣮૷ͷ
    ϓϧϦ
    ϨϏϡʔ͓ئ͍͠·͢
    ˣ
    ߦͷEJGG
    ˣ
    ͑ͬʘ ?P?
    ʗ

    View full-size slide

  29. େ͖ͳ࣮૷ͷ
    ϓϧϦ
    ڊେͳϓϧϦ
    ϨϏϡʔʹ͕࣌ؒ
    ͔͔Δ
    ͦ΋ͦ΋ࠜຊతͳ
    ઃܭϛε͕͋Δͱʜ

    View full-size slide

  30. େ͖ͳ࣮૷ͷϓϧϦ
    <8*1>ͷϓϧϦΛ࡞Δ
    ˞8*1 8PSL*O1SPHSFTT

    ࢓༷ɾઃܭʹ͍ͭͯٞ࿦
    ঃʑʹ࣮૷ɺదٓϨϏϡϫʔ
    ͕֬ೝ
    <8*1>Λফ͠ɺ࠷ऴϨϏϡʔ

    View full-size slide

  31. ղΓ΍͍͢
    ϓϧϦΛૹΔ

    View full-size slide

  32. ϓϧϦ
    ύλʔϯू

    View full-size slide

  33. ޮՌతͳ
    ϨϏϡʔίϝϯτ
    <.645>ඞͣ௚͢΂͖ɺྑ͘ͳ͍ίʔυʹ
    <*.0>๻ͳΒ͜͏ॻ͚͘ͲͲ͏ʁҙݟ΍؇΍
    ͔ͳࢦఠ
    OJUTQJDL
    ΄Μͷখ͞ͳࢦఠɻΠ
    ϯσϯτϛεͳͲͷࡉ͔͍ͱ͜Ζʹɻ

    View full-size slide

  34. ϓϧϦศར5JQT

    View full-size slide

  35. IUUQTHJUIVCDPNHJUIVCIVC

    View full-size slide

  36. HJUGFUDIQVMMT

    View full-size slide

  37. HJUGFUDIQVMMT

    View full-size slide

  38. QVMMSFRVFTU
    Λར༻ͨ͠
    ։ൃϫʔΫϑϩʔ

    View full-size slide