Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
開発生産性実践入門 Pullrequestの粒度編
Search
starfish719
October 05, 2023
0
2k
開発生産性実践入門 Pullrequestの粒度編
starfish719
October 05, 2023
Tweet
Share
More Decks by starfish719
See All by starfish719
Findy AI+の開発、運用におけるMCP活用事例
starfish719
0
1.5k
生成AIが出力するテストコードのリアル よくあるコードと改善のヒント
starfish719
0
620
生成AI時代に若手エンジニアが最初に覚えるべき内容と、その学習法
starfish719
2
730
開発生産性を上げるための生成AI活用術
starfish719
3
2.9k
ファインディ株式会社におけるMCP活用とサービス開発
starfish719
0
4.5k
ファインディ株式会社における生成AI活用までの軌跡
starfish719
1
4k
ファインディの テックブログ爆誕までの軌跡
starfish719
3
3.3k
動作確認やテストで漏れがちな観点3選
starfish719
6
1.5k
GitHub CopilotでTypeScriptの コード生成するワザップ
starfish719
28
6.9k
Featured
See All Featured
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
130
Ethics towards AI in product and experience design
skipperchong
1
140
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
290
The Invisible Side of Design
smashingmag
302
51k
A designer walks into a library…
pauljervisheath
210
24k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.6k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
34k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
115
91k
Are puppies a ranking factor?
jonoalderson
0
2.3k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.8k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
46
Transcript
։ൃੜ࢈ੑ ࣮ફೖ Pullrequestͷཻฤ ։ൃੜ࢈ੑLT Night in Ԭ 2023/10/06(ۚ)
ࠓ͢͜ͱ • ڊେͳPullrequest • αΠζͱཻͷҧ͍ • దͳཻͱ • దͳཻΛҡ࣋͢ΔͨΊʹ •
·ͱΊ 2
ڊେͳPullrequest
4
5
ϨϏϡʔ͔ྃΒϚʔδ·Ͱͷ͕࣌ؒ͘ͳΔ • topic branchͷੜଘظ͕ؒ͘ͳΔ ◦ conflictͷൃੜ͕֬ߴ͘ͳΔ ▪ conflictͷղফʹ͕࣌ؒऔΒΕΔ ▪ conflictͷղফʹࣦഊ͢Δ
• CI͕ίέΔ • मਖ਼ͯ͠ΔؒʹଞͷϓϧϦΫͷमਖ਼͕ೖͬͯ͘Δ ◦ conflictͷൃੜ͕֬ߴ͘ͳΔ ▪ conflictͷղফʹ͕࣌ؒऔΒΕΔ ▪ conflictͷղফʹࣦഊ͢Δ 6
7
ൃੜ࣌ͷӨڹൣғ͕େ͖͘ͳΔ • ൃੜͷݪҼͷಛఆʹֻ͕͔࣌ؒΔ ◦ มߋ༰͕ଟذʹ͍ͬͯΔͷͰɺͲͷमਖ਼͕ݪҼͳͷ͔ௐࠪʹ༨ܭͳֻ͕͔࣌ؒΔ ◦ revert࣌ʹඞཁҎ্ʹrevert͞Εͯ͠·͏ • ϨϏϡʔͷ࣭ͷԼ ◦
ϨϏϡϫʔ͕ݟΔ͖ൣғ͕͘ͳΓɺೝෛՙ্͕͕ͬͯ͠·͏ ◦ ͦͬดͨ͘͡͠ͳΔɺɺɺ ▪ ͋ͱͰ͕࣌ؒ͋Δ࣌ʹݟΑ͏ɻͱͳͬͯ͠·͍ɺ݁ՌతʹϚʔδ·Ͱͷ͕࣌ؒ৳ͼ ͯ͠·͏ • ࢦఠ༰͕૿͑ɺ݁ՌతʹखΓ͕૿͑Δ 8
αΠζͱཻͷҧ͍
ԿΛͬͯʮڊେʯͳPullrequestͱ͢Δ͔ • ॏཁͳͷʮαΠζʯͰͳ͘ʮཻʯ ◦ αΠζ ▪ มߋϑΝΠϧߦ ◦ ཻ ▪
มߋ༰ͷൣғ • มߋߦ͕1ສߦΛ͍͑ͯͨͱͯ͠ɺཻ͕దͰ͋Εͳ͠ 10
దͳཻͱ
ʮҰͭͷ͜ͱʯʹྗ͍ͯ͠Δ͔Ͳ͏͔ • ͦͷPullrequestͷଘࡏҙ͕ٛଟذʹ͍ͬͯͳ͍͔Ͳ͏͔ʁ ◦ ൃੜ࣌ͷrevertͷ୯Ґͱͯ͠ద͔Ͳ͏͔ʁ ◦ ϨϏϡϫʔͷίϯςΩετεΠονଟذʹ͍ͬͯͳ͍͔ʁ ◦ ෳͷରԠΛҰʹೖΕࠐΜͰ͍ͳ͍͔ʁ •
PullrequestෳͷଘࡏҙٛΛ͖࣋ͭͰͳ͍ ◦ ϨϏϡϫʔ͕֬ೝ͢Δ༰ଟذʹͬͯ͠·͏ 12
ྫ̍: ಛఆͷը໘ͷσʔλऔಘͱඳըΛಉ͡PullrequestͰରԠͨ͠ • దͰ͋Γ·ͤΜ ◦ σʔλͷऔಘͱඳըશ͘ҟͳΔॲཧ ▪ গͳ͘ͱೋͭͷPullrequestʹ͚Δ͖ ◦ σʔλऔಘͱඳըΛผͰ࣮Ͱ͖ΔΑ͏ͳઃܭʹͳ͍ͬͯΔඞཁ͕͋Δ
▪ Λ͚ͨςελϒϧͳઃܭ͕ඞཁ 13
ྫ̎: ໊ؔΛมߋͨ͠ͷͰɺར༻ͯ͠ΔՕॴ1ສߦΛҰׅஔͨ͠ • దͰ͢ ◦ มߋߦ1ສߦͰ͕͢ɺ໊ؔΛมߋ͢Δͱ͍͏Ұͭͷ͜ͱ͔͍ͯ͠͠ͳ͍ ◦ Pullrequestͷ֓ཁཝͳͲʹɺ໊ؔΛมߋͯ͠Ұׅஔ͚ͨͩ͠Ͱ͋ΔࢫΛهࡌ͓͚ͯ͠ OK 14
ྫ̏: Ճػೳͷ࣮தʹಉ͡ػೳͷϦϑΝΫλΛೖΕɺมߋߦ20ߦ • దͰ͋Γ·ͤΜ ◦ มߋߦগͳ͍Ͱ͕͢ɺػೳՃͱϦϑΝΫλશ͘ҟͳΔ༰Ͱ͢ ◦ ԾʹػೳՃͷ෦Ͱrevert͕ඞཁʹͳͬͨ߹ɺϦϑΝΫλͷ෦revertରʹͳͬ ͯ͠·͏ ◦
ػೳՃͱϦϑΝΫλɺͨͱ͑ߦ͕গͳͯ͘ผPullrequestͰ࡞͢Δͷ͕ϕετͰ ͢ 15
దͳཻΛҡ࣋͢ΔͨΊʹ
λεΫղ • ίʔυΛॻ͘લʹλεΫղΛ͠·͠ΐ͏ ◦ ৽نAPIΛ࡞Δ߹ ▪ ΤϯυϙΠϯτΛܾΊΔ ▪ responseͷߏΛܾΊɺϞοΫσʔλΛฦ͢ ▪
model͔ΒσʔλΛऔಘͯ͠ɺ࣮ࡍʹσʔλΛฦ͢ ▪ ύϥϝʔλΛड͚औͬͯߜΓࠐΈग़དྷΔΑ͏ʹ͢Δ • ࣮ணखલʹλεΫࣗମΛଞϝϯόʔʹϨϏϡʔͯ͠Β͏ • ࣮͠ͳ͕ΒλεΫΛͲΜͲΜࡉԽ͍ͯ͘͠ • λεΫղͤͣʹ͍͖ͳΓ࣮ʹணखͯ͠͠·͏ͱɺ͋Ε͜Εͱख͕৳ͼͯ ͠·͍ɺ݁ՌతʹڊେͳPullrequest͕രͯ͠͠·͏ 17
Feature Flag • λεΫղͯ͠ͲΜͲΜϚʔδ͍͚ͨ͠Ͳɺຊ൪ڥʹެ։ͨ͘͠ͳ͍ ◦ σϓϩΠ࣌ͷڥมͳͲͰϑϥάΛཧ͠ɺͦͷϑϥάͷذʹΑ࣮ͬͯͨ͠ίʔυ Λ༗ޮԽ͢Δ͔Ͳ͏͔Γସ͑ΔΈ ◦ ػೳϦϦʔεޙʹ͕ى͖ͯɺrevertͤͣʹFeature FlagΛOFFʹ͢Δ͚ͩͰඇެ։
ʹͰ͖Δ ◦ ذͱςετέʔε͕૿͑ΔσϝϦοτ͋Δ͕ɺࡉ͔͘Ϛʔδͯ͠ͲΜͲΜσϓϩΠग़ དྷΔΑ͏ʹͳΔϝϦοτ͋Δ 18
Topic Branch • λεΫղ͚ͨ͠ͲFeature FlagΘͣʹͲΜͲΜϚʔδ͍ͨ͠ 19 • Default Branch ◦
Topic Branch ▪ Work Branch1 ▪ Work Branch2 ▪ Work Branch3 • Topic BranchͱWork BranchؒͷPullrequestΛϨϏϡʔ͢Εྑ͍ • Default BranchͱTopic BranchͷࠩΛఆظతʹϚʔδ͓ͯ͘͠
·ͱΊ
·ͱΊ • ࣮ऀɺϨϏϡϫʔͷ྆ํʹରͯ͠༏͍͠PullrequestΛ࡞͢Δ͜ͱ͕ग़ དྷΔΑ͏ʹͳΔ • ϨϏϡʔͷෛ୲͕Լ͕ΓɺϨϏϡʔͷ্࣭͕͕Γɺ࡞͞ΕͨPullrequest ͕ͲΜͲΜϚʔδ͞ΕΔΑ͏ʹͳΔ ◦ ςετ͕͋Δ͜ͱͰɺແཧͳ͘ܧଓ͢Δ͜ͱ͕ՄೳʹͳΔ •
݁Ռతʹߴ͍։ൃੜ࢈ੑΛҡ࣋͢Δ͜ͱ͕ՄೳʹͳΔ 21
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