Slide 1

Slide 1 text

্खͳPRͱػೳཁ๬ͷצॴ 
 Contributing a feature request wisely and effectively 
 Speaker: ෢ऀ থل

Slide 2

Slide 2 text

WED Crafters Night ෢ऀ থل (Musha Akinori) ● Senior Expert (Web) at WED, Inc. ○ Software Architect (API, DB, App, System Infrastructure) ● GitHub, Twitter: @knu ● Ruby Committer (2000-), Huginn co-maintainer, FreeBSD ex- committer ● Ruby, JavaScript/TS, Go; Lua, Elisp, Zsh, C 2 ࣗݾ঺հ 
 Who's speaking

Slide 3

Slide 3 text

WED Crafters Night Contents 01 ൑அʹඞཁͳࡐྉΛఏڙ͠Α͏
 Help reviewers make an informed decision 02 খ͍͞είʔϓͰಥഁ͠Α͏
 Keep issue scope small 03 ޓ׵ੑΛܰࢹ͠ͳ͍ɺॏࢹ΋͗͢͠ͳ͍
 Do not underestimate nor overestimate compatibility 04 ϨϏϡϫʔͷؾΛࢄΒ͞ͳ͍
 Never distract reviewers 05 ·ͱΊ
 Wrap-up 3

Slide 4

Slide 4 text

൑அʹඞཁͳࡐྉΛఏڙ͠Α͏ 
 Help reviewers make an informed decision 4

Slide 5

Slide 5 text

WED Crafters Night ϨϏϡϫʔ͸ɺ͍͍΋ͷͰ͋Ε͹औΓೖΕ͍ͨɻͯ͞ɺͦΕ͸͍͍΋ͷͳͷ͔ʁ ● ʮաڈʹࣅͨཁ๬ͳ͔͚ͬͨͬʁʯ Α͘ௐ΂ͯɺ΋͠ࣅͨཁ๬͕աڈʹڋઈ͞Ε͍ͯͨΒͦΕͱͷҧ͍Λૌ͑Α͏ɻ ● ʮΈΜͳ͕ඞཁͱ͍ͯ͠Δ͔ʁʯ ຊ౰͸͜͏ॻ͚ͨΒ͏Ε͍͠͸ͣɺͱ͍͏࣮ྫΛूΊͯϢʔεέʔεΛࣔͦ͏ɻ ● ʮػೳʢؔ਺ʣͷ໊લ΍࣮૷ํࣜ͸ద੾͔ʁʯ ੈʹ͋ΔଞͷݴޠɺϥΠϒϥϦɺAPIΛௐ΂ͯ৘ใΛఏڙ͠Α͏ɻ 5 ൑அʹඞཁͳࡐྉΛఏڙ͠Α͏ Help reviewers make an informed decision

Slide 6

Slide 6 text

WED Crafters Night ռΊ💡 ● ໊લ͸ॏཁɻͰ΋ɺͰ͖Ε͹໊͔͍͍ͬ͜લΛʮൃ໌ʯ͠ͳ͍͜ͱɻ 
 ଞͷࣄྫʹ฿͓͏ɻΈΜͳͷ಄ʹ͢Ͱʹ͋ΔطଘͷޠኮΛ׆༻͠Α͏ɻ 
 ● Ϣʔεέʔε͸ͱʹ͔͘େࣄɻͻͨ͢Βʹݱ࣮త͔ͭΤϨΨϯτͳྫΛࣔ͠ɺͦΕ ͕ͳ͍৔߹ͷΞυϗοΫͳίʔυͱରൺͤ͞Α͏ɻ 
 ● ֎ͷੈք͕Ͳ͏ͳ͍ͬͯΔ͔͸ϨϏϡϫʔ΋ҙ͍ࣝͯ͠ΔɻҰํͰϥΠόϧ͕͜͏ ͔ͩΒɺ͚ͩͩͱఢጊ৺ΛἤΔ͜ͱʹ΋ͳΔͷͰɺ޿͘ྫΛऩू͠Α͏ɻ 6 ൑அʹඞཁͳࡐྉΛఏڙ͠Α͏ Help reviewers make an informed decision

