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 Slide

  2. ࣗݾ঺հ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  6. ޷͖ͳHJUίϚϯυ
    HJUCMBNF

    View Slide

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

    View Slide

  8. ޷͖ͳHJUπʔϧ
    UJH

    View Slide

  9. View Slide

  10. HJU
    ͱͷग़ձ͍

    View Slide

  11. ࣌͸೥݄ɺ౰࣌पΓͷϝΠϯͷόʔδϣϯ؅ཧγεςϜͱݴ͑͹
    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 Slide

  12. ࣌͸೥݄ɺ౰࣌पΓͷϝΠϯͷόʔδϣϯ؅ཧγεςϜͱݴ͑͹
    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 Slide

  13. ϓϧϦ
    ͱ͸ʁ

    View Slide

  14. View Slide

  15. View Slide

  16. %&.0

    View Slide

  17. ؆୯
    ʘ ?P?
    ʗ

    View Slide

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

    View Slide

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

    ͻͱ݄Ͱਓ͕ίϛοτ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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



    View Slide

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


    View Slide

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

    View Slide

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

    View Slide

  27. View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  31. େ͖ͳ࣮૷ͷ
    ϓϧϦ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

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

    View Slide

  37. View Slide

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

    View Slide

  39. ϓϧϦ
    ύλʔϯू

    View Slide

  40. View Slide

  41. View Slide

  42. View Slide

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

    View Slide

  44. ϓϧϦศར5JQT

    View Slide

  45. IUUQTHJUIVCDPNHJUIVCIVC

    View Slide

  46. View Slide

  47. HJUGFUDIQVMMT

    View Slide

  48. HJUGFUDIQVMMT

    View Slide

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

    View Slide

  50. 8F`SFIJSJOH

    View Slide

  51. 5IBOLZPV

    View Slide