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
110
OSSに新機能を追加するまでの苦労話
作成時間2時間の書き殴りパワポです
Masahiro331
December 01, 2022
Tweet
Share
More Decks by Masahiro331
See All by Masahiro331
Analyze Filesystem in Virtual Machine Image
masahiro331
0
110
SBOMを利用したソフトウェアサプライチェーンの保護
masahiro331
4
2.3k
Introduction Supply Chain Security
masahiro331
0
120
Container Security with Trivy
masahiro331
0
160
VirtualMachine Image scanning PoC with Molysis
masahiro331
0
130
Featured
See All Featured
Statistics for Hackers
jakevdp
796
220k
A Tale of Four Properties
chriscoyier
156
23k
Side Projects
sachag
452
42k
Designing for Performance
lara
604
68k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
430
StorybookのUI Testing Handbookを読んだ
zakiyama
27
5.3k
What's in a price? How to price your products and services
michaelherold
243
12k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Fireside Chat
paigeccino
34
3k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
506
140k
Testing 201, or: Great Expectations
jmmastey
38
7.1k
How to Think Like a Performance Engineer
csswizardry
20
1.1k
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%'ʹͦͷ··ॻ͖ࠐΊͨΓɺϊʔτͬͨΓ