Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
開発生産性実践入門 Pullrequestの粒度編
Search
starfish719
October 05, 2023
2.4k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
開発生産性実践入門 Pullrequestの粒度編
starfish719
October 05, 2023
More Decks by starfish719
See All by starfish719
VibeCodingからAgenticWorkflowへ
starfish719
0
620
生成AI導入の「期待外れ」を乗り越える ー 開発フロー改革が目指す、真の組織変革
starfish719
0
4.7k
「速く作る」から「正しく作る」へ ─ 生成AI時代の開発フロー改革の ロードマップと実行 ─
starfish719
2
13k
AI活用を推進するために ファインディが下した、一つの小さな決断
starfish719
1
400
生成AI時代のエンジニア育成 変わる時代と変わらないコト
starfish719
0
15k
【Claude Code】Plugins作成から始まったファインディの開発フロー改革
starfish719
0
1.1k
Findy AI+の開発、運用におけるMCP活用事例
starfish719
0
4.1k
生成AIが出力するテストコードのリアル よくあるコードと改善のヒント
starfish719
0
880
生成AI時代に若手エンジニアが最初に覚えるべき内容と、その学習法
starfish719
2
940
Featured
See All Featured
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Being A Developer After 40
akosma
91
590k
Git: the NoSQL Database
bkeepers
PRO
432
67k
Side Projects
sachag
455
43k
Building Applications with DynamoDB
mza
96
7.2k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
470
How STYLIGHT went responsive
nonsquared
100
6.2k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
410
How to Think Like a Performance Engineer
csswizardry
28
2.7k
Practical Orchestrator
shlominoach
191
12k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Abbi's Birthday
coloredviolet
3
9.4k
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
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