Slide 7

Slide 7 text

খ͍͞είʔϓͰಥഁ͠Α͏ 
 Keep issue scope small 7

Slide 8

Slide 8 text

WED Crafters Night ૖େͳߏ૝ͷ͢΂ͯΛͲ͔Μͱཁ๬͢ΔͱɺϨϏϡʔର৅͕૿͑ɺ௕େͳ๷ ӴઢΛ௕ظઓͰઓ͏Ӌ໨ʹͳΔɻ ● PRΛड͚ͨଆ΋ɺܾஅࣄ߲͕ଟ͍ͱ૊߹ͤʹ໎͏͠ɺड͚ೖΕͮΒ͍ɻ 
 ࠷ऴతͳֆ͸ࣗ෼ͷ৺ʹൿΊͯɺΦϓγϣϯ͸࠷খݶ·Ͱ࡟͗མͱ͠ɺίΞ ͷύʔπΛҰͭͣͭݸผܸഁ͍ͯ͜͠͏ɻ ● γϯάϧΠγϡʔͷํ͕௨͠΍͍͢ɻ 8 খ͍͞είʔϓͰಥഁ͠Α͏ Keep issue scope small

Slide 9

Slide 9 text

WED Crafters Night ෼ׂͷίπ͸ɺ୯ʹ෦෼ʹ෼͚Δ͚ͩͰͳ͘ɺߏ଄ʹ஫໨ͯ͠ػߏΛநग़͢ Δ͜ͱɻ ྫɿΞμϓλʔύλʔϯ΍ϛυϧ΢ΣΞύλʔϯΛಋೖ֦ͯ͠ு͠΍͢ ͘͢Δ→ϩάΛऔΔɺ࣌ؒΛܭଌ͢ΔɺͳͲ͕εϜʔζʹ࣮ݱ Ұ؏ੑ΍ରশੑɺҰἧ͍ͱ͍͏ߟ͑͸৺ͷ᩵೑ɻࢥ͍੾ͬͯল͜͏ɻ ྫɿgetter͕͋Δ͔Βͱ͍ͬͯsetter͸ຊ౰ʹඞཁ͔ʗॳظԽ࣌ʹઃఆ ͨ͠ΒimmutableͰ΋Α͘ͳ͍ʁ 9 খ͍͞είʔϓͰಥഁ͠Α͏ Keep issue scope small

Slide 10

Slide 10 text

WED Crafters Night ռΊ💡 ● ਓͷϦΫΤετʹ৐͔ͬͬͯզాҾਫ͠ͳ͍ɻ·ͯ͠ɺΑΓ೉қ౓ͷߴ͍໰୊ʹ͢Γସ͑ͳ͍ɻγ ϯϓϧͳղܾʹूத͠Α͏ɻ 
 ● ೉͍͠ίʔφʔέʔε͸୨্͛ͯ͠΋͍͍ɻΤϥʔΛग़͢Α͏ʹ͓͍ͯͯ͠ɺޙͰରԠ͢Δͷ΋खɻ 
 ● ରশੑ͕͋Δͱ͔ཧ࿦తʹඒ͍͠ͱ͔͸͋͘·ͰϢʔεέʔεͷิڧʹ࢖͏΋ͷɻҝʹ͢Δ͚ͩͷ ཁ๬͸ආ͚Α͏ɻ"YAGNI" 
 ● RubyຊମʹRails (ActiveSupport)ͷػೳΛΠϯϙʔτ͢ΔࡍͳͲ͸৻ॏʹۛຯͯ͠ɺRubyͷྲّྀ ʹ߹Θͳ͍෦෼͸ࣺͯͭͭগͣͭ͠औΓࠐΜͰ͍Δɻ 
 
 ྫɿHash#slice, except 10 খ͍͞είʔϓͰಥഁ͠Α͏ Keep issue scope small

Slide 11

Slide 11 text

