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
OSSへの プルリクエスト作成の手引き
Search
fuqda
August 03, 2020
Programming
340
1
Share
OSSへの プルリクエスト作成の手引き
STORES.jp, Incの開発チーム月次レビュー会のLT資料です。
fuqda
August 03, 2020
More Decks by fuqda
See All by fuqda
Composition API時代の Pub/Subパターンでの状態管理
fuqda
4
4k
RubyでPrettierを使ってみた
fuqda
0
380
RSpecによるOpen API自動テスト
fuqda
3
1.2k
Rails Girls Tokyo 13th Sponsor LT by STORES
fuqda
0
220
黒歴史リポジトリを使ったリファクタリング勉強法のススメ
fuqda
1
1.2k
OSS初心者がつまづきながらOSSマナーを学んでいく話
fuqda
4
3.4k
Ruby2.7の新機能で簡易版Rubyインタプリタを実装してみる
fuqda
0
630
カンファレンスで技術的お土産を 増やすために出来ることを考えた
fuqda
2
580
Other Decks in Programming
See All in Programming
実用!Hono RPC2026
yodaka
2
310
Symfony AI in Action - SymfonyLive Berlin 2026
chr_hertel
1
150
AIと共に生きる技術選定 2026
sgash708
0
140
リセットCSSを1行消したらアクセシビリティが向上した話
pvcresin
4
510
Sans tests, vos agents ne sont pas fiables
nabondance
0
100
ついに来た!本格的なマルチクラウド時代の Google Cloud
maroon1st
0
430
Are We Really Coding 10× Faster with AI?
kohzas
0
170
Lightning-Fast Method Calls with Ruby 4.1 ZJIT / RubyKaigi 2026
k0kubun
3
3k
【ディップ|26年新卒研修資料】OpenAPI/Swagger REST API研修
dip_tech
PRO
0
160
PHPer、Cloudflare に引っ越す
suguruooki
2
200
GitHubCopilotCLIをはじめよう.pdf
htkym
0
330
〜バイブコーディングを超えて〜 チームで実験し続けたAI駆動開発
tigertora7571
0
210
Featured
See All Featured
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Done Done
chrislema
186
16k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
180
Leading Effective Engineering Teams in the AI Era
addyosmani
9
1.9k
Speed Design
sergeychernyshev
33
1.7k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
170
Designing for humans not robots
tammielis
254
26k
HDC tutorial
michielstock
2
660
Designing for Timeless Needs
cassininazir
1
220
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
280
Transcript
044ͷ ϓϧϦΫΤετ࡞ͷ खҾ͖ 4503&4%FWϨϏϡʔձ-5ίʔφʔ !GVREB
About me • 201711݄ʹגࣜձࣾϒϥέοτ (ݱSTORES.jp, Inc) ʹJoin • ϓϩμΫτόοΫΤϯυBϥΠϯνʔϜॴଐ •
20182݄ʙݱࡏ Tama.rbͱ͍͏ҬRubyίϛϡχςΟͬͯ·͢
Today’s thema OSSͷ ϓϧϦΫΤετ࡞ͷ खҾ͖
Introduction (ͦΜͳʹଟ͘ͳ͍͚ΕͲ) ͡ͿΜOSSʹϓϧϦΫΤετΛૹΔΑ͏ʹͳͬͯɺ Ϛʔδ·ͰͷྲྀΕ͕΅ΜΓΘ͔ΔΑ͏ʹͳΓ·ͨ͠ ͰɺωοτΛݟͯମܥతʹྲྀΕΛॻ͍ͯΔهࣄͬͯ΄ͱΜ Ͳݟ͔͚ͳ͍… ͱ͍͏Θ͚Ͱɺ͜Ε͔Β͍ͬͯͧ͘ͱ͍͏ਓͷͨΊʹ खҾ͖Λ·ͱΊͯΈΑ͏ͱࢥ͍·͢
͓அΓ ※ ͋͘·Ͱݸਓతܦݧʹج͍ͮͨݟղͳͷͰ ɹͬͱྑ͍ํ๏͕͋Δ͔͠Ε·ͤΜ ɹ(ͦͷ࣌ͬͦ͜Γڭ͍͑ͯͩ͘͞) ※ ࠓճϓϧϦΫΤετΛૹΔ͜ͱΛ͢ͷͰ ɹissueΛཱͯΔ݅ʹ৮Ε·ͤΜ
Today’s Agenda ɾϦϙδτϦͷ୳͠ํ 1. ۀͰ͍ͬͯΔϥΠϒϥϦͷίʔυڍಈͷؾʹͳΔ෦Λ֬ೝͯ͠ΈΔ 2. GitHub help wanted Ͱ୳ͯ͠ΈΔ
ɾϓϧϦΫΤετ࡞(લޙ)ͷྲྀΕ 1. bug(վળϙΠϯτ)Λݟ͚ͭΔ 2. ରϦϙδτϦͷFork 3. ରϦϙδτϦͷίϯτϦϏϡʔγϣϯΨΠυ(ଘࡏ͢Δ߹)ʹΛ௨͢ 4. ίʔυɾυΩϡϝϯτͷमਖ਼ 5. ϓϧϦΫΤετΛ࡞ 6. ϨϏϡʔΛड͚Δ(मਖ਼͋Εదٓ) 7. ϚʔδΛͭ ɾ࣮ɿաڈͷ͘͠͡ΓμΠδΣετ ※ ͕࣌ؒ͋Ε͠·͢
Today’s Agenda ɾϦϙδτϦͷ୳͠ํ 1. ۀͰ͍ͬͯΔϥΠϒϥϦͷίʔυڍಈͷؾʹͳΔ෦Λ֬ೝͯ͠ΈΔ 2. GitHub help wanted Ͱ୳ͯ͠ΈΔ
ɾϓϧϦΫΤετ࡞(લޙ)ͷྲྀΕ 1. bug(վળϙΠϯτ)Λݟ͚ͭΔ 2. ରϦϙδτϦͷFork 3. ରϦϙδτϦͷίϯτϦϏϡʔγϣϯΨΠυ(ଘࡏ͢Δ߹)ʹΛ௨͢ 4. ίʔυɾυΩϡϝϯτͷमਖ਼ 5. ϓϧϦΫΤετΛ࡞ 6. ϨϏϡʔΛड͚Δ(मਖ਼͋Εదٓ) 7. ϚʔδΛͭ ɾ࣮ɿաڈͷ͘͠͡ΓμΠδΣετ ※ ͕࣌ؒ͋Ε͠·͢
1. ۀͰ͍ͬͯΔϥΠϒϥϦͷ ίʔυڍಈͷؾʹͳΔ෦Λ֬ೝͯ͠ΈΔ ɾϥΠϒϥϦʓʓͷσϑΥϧτͷڍಈ͕ ɹͬͱ͜͏ͩͬͨΒͳ͊…ͬͯͳ͍ʁ ɾࣄͰͬͯΔOSSͷίʔυΛಡΜͰΈΔ (OSSͷಡॻձͱ͔ͨ͠ͱ͖νϟϯε͔) ※ ͪͳΈʹɺ΅͘ͷ߹RailsͷίʔυΛಡΜͰ͍ͯɺ ɹͨ·ͨ·ͤͦ͏ͳͱ͜Ζݟ͚ͭͨ͜ͱ͕͋Γ·͢
2. GitHub help wanted Ͱ୳ͯ͠ΈΔ GitHub help wantedͱ͍͏αΠτͰࠔͬͯΔ OSSΛݴޠผʹ୳͢͜ͱ͕ग़དྷΔͷͰܰΊͳ ͷΛݟ͚ͭΔʹ͍͍͔͠Ε·ͤΜ
Today’s Agenda ɾϦϙδτϦͷ୳͠ํ 1. ۀͰ͍ͬͯΔϥΠϒϥϦͷίʔυڍಈͷؾʹͳΔ෦Λ֬ೝͯ͠ΈΔ 2. GitHub help wanted Ͱ୳ͯ͠ΈΔ
ɾϓϧϦΫΤετ࡞(લޙ)ͷྲྀΕ 1. bug(վળϙΠϯτ)Λݟ͚ͭΔ 2. ରϦϙδτϦͷFork 3. ରϦϙδτϦͷίϯτϦϏϡʔγϣϯΨΠυ(ଘࡏ͢Δ߹)ʹΛ௨͢ 4. ίʔυɾυΩϡϝϯτͷमਖ਼ 5. ϓϧϦΫΤετΛ࡞ 6. ϨϏϡʔΛड͚Δ(मਖ਼͋Εదٓ) 7. ϚʔδΛͭ ɾ࣮ɿաڈͷ͘͠͡ΓμΠδΣετ ※ ͕࣌ؒ͋Ε͠·͢
Today’s Agenda ɾϦϙδτϦͷ୳͠ํ 1. ۀͰ͍ͬͯΔϥΠϒϥϦͷίʔυڍಈͷؾʹͳΔ෦Λ֬ೝͯ͠ΈΔ 2. GitHub help wanted Ͱ୳ͯ͠ΈΔ
ɾϓϧϦΫΤετ࡞(લޙ)ͷྲྀΕ 1. bug(վળϙΠϯτ)Λݟ͚ͭΔ 2. ରϦϙδτϦͷFork 3. ରϦϙδτϦͷίϯτϦϏϡʔγϣϯΨΠυ(ଘࡏ͢Δ߹)ʹΛ௨͢ 4. ίʔυɾυΩϡϝϯτͷमਖ਼ 5. ϓϧϦΫΤετΛ࡞ 6. ϨϏϡʔΛड͚Δ(मਖ਼͋Εదٓ) 7. ϚʔδΛͭ ɾ࣮ɿաڈͷ͘͠͡ΓμΠδΣετ ※ ͕࣌ؒ͋Ε͠·͢
1. bug(վળϙΠϯτ)Λݟ͚ͭΔ ex1) σϑΥϧτͷڍಈͷҧײ ʓʓίϚϯυͰੜ͞ΕΔϑΝΠϧɺ σϑΥϧτͰ˚˚͕ແޮʹͳͬͯΔ͚Ͳɺ ຖճ༗ޮʹॻ͖͑ΔͷΊΜͲ͍͘͞ͳ͊… ແޮͰخ͍͠ύλʔϯͳ͘ͳ͍ʁ ex2) υΩϡϝϯτͷमਖ਼
͋Ε!?υΩϡϝϯτͱ࣮ࡍͷίʔυͷڍಈҧ͘ͳ͍ʁ...
2. ରϦϙδτϦͷFork step1. ରϦϙδτϦΛFork͢Δ step2. ࣗͷखݩʹForkͨ͠ϦϙδτϦΛ ϩʔΧϧʹclone͢Δ
2. ରϦϙδτϦͷFork step3. ຊମΛupstream,ࣗͷϦϙδτϦΛ originͱͯ͠ొ ɹɹɹ※ OSSͷ׳शͰݩͷϦϙδτϦΛupstreamɺ ɹɹɹɹɹࣗͷखݩΛoriginͱͯ͠ొ͢Δͱࣗฉ͍ͨͷͰ ɹɹɹɹɹͦ͏ͯ͠·͕͢͜ͷลΓ͓ΈͰ
3. ରϦϙδτϦͷίϯτϦϏϡʔγϣϯΨΠυ (ଘࡏ͢Δ߹)ʹΛ௨͢ ɹ ɹɾRailsͷΑ͏ͳେنͳOSSʹΨΠυ͕ ଘࡏ͢Δ͜ͱ͕ଟ͍ͷͰͦͪΒʹΛ௨͠·͠ΐ͏ ex1) https://guides.rubyonrails.org/contributing_to_ruby_on_rails.html ɹɾແ͍߹ϦϙδτϦͷաڈͷissue ɹɹϓϧϦΫΤετΛݟͯΈΔͱ
ͦͷϦϙδτϦͷงғؾ͕͔ΔͷͰ͓͢͢ΊͰ͢ ɹɹ(Ͳ͏͍͏ϓϧϦΫΤετͩͱϚʔδ͞ΕΔ͔ݟΔͷେࣄ )
4. ίʔυɾυΩϡϝϯτͷमਖ਼ step1. ίʔυͷ֘ՕॴΛमਖ਼ (ͨΓલ͚ͩͲίϛοτϝοηʔδӳޠͰ͢Α) step2. खݩͰςετ͕ύε͢Δ͜ͱΛ֬ೝ ✅ ɹɹɹ
4. ίʔυɾυΩϡϝϯτͷमਖ਼ step3. remoteͱͯ͠ొ͞Ε͍ͯΔϦϙδτϦΛ֬ೝ ɹɹɹ step4. origin(ࣗͷखݩͷ࡞ۀϦϙδτϦ)ϓογϡ͢Δ ɹɹɹ ϓογϡ͕ྃ͢Δͱ ҎԼͷϘλϯ͔Βࣗͷ࡞ۀϦϙδτϦ͔Β
ɹɹɹ GUI্ͰForkݩͷϦϙδτϦʹϓϧϦΫΤετΛ࡞ग़དྷΔΑ͏ʹͳΓ·͢
5. ϓϧϦΫΤετΛ࡞ ForkݩͷϦϙδτϦʹϓϧϦΫΤετΛ࡞͠·͢ɹɹɹ ϓϧϦΫΤετʹॻ͍ͨํ͕͍͍ͱࢥ͏͜ͱ ɹ˞ ProblemɿͲ͏͍͏͕͋ͬͨͷʁ ɹ˞ SolutionɿͲ͏ͨ͠ͷʁ جຊతʹյΕΔमਖ਼Ϛʔδͨ͘͠ͳ͍ͣͳͷͰɺ Before
/ After ͰͲΜͳخ͍͜͠ͱ͕͋Δͷ͔ɺ ͦΕͰͳ͍͜ͱΛ֬ೝͨ͠Αʂͱ͍͏ΤϏσϯεΛৄࡉʹॻ͘ͷ͕͓͢͢ΊͰ͢ ϝϯςφʔ͞Μͷؾ࣋ͪʹͳͬͯ֬ೝͷίετΛݮΒ͠·͠ΐ͏❗ (ٯʹͪΌΜͱॻ͔ͳ͍ͱӳޠͰΊͬͪΌ࣭͞ΕͯࠔΔͷͰɺ΅͘ҰܸͰཹΊΔͨΊʹ ͳΔ͘ৄ͘͠ॻ͘Α͏ʹ͍ͯ͠·͢)
6. ϨϏϡʔΛड͚Δ(मਖ਼͋Εదٓ) ӳޠͰٞʹಥೖ͢Δͱେมݫ͍͠Ͱ͕͢ɺ େ͖ͳमਖ਼(ഁյతͳมߋ)Λͨ͠Γ͢Δͱ ආ͚ΒΕͳ͍͜ͱଟ͍ͷͰ͍͖ͬͯ·͠ΐ͏
7. ϚʔδΛͭ Ұ௨Γमਖ਼͕ٞऴΘͬͨΒϚʔδ͞ΕΔ͜ͱΛ ئ͍ͭͭͪ·͠ΐ͏
Today’s Agenda ɾϦϙδτϦͷ୳͠ํ 1. ۀͰ͍ͬͯΔϥΠϒϥϦͷίʔυڍಈͷؾʹͳΔ෦Λ֬ೝͯ͠ΈΔ 2. GitHub help wanted Ͱ୳ͯ͠ΈΔ
ɾϓϧϦΫΤετ࡞(લޙ)ͷྲྀΕ 1. bug(վળϙΠϯτ)Λݟ͚ͭΔ 2. ରϦϙδτϦͷFork 3. ରϦϙδτϦͷίϯτϦϏϡʔγϣϯΨΠυ(ଘࡏ͢Δ߹)ʹΛ௨͢ 4. ίʔυɾυΩϡϝϯτͷमਖ਼ 5. ϓϧϦΫΤετΛ࡞ 6. ϨϏϡʔΛड͚Δ(मਖ਼͋Εదٓ) 7. ϚʔδΛͭ ɾ࣮ɿաڈͷ͘͠͡ΓμΠδΣετ ※ ͕࣌ؒ͋Ε͠·͢
Today’s Agenda ɾϦϙδτϦͷ୳͠ํ 1. ۀͰ͍ͬͯΔϥΠϒϥϦͷίʔυڍಈͷؾʹͳΔ෦Λ֬ೝͯ͠ΈΔ 2. GitHub help wanted Ͱ୳ͯ͠ΈΔ
ɾϓϧϦΫΤετ࡞(લޙ)ͷྲྀΕ 1. bug(վળϙΠϯτ)Λݟ͚ͭΔ 2. ରϦϙδτϦͷFork 3. ରϦϙδτϦͷίϯτϦϏϡʔγϣϯΨΠυ(ଘࡏ͢Δ߹)ʹΛ௨͢ 4. ίʔυɾυΩϡϝϯτͷमਖ਼ 5. ϓϧϦΫΤετΛ࡞ 6. ϨϏϡʔΛड͚Δ(मਖ਼͋Εదٓ) 7. ϚʔδΛͭ ɾ࣮ɿաڈͷ͘͠͡ΓμΠδΣετ ※ ͕࣌ؒ͋Ε͠·͢
࣮ɿաڈͷ͘͠͡ΓμΠδΣετ ݸਓతʹΓ͕͔ͪͳͱࢥ͏͘͠͡ΓΛڞ༗ աڈissueಡ·ͳ͍ͰϓϧϦΫ࡞ͬͨΒ߈Ϋϩʔζ͞ Εͨ݅ ഁյతมߋͨ͠ΒόνϘίʹٞʹͳͬͯݫ͔ͬͨ͠ ݅ ӳޠͲ͏͠Α͏…ͰΜͰमਖ਼ऴΘͬͯΔͷʹिؒϓ ϧϦΫग़ͤͳ͔ͬͨ݅
աڈissueಡ·ͳ͍ͰϓϧϦΫ࡞ͬͨΒ ߈Ϋϩʔζ͞Εͨ݅ ɾաڈ͢Ͱʹٞ͞Εͯ٫Լ͞ΕͯΔमਖ਼Λͯ͠͏ͨ ͦͷ݅ʹ͍ͭͯ ͏աڈʹٞͯ͠Δ͔Β Ϋϩʔζ͢Δͥ
ڭ܇ ɾ͡ͿΜ͕ࢥ͍͘Α͏ͳ͜ͱ ɹଞਓ͕͏͢Ͱʹߟ͍͑ͯΔ͜ͱ͕ଟ͍ աڈissue / PR Λݟͯ͡ͿΜͱಉ͡ҙࣝ ͷٞɾमਖ਼ͰΫϩʔζ͞Εͨͷ͕ͳ͍͔ ɹཁ֬ೝ (·͔ͨΑͬͯͳͬͪΌ͏ͷͰ…)
ɾେ͖ͳOSSͩͱGitHubͷissueͰͳ͘JIRAͰ νέοτཧͯ͠Δ߹͋ΔͷͰGitHubҎ֎ దٓνΣοΫ͔ͯ͠ΒϓϧϦΫΤετΛ͛Α͏ ✅
ഁյతมߋͨ͠ΒόνϘίʹ ٞʹͳͬͯݫ͔ͬͨ݅͠ ɾ͕࣌ؒΓͳ͍ͷͰৄࡉׂѪ͠·͢ σϑΥϧτͷڍಈ͕ มΘΔͷݫ͍͠ͳ͊ʜ
ڭ܇ ɾ͜Ε͔ΒೖΕΔมߋطଘϢʔβʔͷ ෆརӹʹͳΒͳ͍͔ʁߟ͑Δ มߋىҼͰσϑΥϧτͷڍಈ͕มΘΔ߹ Φϓγϣϯͷ༗ແͰطଘͷڍಈΛҡ࣋ग़དྷΔ ɹΑ͏ʹ͢ΔͳͲҰఆͷྀ͕ඞཁ⚠ ※ ิ ɹഁյతͳมߋϥΠϒϥϦͷϝδϟʔόʔδϣϯΞοϓϦϦʔεΛ ཁٻ͢Δ͜ͱʹͳΔ
ϚΠφʔόʔδϣϯϦϦʔεʹࠞͥͮΒ͍ = Ϛʔδͮ͠Β͍
ӳޠͲ͏͠Α͏…ͰΜͰमਖ਼ ऴΘͬͯΔͷʹिؒϓϧϦΫग़ͤͳ͔ͬͨ݅ มͳӳޠͩͱʮwwwʯͬͯࢥΘΕͳ͍͔ ΊͪΌΊͪΌ৺ͩͬͨ… ԿݴͬͯΔΜͩίΠπXXX
৺ͳ͍
݁ߏɺ ͍ӳޠͷਓ ଟ͍ͧ ͋͘·ͰݸਓతͳମײͰ͢
ڭ܇ ɾجຊతʹίʔυͷdiffʹΛ௨ͣ͢ ͳͷͰɺӳޠ͕ᘳͰͳͯ͘ ͱ͍͑ɺࣄͱಉ͡Α͏ʹ࣮ͷഎܠ ͳʹΛ͠Α͏ͱࢥͬͯΔ͜ͱΛ͑Δྗ େࣄ આ໌͕͍͠߹ྫͱͯ͠ίʔυαϯϓϧΛ descriptionʹࡌͤΔͱΘΓ͍͢ͷͰ ͓͢͢ΊͰ͢
·ͱΊ
ɾϓϧϦΫΤετͷωλ ɹීஈͷۀͰݟ͚ͭΒΕΔ ɾϓϧϦΫΤετ࡞͔ΒϚʔδͷྲྀΕ ɹجຊతʹ௨ৗͷ(JU)VC'MPXͱಉ͡ ɾमਖ਼༰ʹৗʹݱࡏͷϢʔβʔͱ ɹϝϯςφʔ͞ΜͷྀΛఴ͑ͯ ɾϝϯςφʔ͞Μ͕Ϛʔδ͢Δͷʹඞཁͳใ͕ ɹἧͬͯΔ͔Λߟ͑ͯ࡞Ε͍ӳޠͰΘΔ
ϓϧϦΫΤετʹͳΔͷͰ৺͠ͳͯ͘େৎ
044׆ಈָ͍͠Ͱ͢Α☺ ·ͩͷํ͜ͷػձʹ νϟϨϯδ ͯ͠Έ·ͤΜ͔ʁ
͝ਗ਼ௌ͋Γ͕ͱ͏ ͍͟͝·ͨ͠