Share
Embed
Pythonでのパッケージング: エコシステムの理解と現場での活用 PyCon APAC2023
Higuchi kokoro
October 27, 2023
Transcript
52 slides
-
©2023 Wantedly, Inc. PythonͰͷύοέʔδϯάɿ ΤίγεςϜͷཧղͱݱͰͷ׆༻ PyCon APAC 2023 Oct 27,
2023 - Kokoro Higuchi -
©2021 Wantedly, Inc. ͢͜ͱɾ͞ͳ͍͜ͱ w ฉ͍ͯΒ͍͍ͨਓ👨💻👩💻 w 1Z5PSDIͳͲύοέʔδͷΠϯετʔϧͰ٧·ͬͨ͜ͱ͕͋Δਓ w ͳͥ٧·ͬͨͷ͔ɺύοέʔδϯάͷΤίγεςϜͷશମ૾͔Βཧղ͍ͨ͠ਓ
w ͢͜ͱ📣 w ύοέʔδϯάͷΤίγεςϜͷશମ૾ w ύοέʔδΛΠϯετʔϧ͢Δਓ͚ͷ5JQT w ͋·Γ͞ͳ͍͜ͱ🙊 w ύοέʔδ࡞ɾӡ༻ଆͷ5JQT w ݸผͷٕज़ʹਂ͘যΛͯͨ -
©2021 Wantedly, Inc. ࠓͷΞδΣϯμ ࣗݾհɾձࣾհ 1ZIPOͷύοέʔδϯάΤίγεςϜͷશମ૾ 1ZUIPOͷύοέʔδΠϯετʔϧͷࣦഊྫͱݪҼ
1ZUIPOͷύοέʔδΠϯετʔϧ͕͍͠ཧ༝ ύοέʔδΛ͏·͘Πϯετʔϧ͢ΔͨΊͷ5JQT -
©2021 Wantedly, Inc. ໊લ: Ṥޱ ৺ (Higuchi Kokoro) ॴଐ: Wantedly,
inc. X: @zerebom_3 σʔλαΠΤϯςΟετͱͯ͠ɺਪનγεςϜͷਫ਼վળɾධՁɾ ػցֶशج൫ͷ։ൃΛ͍ͯ͠·͢ ਖ਼͘͠πʔϧϓϩάϥϛϯάݴޠΛ͍ɺϩόετʹϓϩμΫτ։ൃ͢Δ͜ͱʹ ؔ৺͕͋Γ·͢ ࣗݾհ -
©2023 Wantedly, Inc. Create A World Where Work Drives Passion.
γΰτͰίίϩΦυϧͻͱΛ;͢ ձࣾհ ࢲͨͪͷϛογϣϯ ©2023 Wantedly, Inc. -
©2023 Wantedly, Inc. ձࣾʹ༡ͼʹߦ͜͏ ňΧδϡΞϧ໘ஊʯͱ͍͏ࣄ୳͠ͷ৽ج४ • ਓͱνʔϜΛʮ͍ʯͰϚονϯά • ňΛฉ͖ʹߦ͘ʯମݧΛ௨ͯ͡ϑϥοτͳग़ձ͍Λग़ ਐԽΛଓ͚ΔUIͱج൫
• ίϯςϯπ͕ө͑ΔϞμϯͰγϯϓϧͳUIදݱ • ΑΓຊ࣭తͳϚονϯάΛՄೳʹ͢ΔਪનΞϧΰϦζϜ ఏڙϓϩμΫτ -
©2021 Wantedly, Inc. w ύοέʔδ͕Ξοϓϩʔυ͞ΕΔϦϙδτϦ ޙड़ ͔ΒΠϯετʔϧ w QJQJOTUBMMTPNF@QBDLBHF w
࣮ ॴͷύοέʔδΛΠϯετʔϧ͢Δʹଟ͘ͷม͕ؔ༩ w Ծڥ w 1ZUIPOόʔδϣϯ w ύοέʔδ͕ґଘ͍ͯ͠ΔଞͷϥΠϒϥϦ w Ϛγϯͷ04 MJOVY XJOEPXTʜ ύοέʔδར༻ऀͷࢹ -
©2021 Wantedly, Inc. w ύοέʔδ͕ूΊΒΕ͍ͯΔΦϯϥΠϯͷϦϙδτϦ w 1Z1* w ࠷͘ΘΕ͍ͯΔ w
QJQͷσϑΥϧτΠϯετʔϧݩ 1Z1"ʹΑͬͯӡӦ w ଞʹ͍͔ͭ͋͘Δ w "OBDPOEB$MPVE w DPOEBGPSHF w (JU)VC ύοέʔδϦϙδτϦ Ҿ༻: https://pypi.org/ https://anaconda.cloud/ -
©2021 Wantedly, Inc. w ύοέʔδϦϙδτϦ͔ΒύοέʔδΛΠϯετʔϧ͢Δπʔϧ w ߴػೳԽʹ͖ͭɺෳͷػೳΛ͍࣋ͬͯΔ w QJQ w
1ZUIPOʹඪ४උͷύοέʔδΠϯετʔϥʔ w 1PFUSZ w ઃఆϑΝΠϧͰ͋ΔQZQSPKFDUUPNMΛݩʹґଘؔΛղফ͠ͳ͕ΒΠϯετʔϧ͢Δ w ύοέʔδͷϏϧυͰ͖Δ w ґଘؔͷάϧʔϓԽιʔεͷมߋՄೳ ύοέʔδΠϯετʔϥʔ -
©2021 Wantedly, Inc. w ύοέʔδϦϙδτϦʹΞοϓϩʔυ͞Ε͍ͯΔύοέʔδͷܗࣜ w #VJMU%JTUSJCVUJPO CEJTU w
༰ϏϧυࡁΈͷόΠφϦϑΝΠϧ w ಛੑΠϯετʔϧ͕ૣ͍͕041ZUOPOͷόʔδϣϯʹґଘ w ֦ுࢠXIFFM XIM σΟετϦϏϡʔγϣϯ ύοέʔδϯάܗࣜ -
©2021 Wantedly, Inc. w ύοέʔδϦϙδτϦʹΞοϓϩʔυ͞Ε͍ͯΔύοέʔδͷܗࣜ w 4PVSDF%JTUSJCVUJPO TEJTU w
༰ιʔείʔυͱηοτΞοϓεΫϦϓτ QZQSPKFDUUPNM ͳͲ w ಛੑखݩͷϚγϯͰϏϧυ͕ߦΘΕΔͷͰ͍͕ॊೈ w ֦ுࢠUBSH[ w $POEB$MPVEͳͲಠࣗͷܗࣜ σΟετϦϏϡʔγϣϯ ύοέʔδϯάܗࣜ -
©2021 Wantedly, Inc. w #VJMU%JTUSJCVUJPO CEJTU w Ξφϩδʔ͓ห w
͙͢৯ΒΕΔຯௐͰ͖ͳ͍ w 4PVSDF%JTUSJCVUJPO TEJTU w Ξφϩδʔ৯ࡐͱϨγϐ w ͙͢৯ΒΕͳ͍ຯޙ͔ΒௐઅͰ͖Δ σΟετϦϏϡʔγϣϯ ύοέʔδϯάܗࣜ -
©2021 Wantedly, Inc. w /VNQZͷ1Z1*ΛΈΔͱʜ w ଟͷ#EJTU XIM ͱҰͭͷ4EJTU UBSH[
͕ଘࡏ͢Δ w #EJTU1ZUIPOόʔδϣϯͱ04͝ͱʹଘࡏ͢Δ w ʮ͓ห༻ҙ͔ͨ͠ΒɺΈ ڥ߹கͨ͠ ͕ ͋ΕͦΕΛɺͳ͚ΕϨγϐ QZQSPKFDUUPNM ͔Β࡞ͬͯͶ Ϗϧυ ʯ σΟετϦϏϡʔγϣϯ ύοέʔδϯάܗࣜ Ҿ༻: https://pypi.org/project/numpy/#files -
©2021 Wantedly, Inc. ύοέʔδͱύοέʔδϯά w ઃఆϑΝΠϧ QZQSPKFDUUPNM w ύοέʔδΛύοέʔδϯά͢ΔͨΊͷ
ใ͕٧·ͬͨϑΝΠϧ w ύοέʔδ͕ͲΜͳϥΠϒϥϦʹґଘ͍ͯ͠Δ͔ w ͲΜͳόʔδϣϯͰಈ͔͘ w ͲΜͳϥΠηϯεͷݩར༻Ͱ͖Δͷ͔ w ͲΜͳϏϧυπʔϧΛͬͯϏϧυ͢Δͷ͔ -
©2021 Wantedly, Inc. 14'ͱ1&1 w 14' 1ZUIPO4PGUXBSF'PVOEBUJPO w 1ZUIPOͱؔ࿈ٕज़Λࢧԉɺอޢ͢Δ৫
w 1&1ͷཧঝೝʹؔ༩ w 1&1 1ZUIPO&OIBODFNFOU1SPQPTBMT w 1ZUIPOʹର͢ΔػೳͷఏҊɾमਖ਼ɾվળʹؔ͢Δઃܭจॻ w ύοέʔδϯάʹؔ͢Δ1&1ෳ͋Δ w 1&1ύοέʔδͷόʔδϣϯ൪߸ͷܗࣜͱґଘੑࢦఆΛඪ४Խ w 1&1ϏϧυγεςϜʹґଘ͠ͳ͍ιʔείʔυπϦʔͷϑΥʔϚοτͷఏҊ w 1&1QZQSPKFDUUPNMͰϏϧυγεςϜͷཁ݅Λࢦఆ -
©2021 Wantedly, Inc. 1Z5PSDIͷΠϯετʔϧࣦഊࣄྫ w 1Z5PSDIΠϯετʔϧ͢Δࡍɺ04ΠϯετʔϥʔπʔϧΛࢦఆ͢Δඞཁ͕͋Δ w ্هͰਖ਼͘͠ࢦఆͯ͠(16ΛಡΈࠐΜͰ͘Εͳ͍͜ͱ Ҿ༻: https://pytorch.org/
w ˞1Z5PSDI'BDFCPPL͕։ൃͨ͠ػցֶशϥΠϒϥϦɻ χϡʔϥϧωοτϫʔΫͷ։ൃͳͲʹ༻͍ΒΕΔɻ(16ରԠ -
©2021 Wantedly, Inc. 1Z5PSDIͷΠϯετʔϧ͕ࣦഊ͢Δཧ༝ w 1Z1*ͷσΟετϦϏϡʔγϣϯ TEJTU CEJTU Ͱ(16ͷґଘؔ·Ͱཧ͠ͳ͍ w
(16ར༻ʹඞཁͳϥΠϒϥϦ $6%" 1Z1"ͷཧ͢ΔπʔϧͰͳ͍ͨΊ w ௨ৗͷϥΠϒϥϦʹඞཁͳ͍ͨΊ w ैͬͯɺ1Z1*Ҏ֎ͷύοέʔδϦϙδτϦ͔ΒΠϯετʔϧ͕ඞཁͳέʔε w 1Z1*ʹσΟετϦϏϡʔγϣϯ$16ͷΈ w (16ͷυϥΠόʔͦΕʹԊͬͨ$6%"ͷόʔδϣϯΛखಈͰΠϯετʔϧ͢Δඞཁ w खಈΏ͑ʹϛε͕ੜ͍͢͡ -
©2021 Wantedly, Inc. GBTU5FYUͷΠϯετʔϧ͕ࣦഊ͢Δཧ༝ w 1ZCJOE w $ ͷΫϥεؔΛ1ZUIPOͰར༻Ͱ͖ΔΑ͏ʹͳΔϥΠϒϥϦ w
QZCJOEͰϥοϓ͞Εͨ$ ίʔυɺ1ZUIPO͔Βར༻͢ΔલʹίϯύΠϧ͕ඞཁ w 1&1 w QZQSPKFDUUPNMͰϏϧυ͢ΔπʔϧΛબΔΑ͏ʹ͢Δن w 1&1 w QZQSPKFDUUPNMʹϏϧυͷϓϩηεͰඞཁͳπʔϧΛ໌ه͢Δن w 1PFUSZ w 1&1 ʹ४ڌͯ͠ϥΠϒϥϦΛΠϯετʔϧ͢Δ -
©2021 Wantedly, Inc. GBTU5FYUͷΠϯετʔϧ͕ࣦഊ͢Δཧ༝ w GBTU5FYU w 1&1 ʹະରԠ w
QZQSPKFDUUPNMͷCVJMETZTUFNʹQZCJOEؚ͕·Ε͍ͯͳ͍ Ҿ༻: https://github.com/facebookresearch/fastText/pull/1270/files -
©2021 Wantedly, Inc. GBTU5FYUͷΠϯετʔϧΤϥʔରࡦ w QZQSPKFDUUPNMΛͬͨCVJMEʹରԠ͢ΔΑ͏13Λ࡞ɾϚʔδΛґཔ w ͨͩ͠ϝϯςφϯε͞Εͯͳ͍Α͏ͳͷͰϚʔδ͞Ε͍ͯͳ͍ w
৽͍͠ඪ४ 1&1 ʹԊΘͳ͍ϥΠϒϥϦͳΔ͘։ൃʹ༻͍ͳ͍ w ϫʔΫΞϥϯυͱͯ͠XIFFMϑΝΠϧΛΠϯετʔϧ͠ɺQBUIΛࢦఆ -
©2021 Wantedly, Inc. 1ZUIPOͷྺ࢙͕͘ɺπʔϧͷ౷ഇ߹͕ଟ͍ w 1ZUIPOҎ্ͷྺ࢙Λ࣋ͭ w ٕज़ͷਐԽɾχʔζͷมԽʹΑΓଟ͘ͷπʔϧ͕౷ഇ߹͞ΕΔ w ͦͦదʹϥΠϒϥϦΛΠϯετʔϧ͢Δʹଟ͘ͷΈ͕ඞཁ
w ˠݱࡏɺ֤πʔϧͷͱɺͦΕΒΛͲ͏Έ߹ΘͤΔ͖͔Δͷ͕͍͠ -
©2021 Wantedly, Inc. 1ZUIPOͷྺ࢙͕͘ɺπʔϧͷ౷ഇ߹͕ଟ͍ w ྫ͑͜Μͳײ͡🫠 w ઃఆϑΝΠϧSFRVJSFNFOUUYU 1JQ fi
MF QZQSPKFDUUPNM w όʔδϣϯϚωʔδϟʔQZFOW SZF w ԾڥWFOW WJSUVBMFOW QPFUSZ SZF w ϏϧυπʔϧTFUVQUPPMT EJTUVUJMT QPFUSZ w ύοέʔδΠϯετʔϥʔFBTZ@JOTUBMM QJQ QPFUSZ QJQFOWCDPOEB SZF w σΟετϦϏϡʔγϣϯFHH XIFFM UBSH[ -
©2021 Wantedly, Inc. 1ZUIPOϥΠϒϥϦͷґଘෳࡶʹͳΓ͍͢ w ਂֶशɾػցֶशͷ։ൃʹ༻͍ΒΕΔϥΠϒϥϦґଘ͕ෳࡶʹͳΓ͍͢ w ͦͷΑ͏ͳϥΠϒϥϦߴͳԋࢉ͕ඞཁ w ߴͳίϯύΠϥݴޠ
$ (16ʹґଘ w 04(16υϥΠόʔʹґଘ͕͔͔Δ w ϥΠϒϥϦͷϏϧυ࣌ʹґଘؔΛؚΊΔඞཁ͕͋Δ w 1Z1*Ͱཧ͠ͳ͍ϨΠϠʔͰͷґଘ͕͔͔Δ "#* w ϋʔυଆͷਐԽૣ͘ɺԽ͍͢͠ w "QQMFTJMJDPOͷొ w (16ͷυϥΠόΞοϓσʔτ -
©2021 Wantedly, Inc. ͦͦύοέʔδΠϯετʔϧʹଟ͘ͷෳࡶͳΈ͕ඞཁ w ҰݴʹॴͷڥʹϥΠϒϥϦΛΠϯετʔϧ͢Δͱ͍ͬͯଟ͘ͷ੍ʹґଘ͢Δ w 1ZUIPOόʔδϣϯɾԾڥɾ04ɾґଘϥΠϒϥϦʜ w ੍ɾߟྀ͖͕͢ଟ͍ͷͰෳࡶʹͳΔ
Ҿ༻: https://tech.instacart.com/freezing-pythons-dependency-hell-in-2018-f1076d625241 -
©2021 Wantedly, Inc. ඪ४͕߹ٞͰܾ·ΔͷͰఆ·Δͷʹ͕͔͔࣌ؒΔ w ύοέʔδΠϯετʔϧͷඪ४1&1Λ௨ͯ͡ίϛϡχςΟͰߦΘΕΔ w σΟετϦϏϡʔγϣϯQZQSPKFDUUPNMͷܗࣜͳͲ w 1&1ͷঝೝɾධՁɾվળʹଟ͘ͷਓͷ߹ҙܗ͕ඞཁͰ͕͔͔࣌ؒΔ
w ϦʔυλΠϜʹΑΓଟ͘ͷπʔϧ༷ͷ౷ഇ߹ɾڞଘ͕ى͖Δ w ͪΖΜɺಛఆͷ৫ɾاۀͷҙͰ༷͕ࡦఆ͞ΕΔ͜ͱͳ͘Φʔϓϯͳϓϩηε Ͱվળ͕ਐΊΒΕΔূڌͰ͋Δ -
©2021 Wantedly, Inc. ࠷৽ͷಈΛ͏ɾ৽͍͠πʔϧΛ͏ w ෳࡶͰ͋Δ͜ͱίϛϡχςΟཧղ͓ͯ͠ΓɾվળΛਐΊ͍ͯΔ w ৽͍͠πʔϧ΄ͲɺҰͭͷπʔϧͰଟ͘ͷ͜ͱ͕Ͱ͖ΔΑ͏ʹͳ͍ͬͯΔ w 1PFUSZύοέʔδͷ։ൃɾϏϧυɾґଘؔͷཧɾύϒϦογϡ
w SZF1ZUIPOόʔδϣϯཧ w (16ڥʹ͓͍ͯ/7*%*"͕1Z1*্ͷαϙʔτΛਐΊ͍ͯΔ w $5,ʢ$6%"5PPMLJUʣͷ͍͔ͭ͘ͷϥΠϒϥϦίϯϙʔωϯτΛ XIFFMͱͯ͠ύοέʔδԽɻOWJEJBDVCMBTDVͳͲΛ1Z1*Ͱ -
©2021 Wantedly, Inc. ࠷৽ͷಈΛ͏ɾ৽͍͠πʔϧΛ͏ w ෳࡶͰ͋Δ͜ͱίϛϡχςΟཧղ͓ͯ͠ΓɾվળΛਐΊ͍ͯΔ w 1PFUSZ͜͜Ͱେ͖ͳΞοϓσʔτΛճ͍ͯ͠Δ w ωΠςΟϒґଘͷαϙʔτɾґଘؔͷάϧʔϓԽ
w ΩϟογϡͷഁଛճආɾϩοΫܗࣜͷมߋ w Πϯετʔϧ্ w ιʔεͷࢦఆʹ༏ઌॱҐΛࢦఆՄೳ w ΤοδέʔεͰͷΠϯετʔϧ্ w IUUQTQZUIPOQPFUSZPSHIJTUPSZɹ -
©2021 Wantedly, Inc. ݸਓతͳ͓͢͢Ίڥߏங w ௨ৗͷڥ w 1PFUSZ QZFOWϥΠϒϥϦґଘؔͷཧ1ZUIPOόʔδϣϯͷཧ w
SZFશ෦ཧ w (16ڥ w յͯ͠ͳ͍7JSUVBM.BDIJOF HDQ (PPHMF$PMBCͰࢼߦࡨޡ w TIFMMTDSJQU%PDLFS fi MFͰ(16υϥΠόपΓίʔυͰཧ -
©2021 Wantedly, Inc. ·ͱΊ w ύοέʔδΠϯετʔϧଟ͘ͷΈɾنʹࢧ͑ΒΕͯͰ͖͍ͯΔ w ϦϙδτϦɾΠϯετʔϥʔɾ1&1ɾσΟετϦϏϡʔγϣϯͳͲ w 1ZUIPOͷύοέʔδΠϯετʔϧҎԼͷཁҼͰ͍͠
w ྺ࢙͕͘ɺଟ͘ͷπʔϧ͕౷ഇ߹ w ύοέʔδͷґଘ͕ؔෳࡶʹͳΓ͍͢ w ͦͦҰൠతʹύοέʔδΠϯετʔϧม͕ଟ͕͍͘͠ w ߹ٞʹΑΓඪ४ͷࡦఆʹ͕͔͔࣌ؒΔ w ΤίγεςϜͷվળਐΜͰ͍ΔͷͰΩϟονΞοϓͰ͖ΔͱΠϯετʔϧ͍͢͠ w ৽͍͠πʔϧ΄ͲɺҰͭͷπʔϧͰଟ͘ͷ͜ͱ͕Ͱ͖Δ w ৽͍͠πʔϧಈΛ͏͜ͱͰָʹΠϯετʔϧͰ͖Δํ๏Λ͠ΕΔ -
©2021 Wantedly, Inc. ࢀߟจݙ w 1Z1* w IUUQTQZQJPSH w 1PFUSZ
w IUUQTQZUIPOQPFUSZPSH w 1ZUIPOͷ1BDLBHF.BOBHFSΛਂ͘ΔͨΊͷϦϯΫू w IUUQTHJTUHJUIVCDPNWBBBBBORVJTI BEEFBGFGCFGCD fi MFQZUIPOQBDLBHFNBOBHFSNE w 1ZUIPO1BDLBHJOH6TFS(VJEF w IUUQTQBDLBHJOHQZUIPOPSHFOMBUFTU w QZQBDLBHJOHOBUJWF w IUUQTQZQBDLBHJOHOBUJWFHJUIVCJP