ޓ׵ੑΛܰࢹ͠ͳ͍ɺॏࢹ΋͗͢͠ͳ͍ 
 Do not underestimate nor overestimate compatibility 11

Slide 12

Slide 12 text

WED Crafters Night ޓ׵ੑͷഁյ͸ΈΜͳ͕ݏ͏ɻ ● Ϣʔβʔ͸΋ͪΖΜɺϢʔβʔͨͪͷલʹཱͭϝϯςφʔ΋ɻ ● ͍͘Βϓϥε͕େ͖ͯ͘΋ɺطଘͷΞϓϦΛյ͢ϚΠφε͸༊΍͞Εͳ͍ɻ ● չ͍͕͠ɺաڈͷઃܭͷࣦഊ͸௚ͤͳ͍͜ͱ΋ଟ͍ɻ ຊ࣭తʹ͸ɺόάमਖ਼ΛؚΊͯ͢΂ͯͷมߋ͸ޓ׵ੑʹӨڹ͢Δɻ ● ์ஔ͞Εଓ͚ͨόά͸Ϣʔβʔʹͱͬͯ͸࢓༷Ͱ͋ΓɺͦΕʹґଘ͢Δίʔ υͩͬͯ͋Δɻ 12 ޓ׵ੑΛܰࢹ͠ͳ͍ɺॏࢹ΋͗͢͠ͳ͍ 
 Do not underestimate nor overestimate compatibility

Slide 13

Slide 13 text

WED Crafters Night ҰํͰɺΤϥʔʹͳΔ༻๏͸νϟϯεɻͦ͜͸৽ػೳΛೖΕࠐΉ伱ؒʹͳΔɻ ● ૝ఆ֎ͷҾ਺ɺڐ͞Εͳ͔ͬͨจ๏ ੬ऑੑ΍ޡಈ࡞ɺ௿ੑೳΛট͘Α͏ͳ࢖͍ํ͸Ή͠Ζഇࢭʢඇਪ঑Խʣ͢΂͖͜ ͱ΋͋Δɻ ● ޷·͍͠༻๏ΛՃ଎͢Δ৽͍͠APIΛ࡞ͬͯҠߦΛଅͦ͏ɻ 13 ޓ׵ੑΛܰࢹ͠ͳ͍ɺॏࢹ΋͗͢͠ͳ͍ 
 Do not underestimate nor overestimate compatibility

Slide 14

Slide 14 text

WED Crafters Night ռΊ💡 ● ৽͍͠όʔδϣϯʢAPIʣʹ௥Ճ͞ΕͨػೳΛݹ͍ํʹ΋όοΫϙʔτ͢ Δͷ͸ɺ৽͍͠΋ͷΛ࢖͏ΠϯηϯςΟϒΛݮΒͯ͠ҠߦΛ஗ΒͤΔ͜ ͱʹ΋ͳΔɻ Ruby 1.8→1.9ͷҠߦظʹ͸೉͍͠൑அ͕ඞཁͩͬͨ🥺 
 ● Ϣʔεέʔε͸ਪଌͰͳ࣮͘ࡍʹௐ΂Α͏ɻRubyͷ։ൃʹ͓͍ͯ͸ɺ͢ ΂ͯͷެ։gemͷιʔεΛίʔυαʔνͯ͠ௐ͍ࠪͯ͠Δɻ 14 ޓ׵ੑΛܰࢹ͠ͳ͍ɺॏࢹ΋͗͢͠ͳ͍ 
 Do not underestimate nor overestimate compatibility

Slide 15

Slide 15 text

ϨϏϡϫʔͷؾΛࢄΒ͞ͳ͍ 
 Never distract reviewers 15

Slide 16

Slide 16 text

