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
Masahiro331
December 01, 2022
0
160
OSSに新機能を追加するまでの苦労話
作成時間2時間の書き殴りパワポです
Masahiro331
December 01, 2022
Tweet
Share
More Decks by Masahiro331
See All by Masahiro331
Analyze Filesystem in Virtual Machine Image
masahiro331
0
150
SBOMを利用したソフトウェアサプライチェーンの保護
masahiro331
4
2.5k
Introduction Supply Chain Security
masahiro331
0
140
Container Security with Trivy
masahiro331
0
190
VirtualMachine Image scanning PoC with Molysis
masahiro331
0
150
Featured
See All Featured
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.2k
The Invisible Side of Design
smashingmag
299
50k
Fireside Chat
paigeccino
37
3.4k
Statistics for Hackers
jakevdp
799
220k
YesSQL, Process and Tooling at Scale
rocio
172
14k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
GraphQLとの向き合い方2022年版
quramy
46
14k
Automating Front-end Workflow
addyosmani
1370
200k
Code Reviewing Like a Champion
maltzj
523
40k
Why Our Code Smells
bkeepers
PRO
336
57k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
357
30k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
48
5.4k
Transcript
.BTBIJSP'VKJNVSB 044ʹ৽ػೳΛՃ͢Δ·Ͱͷ ۤ࿑
࠷ॳʹ w ͢Έ·ͤΜλΠτϧٗʹͳΓ·ͨ͠ɻ ʢ044ʹ৽ػೳΈ͍ͨͳநతͳͰͳ͘ී௨ʹԾϚγϯͷ੬ऑੑݕ Λ࣮͢Δۤ࿑ʹͳΓ·ͨ͠ɻʣ
֓ཁ w جૅ࣮ΛؚΊͯɺۤઅҎ্͔͚ͨػೳ͕ϦϦʔε͞ΕͨͷͰɺͦͷۤ࿑ ͱֶͼʹ͍ͭͯ͠·͢ɻ w લճͷࢿྉͱ͢͜͠ඃΔ෦͕͋Γ·͕͢ɺٕज़తͳ༨Γ͠·ͤΜ લճͷࢿྉ
͍͑ͨ͜ͱ օ༷ʹͱׂͬͯͱͨΓલͷ͜ͱͰ͕͢ʜ w ະͷϞϊΛ୳ࡧతʹཧղ͍ͯ͘͠ํ๏ w ༷ॻΛಡΈͳ͕Β࣮͢Δ͜ͱͷ͠͞ w طଘίʔυΛௐࠪ͠ཧղ͢Δ͜ͱͷॏཁੑ w ༗ࣝऀʹཔΔ͜ͱ
w ҰੜΘͳ͍ͱࢥ͕ͬͨࣝੜ͖Δࣄ
എܠ w ࡢɺ5SJWZʢ044ͷηΩϡϦςΟπʔϧʣʹ7.ͷ੬ऑੑݕΛՃͨ͠ w Ұࡢ4FD)BDLͱ͍͏औΓΈͰ্هͷجૅݚڀΛ͍ͯͨ͠
࡞ͬͨͷͷσϞ
None
େࣄͳͷͰΞʔΩςΫνϟ͚ͩషΔ ࠷ऴతͳΞʔΩςΫνϟ4FFLͰ࣮
ࠓͷ͓ͷྲྀΕ w ৽ػೳΛ࡞Δมભʹ͍ͭͯɺ͍͔ͭ͘ͷ࣌ظʹׂͯ͠͠·͢ w ͱʹ͔ͬͯ͘ΈΔظ w ఀظ w ໎ظ w
࡞ΓࠐΈظ
ͱʹ͔ͬͯ͘ΈΔظ w 4FD)BDLͱ͍͏ػձΛ࡞Γ࣮ʹྭΉ w ͬͨ͜ͱ w 7.%,ͷղੳ w .#3(15ͷղੳ w
&95ͷղੳ
7.%,ͷղੳ w ࣌ಡΜͩ͜ͱ͋Δ༷ॻͱ͍͑ɺΈΜͳେ͖3'$ w όΠφϦͳΜͯͷɺ΄΅ಡΜͩ͜ͱͳ͍ w ͱʹ͔༷͘ॻΛಡΈͭͭΤεύʔͰ࣮͍ͯͨ͠
7.%,ͷղੳʢֶͼʣ 3'$͔͠ಡΜͩ͜ͱͷͳ͍͕ظ͢Δ༷ॻ ͱʹ͔༷͘ॻʹॻ͍ͯͳ͍͜ͱ͕ଟ͍ ༷ॻ" ༷ॻ# લఏͱͳΔٕज़ લఏͱͳΔٕज़༻ޠʹΞΫηεͰ͖Δࣝͷ πϦʔ͕͋Δ
7.%,ͷղੳʢֶͼʣ 7.%,ͷ༷ॻ ͱʹ͔༷͘ॻʹॻ͍ͯͳ͍͜ͱ͕ଟ͍ ࣮ࡍʹඞཁͳࣝ ެ։͞Ε͍ͯΔ༷ॻ લఏͱͳΔٕज़༻ޠʹΞΫηεͰ͖ͳ͍ͨΊ ೝͰ͖ͳ͍ Ұൠతͳ༷ͷ߹ɺ҉తʹͳΓ͕ͪ
7.%,ͷղੳʢֶͼʣ ΤεύʔΫΠζʢޙ༷ॻΛΑ͘ಡΉͱॻ͍ͯͨলʣ (SBJO%JSFDUPSZͱݺΕΔ͜ͷόΠφϦྻԿΛද͍ͯ͠ΔͰ͠ΐ͏ʂ w(SBJOѹॖ͞Εͨσʔλͷஅย w(5&ͷαΠζݻఆͱ͢Δ Πϝʔδը૾
.#3(15ͷղੳ w 6&'*ͷ༷ॻʹ.#3(15पΓͷ࣮͕ॻ͔Ε͍ͯΔ w .#3ʹ࣮ؔͯ͠ຊޠͷ8JLJQFEJB͕͔ͳΓॆ࣮͍ͯ͠Δ ʢా͞Μຊޠͷํ͕Α͔ͬͨΒ͍͠ʣ w [͕.#3Λղౚ͢ΔίʔυΛ࣮͓ͯ͠ΓɺͦΕΒΛݩʹ࣮ͨ͠
.#3(15ͷղੳʢֶͼʣ w .#3ͷ༷ޙํޓੑΛอ֦ͪͭͭு͞Ε͍ͯΔ ॳظͷ.#3ͷ༷ ޓੑΛอͭ(15ͷ༷ ޙํޓੑΛอͭΑ͏ͳઃܭ͕ଟ͍ɺޓΛࣺͯΔ༐ؾ
&95ͷղੳ w ϑΝΠϧγεςϜԿΘ͔Βͳ͍ w ༷ॻΛಡΜͰ࣮͢Δ͜ͱʹ׳Εͯ͘Δ w όΠφϦσʔλΛಡΉ͜ͱʹ׳Εͯ͘Δ
&95ͷղੳʢֶͼʣ ݻఆͷςʔϒϧʢྻʣΠϯσοΫεʹҙຯΛ͕࣋ͨͤͪ ཧతͳσʔλ ࢀরςʔϒϧ ࢀর༻ͷςʔϒϧ ࢀরςʔϒϧ ࢀরςʔϒϧ Y$ ࢀরςʔϒϧͷςʔϒϧ Y'
Y Y ɾ ɾ ɾ ҙͷσʔλ *OEFYͷσʔλ൪ͷςʔϒϧΛࢀর
4FD)BDLͰͷൃද w ԾϚγϯΛಁաతʹɺετϦʔϜͰղੳͰ͖ΔΑ͏ʹ։ൃͨ͠
ఀظ ͜ͷ࣌ظଞͷػೳΛ࡞Δͷʹͯ͘͠Β͘৮ͬͯͳ͔ͬͨ ͱʹ͔͕࣌ؒ͋͘Δ࣌ʹطଘͷίʔυΛಡΜͰ͍ͨɻ w ͬͨ͜ͱ w 7.%,ͷόάऔΓ w [RFNVͷ࣮ΛಡΉ
w ผͷλεΫͰ31.%#ͷιʔείʔυΛಡΉ IUUQTNBTBIJSPIBUFOBCMPHDPNFOUSZ
໎ظ ͱʹ͔͘ඞཁͳϑΥʔϚοτʹख͋ͨΓ࣍ୈɺύʔαΛ࣮͍ͯͨ͠ w ͬͨ͜ͱ w 9'4ͷղੳ w -7.ͷղੳ w 7)%9ͷղੳ
9'4ͷղੳ w ϑΝΠϧγεςϜ͕͔ͳΓΘ͔͖ͬͯͨ w ༷ॻΛಡΉ͜ͱʹͳΕͯ͘Δ w -JOVYͷιʔείʔυͱ͍͏ϧτϥ$ʹग़ձ͏ w ஏ͔͕ͣ͠Βͣʹ༗ࣝऀʹฉ͖ʹߦ͘
9'4ͷղੳʢֶͼʣ Θ͔Βͳͯ͘طଘͷιʔείʔυΛಡΉ͜ͱ w ίʔυ͕ཧղͰ͖ ͳͯ͘งғؾͰΑ͍
9'4ͷղੳʢֶͼʣ Θ͔Βͳͯ͘طଘͷιʔείʔυΛಡΉ͜ͱ w ίʔυ͕ཧղͰ͖ ͳͯ͘งғؾͰΑ͍ w ༷ॻʹͳ͍࣮ͷ ͕ίϝϯτʹ͋Δ
9'4ͷղੳʢֶͼʣ Θ͔Βͳͯ͘طଘͷιʔείʔυΛಡΉ͜ͱ w ίʔυ͕ཧղͰ͖ͳ ͯ͘งғؾͰΑ͍ w ༷ॻʹͳ͍࣮ͷ͕ ίϝϯτʹ͋Δ w ͱ͍͏͔༷ॻ͕ݹ͍͜ͱ
͋Δ ʢॻ͍ͯͳ͍ߏମ͋Δʣ
9'4ͷղੳʢֶͼʣ ͱΓ͋͑ͣֆΛॻ͍ͯΈΔ
9'4ͷղੳʢֶͼʣ ༗ࣝऀʹͱʹ͔͘ฉ͖ʹߦ͘ w ࣮ฉ͖ʹߦͬͨΒࡶʹͰฦͯ͘͠ΕΔ
-7.ͷղੳ w ༷ॻΛಡΜͰύʔαΛॻ͘ͷே൧લʹͳΔ w ಠࣗDPO fi HͷύʔαΛॻ͘ͷʹۤ࿑͢Δ w (PMBOHͰֶͿΠϯλϓϦϯλͷ͓͔͛ͰͳΜͱ͔ͳͬͨ
-7.ͷղੳʢֶͼʣ ҰੜΘͳ͍ͱࢥͬͨࣝΛ͏ w ษڧ༻ʹಡΜͩ(PMBOHͰ࡞ΔΠϯλϓϦϯλ ͷ͓͔͛ͰߏจղੳثΛ࡞ͬͯύʔεͰ͖ͨ
7)%9ͷղੳ w .4ͷ༷ॻ͔ͬ͠Γॻ͔Ε͍ͯΔͳͱ͍͏ײಈ w ԾσΟεΫͱ͍͏ͷ͕ཧղͰ͖͍ͯͨͷͰͰऴΘͬͨ
ϦϦʔεظ ϦϦʔεʹ͚ͯɺఀظʹ͑ͨࣝͱɺ໎ظʹ͞·͟·ͳυϝΠϯͷ࣮Λ ͨ͠ݟΛݩʹ͜Ε·Ͱ࣮ͨ͠ϥΠϒϥϦͷΞʔΩςΫνϟΛݟ͠ॻ͖ͨ͠ w ͬͨ͜ͱ w ΞʔΩςΫνϟͷશ໘తͳमਖ਼ w આ໌༻ͷυΩϡϝϯτΛ࡞ w
ӡ༻໘Ͱͷ࣮ w ςετͷ࡞ w ".*ͷղੳ
ΞʔΩςΫνϟͷશ໘తͳमਖ਼ w RFNVͰԾϚγϯΠϝʔδΛม͢ΔॲཧͷΞʔΩςΫνϟΛࢀߟʹ࣮
ΞʔΩςΫνϟͷશ໘తͳमਖ਼ w ετϦʔϜͰ࣮ͨ͠ͷΛ4FFLʹมߋ
ΞʔΩςΫνϟͷશ໘తͳमਖ਼ աڈͷࢿ࢈ʹनΘΕࣺͣͯΔ༐ؾ͕ඞཁ
".*ͷղੳ w ా͞Μ͔ΒͷεΩϟϯ͍ͨ͠ͳʔͱ͍͏͕͘Δ w ௐࠪˠؚ࣮Ίͯ࣌ؒͰɺ΄΅΄΅ͨ͠ w ΞʔΩςΫνϟΛݟ͓͔ͨ͛͠ʂ
આ໌༻ͷυΩϡϝϯτΛ࡞ w "RVBͷઆ໌༻ͷࢿྉΛ࡞ ࣮ࡍʹಡ·Ε͔ͨෆ໌ w *TTVFͰٞͰ͖Δೳྗ͕ͳ͍ ͷͰɺͱΓ͋͑ͣॻ͍ͨ
ӡ༻໘Ͱͷ࣮ w ΫϥΠΞϯτΞϓϦͷͨΊϢʔβ͔Βͷ*TTVFͰௐࠪͰ͖ΔΑ͏ʹݕ౼ w 5SJWZͰEFCVHϩάͱͯ͠JOPEFͷใͳͲΛग़ྗ͢Δ༷ʹ࣮ w 5SFOE.JDSPͳͲͰɺݕূ༻ͷπʔϧΛผ్։ൃ͠ఏڙ͍ͯ͠ΔΒ͍͠ ଟͷϨΠϠʔͰΤϥʔ͕ఆ͞ΕΔͨΊɺ*TTVFରԠ͕ࠈͱͳΓ͏Δ
ςετͷ࡞ w ϑΝΠϧγεςϜͷςετͲ͏ॻ͘Μͩͱ͍͏Έ w ԾϚγϯͷςετͲ͏ॻ͘Μͩͱ͍͏Έ
ϑΝΠϧγεςϜͷςετ w ੲձ͔ࣾΒͬͨ࡞ֶͬͯͿ04ຊʹϒϩοΫσόΠεʹ͍ͭͯॻ͍ͯ͋ͬͨ ͜ͱΛࢥ͍ग़͢ w ࠷খͷϒϩοΫσόΠεΛ࡞͠ςετσʔλΛ࡞
ԾϚγϯͷςετ w ԾϚγϯΠϝʔδΛ*B$ͱͯ͠એݴͰ͖Δ1BDLFSΛར༻ w $*্Ͱ࡞ͨ͠*NBHFΛ༻͍ͯςετ͢ΔΑ͏ʹઃܭ
ϦϦʔε
֤࣌ظΛৼΓฦΔͱ w ͱʹ͔ͬͯ͘ΈΔظ ΞʔΩςΫνϟʹनΘΕͣɺະͷϞϊΛཧղ͢Δ͜ͱʹΊͨ w ఀظ खΛࢭΊͯɺಘͨࣝΛͱʹ͞Βʹֶश͢Δ͜ͱͰࣝͷπϦʔΛ࡞ͬͨ w
໎ظ ࣅ༷ͨͳଞͷϞϊʹ৮ΕͯɺநతͳཧղΛৢͤͨ͞ w ࡞ΓࠐΈظ ઓୂγϦʔζ૯ू߹తͳΠϝʔδͰશͯΛ૯ಈһͯ͠࡞Γͨ͠
֤࣌ظΛৼΓฦΔͱ w ͱʹ͔ͬͯ͘ΈΔظ ΞʔΩςΫνϟʹनΘΕͣɺະͷϞϊΛཧղ͢Δ͜ͱʹΊͨ w ఀظ खΛࢭΊͯɺಘͨࣝΛͱʹ͞Βʹֶश͢Δ͜ͱͰࣝͷπϦʔΛ࡞ͬͨ w
໎ظ ࣅ༷ͨͳଞͷϞϊʹ৮ΕͯɺநతͳཧղΛৢͤͨ͞ w ࡞ΓࠐΈظ ઓୂγϦʔζ૯ू߹తͳΠϝʔδͰશͯΛ૯ಈһͯ͠࡞Γͨ͠ ະͷϞϊʹ͔͏ਓ͜͏͍͏ਐΈํͳͷͰͱ͍͏ֶͼ
ͦͷଞͷֶͼ ɾ༷ॻΛಡΈͳ͕Β࣮͢Δ͜ͱ ༷ॻ͢Δ͜ͱ͋Δɺ͋͘·Ͱ֓ཁཧղͷॿ͚ʹͳΔ ɾطଘͷίʔυͷॏཁੑ ࢥΘ͵πʔϧػೳʹӅΕͨػೳ͕ೖ͍ͬͯΔ͜ͱ͋Δɻ ීஈ͔ΒOSSϓϩάϥϜͷίʔυΛಡΉͷΓ͍͍͜ͱͩͳͱࢥ͍·ͨ͠ɻ ɾ༗ࣝऀͷ૬ஊ ͏ຊʹΘ͔Βͳ͔ͬͨΒɺ୭͜ΕߏΘͣ࿈བྷͯ͠ΈΔͷΓ͍͍ ɾҰੜΘͳ͍ͩΖ͏ͳͱ͍͏͕ࣝੜ͖Δࣄ͋Δ ͖ͬΓݴͬͯࠓճͷ࣮ͰಘֶͨͼҰੜΘͳ͍ͩΖ͏ͱࢥͬͯΔ
༷ॻͷ͢͢Ί w J1BE͕͓͢͢ΊͰ͢ɻ1%'ʹͦͷ··ॻ͖ࠐΊͨΓɺϊʔτͬͨΓ