WED Crafters Night ● ίʔυ͕੔͍ͬͯΔ͜ͱ͸େࣄɻ͜ͷ੔͍ͬͯΔͱ͸ɺελΠϧΨΠυ΍पลߦͷ ελΠϧʹԊ͍ͬͯΔ͜ͱɻͦ͜Ͱࣗ෼ͷඒҙࣝ͸ԡ͠ग़͞ͳ͍ɻ 
 ● CIͷΤϥʔ΍lintܯࠂ͕ग़ͨΒɺશ෦௵͔ͯ͠ΒվΊͯϨϏϡʔґཔ͠Α͏ɻ 
 ● ϨϏϡʔதͷrebase΍squash͸ϓϩδΣΫτͷश׳΍ϨϏϡϫʔͷࢦࣔʹै͓ ͏ɻແஅͰsquash͢Δͱؾ෼Λ֐͢Δਓ΋͍Δ͠ɺ͖Ε͍ʹ੔ཧɾ෼ׂ͞Εͨί ϛοτΛॱʹಡΉͷΛ޷Ήਓ΋͍Δɻ 
 ● ࣮૷ํ๏΍ํ਑ʹ͍ͭͯΘ͔Βͳ͍͜ͱɺܾΊͯ΄͍͜͠ͱ͸ੵۃతʹϨϏϡϫʔ ʹฉ͜͏ɻ࣭໰ʹରౖͯ͠Δਓ͸͍ͳ͍ɻ 16 ϨϏϡϫʔͷؾΛࢄΒ͞ͳ͍ 
 Never distract reviewers

Slide 17

Slide 17 text

WED Crafters Night ռΊ💡 ● git add -p ΍ΤσΟλͷ෦෼εςʔδػೳΛ͏·͘࢖ͬͯɺελΠϧमਖ਼ ΍ϦϑΝΫλϦϯάɺCI΍Ϗϧυ༻ͷมߋͱػೳతมߋͷίϛοτΛ෼͚ Α͏ɻػೳ࣮ݱʹඞਢͰͳ͍มߋ͸ɺϝϯςφʔͷઐݖࣄ߲ͳͷͰඞཁ࠷ খݶʹ͢Δɻ 
 ● ࣗ෼ͷཁ๬ʹ৐͔ͬͬͯείʔϓΛ޿͛Δਓ͕ग़͖ͯͨΒܯռ͠Α͏ɻཧ ղऀ͕ݱΕͨͱتΜͰ҆қʹܴ߹ͯ͠͠·Θͳ͍͜ͱɻͦΕ͸ผʹissue Λ্͛ͯɺͱಥ͖์͢ͷ΋େࣄɻ 17 ϨϏϡϫʔͷؾΛࢄΒ͞ͳ͍ 
 Never distract reviewers

Slide 18

Slide 18 text

·ͱΊ 
 Wrap-up 18

Slide 19

Slide 19 text

WED Crafters Night ● Ͳ͏ͨ͠ΒϨϏϡϫʔ͕͍͍Ͷͱݴ͍΍͍͔͢ɺؾ࣋ͪΑ͘approveͰ͖Δ ͔ɺਅ伨ʹਓͷؾ࣋ͪʹͳͬͯߟ͑ΔɻਓؒΛ૬खͱ͢Δ೉͠͞Λָ͠΋ ͏ɻ ● ͱʹ͔͘ਅ໘໨ͳϦαʔν͕େࣄɻࣗ෼͕ΠγϡʔΛൃݟͨ͠ஈ֊ͰΑ͘ ௐ΂Δɻ੎͍Ͱ࣮૷ͯ͠͠·ͬͯ΋ɺػೳཁ๬Λग़͢ͱ͖ʹվΊͯݚڀ͢ Δɻ ● େ͖ͳ໰୊͸খ͘͞෼ղ͢Δɻ୯ʹ෦෼ʹ෼͚Δ͚ͩͰͳ͘ɺߏ଄΍ػߏ Λൈ͖ग़͢ɻૣ͘औΓࠐ·Ε͚ͨΕ͹ඞਢͰͳ͍΋ͷΛେ୾ʹ࡟͗མͱ͢ɻ ● ܁Γฦ͠޻෉ͯ͠ɺࣗ෼ͷఏҊ͕࣮݁͢Δୡ੒ײΛຯΘ͍ͬͯͩ͘͞ʂ 19 ·ͱΊ 
 Wrap-up