Python、ときどきRust

40e86de32af123cd0460d2e5326c5573?s=47 abenben
August 29, 2020

 Python、ときどきRust

2020年8月29日の「Python JP 2020」で発表したスライドです。
https://pycon.jp/2020/timetable/?id=203945

40e86de32af123cd0460d2e5326c5573?s=128

abenben

August 29, 2020
Tweet

Transcript

  1. 1ZUIPOɺ ͱ͖Ͳ͖ 3VTU 1Z$PO+1ʢʣ Ѩ෦Ұ໵ʢ͋΂Μ΂Μʣ

  2. n ๺ւಓʢ಩খ຀ʣੜ·Ε n *OTUJUVUJPOGPSB(MPCBM4PDJFUZʢ*(4ʣגࣜձࣾ ্੮ݚڀһ n ϏδωεϞσϧΠϊϕʔγϣϯڠձʢ#.*"ʣ ೝఆδϡχΞίϯαϧλϯτ n ࣗ཯෼ࢄࣾձϑΥʔϥϜ

    %"4'ʣձһ  ࢓ࣄ ɾڭҭɺ)3޲͚ϒϩοΫνΣʔϯͷݚڀ։ൃ  ͍ΖΜͳ׆ಈ ɾاۀؒίϛϡχέʔλʔɺδΣωϨʔλʔ ɾίϛϡχςΟӡӦ ʢ4UBSU1ZUIPO$MVCɺGJOQZɺ 76$"-BCPɺ ۚ༥ΤϯδχΞཆ੒ίϛϡχςΟɺ 95FDI +"84ɺ'JO+"84ɺGPVOE *5QSPKFDUɺദͷ༿ˍͭ͘͹ϏοτίΠϯʣ ɾΠϕϯτͷاը ɾ*5ؔ࿈ॻ੶ͷࣥචɺ຋༁ɺ؂मɺࠪಡ 5XJUUFSɿ!BCFOCFO (JU)VCɿ!BCFOCFO ϒϩά  OPUFhttps://note.com/abenben ͓·͑୭Α
  3. ςΫϊϩδʔͱਓʑͱͷܨ͕ΓͰࣾձ՝୊Λղܾ͍ͨ͠ https://www3.nhk.or.jp/news/html/20200816/k10012569481000.html 

  4. ஫ҙࣄ߲ ຊࢿྉͷ಺༰͸શͯஶऀݸਓʹؼ͢Δ΋ͷͰ͋Γɺॴଐ͢ΔػؔͷݟղΛ൓өͨ͠΋ͷͰ͸͋Γ·ͤΜɻ

  5. ϒϩοΫνΣʔϯ෼໺Ͱ 3VTU΁ͷ஫໨͕ߴ·͍ͬͯΔ Ϟνϕʔγϣϯ wେ޷͖ͳΠʔαϦΞϜͷߟҊऀ ϰΟλϦοΫɾϒςϦϯ͕1ZUIPOJTUBͰ͋Δɻ イーサリアム wϰΟλϦοΫ͕ߟҊͨ͠εϚʔτίϯτϥΫτʮ7ZQFSʯ͸ɺ1ZUIPOͰ࣮૷͞ Ε͍͕ͯͨॏେͳ໰୊͕͓͖ͯ3VTUʹҠߦ͞Ε͍ͯΔɻ スマートコントラクト w-JCSBʢϦϒϥʣ

    4PMBOBʢιϥφʣͳͲͷεϚʔτίϯτϥΫτ͸3VTUϕʔε Ͱ࣮૷ɾ։ൃ͞Ε͍ͯΔɻ パブリックブロックチェーン 
  6. ࠓ೔ͷ͓࿩ • 1ZUIPOݴޠ࢓༷ʹ͍ͭͯ • 3VTUʹ͍ͭͯ • 1ZUIPO㱻3VTUؒͰͷݺͼग़͠ʹ͍ͭͯ • ੑೳʹ͍ͭͯ 

  7. 1ZUIPOݴޠ࢓༷ʹ͍ͭͯ

  8. l1ZUIPOz͸ݴޠ࢓༷ • 1ZUIPO͸ݴޠ࢓༷ͷ͜ͱͰɺ͍Ζ͍ΖͳϓϩάϥϛϯάݴޠͰ ࣮૷͞Ε͍ͯΔɻ • ීஈɺΈΜͳ͕࢖ͬͯΔͷ͸ɺ$ݴޠͰ࣮૷͞Εͨ$1ZUIPOͰ͋Δɻ • ͦΕҎ֎ʹ΋ɺෳ਺ͷݴޠͰ࣮૷͞Ε͍ͯΔɻ $1ZUIPO $ݴޠͰ࣮૷ɺΈΜͳ͕࢖ͬͯΔͷ͸͜Ε

    +ZUIPO KBWBͷ+7. *SPO1ZUIPO /&5'SBNFXPSLPS.POP 1Z1Z ׬શʹ1ZUIPOͰॻ͔Εͨ1ZUIPOͷ࣮૷ .JDSP1ZUIPO ͜Ε΋$ݴޠͰ࣮૷͞Ε͍ͯΔ͕ɺ1ZUIPOϓϩάϥϛϯ άݴޠΛίϯύΫτ͔ͭޮ཰తʹ࣮૷ͨ͠΋ͷ $-1ZUIPO $PNNPO-JTQͰ࣮૷ ͦͷଞ 
  9. 1ZUIPO͸άϧʔݴޠ 1ZUIPO͸ʮखଓ͖ʯͱʮखଓ͖ʯΛͭͳ͛Δ ކ෇͚ʢάϧʔɿ(MVFʣݴޠͱͯ͠ར༻͞Εͨͷ͕ɺ ਓؾ΍େ͖ͳൃలʹܨ͕͍ͬͯΔɻ 

  10. 1ZUIPOΛߴ଎Խ͢Δํ๏ 

  11. 3VTUʹ͍ͭͯ

  12. ೥ʹϦϦʔε͞Εͨ ΘΓͱ৽͍͠ϓϩάϥϛϯάݴޠ .P[JMMB΍"84ɺ .JDSPTPGU"[VSFͳͲ͕ࢧԉ ҆શͳϓϩάϥϛϯάݴޠ ͱͯ͠஫໨ 3VTUͱ͸ 

  13. ೥࿈ଓͰ࠷΋Ѫ͞Εͨݴޠ https://insights.stackoverflow.com/survey/2020#technology-most-loved-dreaded-and-wanted-languages 

  14. 3VTUͷಛ௃ https://www.rust-lang.org/ja w3VTU͸ඇৗʹߴ଎ͰϝϞϦޮ཰͕ߴ͘ϥϯλΠϜ΍ΨϕʔδίϨΫλ͕ͳ͍ ͨΊɺύϑΥʔϚϯεॏࢹͷαʔϏεΛ࣮૷Ͱ͖·͢͠ɺ૊ࠐΈػث্Ͱ࣮ ߦͨ͠Γଞͷݴޠͱͷௐ࿨΋؆୯ʹͰ͖·͢ɻ ύϑΥʔϚϯε w3VTUͷ๛͔ͳܕγεςϜͱॴ༗ݖϞσϧʹΑΓϝϞϦ҆શੑͱεϨου҆શ ੑ͕อূ͞Ε·͢ɻ͞Βʹ༷ʑͳछྨͷόάΛίϯύΠϧ࣌ʹഉআ͢Δ͜ͱ ͕ՄೳͰ͢ɻ ৴པੑ

    w3VTUʹ͸༏ΕͨυΩϡϝϯτɺ༗༻ͳΤϥʔϝοηʔδΛඋ͑ͨ࢖͍΍͍͢ ίϯύΠϥɺ͓Αͼ౷߹͞ΕͨύοέʔδϚωʔδϟͱϏϧυπʔϧɺଟ਺ ͷΤσΟλʹରԠ͢ΔεϚʔτͳࣗಈิ׬ͱܕݕࠪػೳɺࣗಈϑΥʔϚολ ͱ͍ͬͨҰྲྀͷπʔϧ܈͕਺ଟ͘ἧ͍ͬͯ·͢ɻ ੜ࢈ੑ 
  15. ύϑΥʔϚϯεͱϝϞϦ҆શੑͷؔ܎ ύϑΥʔϚϯε ϝϞϦηʔϑ ΄ͱΜͲͷϓϩάϥϛϯάݴޠ͸ɺύϑΥʔϚϯεͱϝϞϦ҆શੑʢϝϞϦηʔϑʣ͕ τϨʔυΦϑؔ܎ʹͳ͍ͬͯΔɻ γεςϜ͕ࣗಈͰෆཁͳ ϝϞϦΛ͔͖ूΊΔɻ ΨϕʔδίϨΫγϣϯͳͲ ϝϞϦ͸ϓϩάϥϚ͕ શ੹೚Λ࣋ͬͯ؅ཧ͢Δɻ

    3VTUͰ͸ɺ஋ʢʹϝϞϦʣͷॴ༗ݖΛ Ҡಈͤ͞Δ͜ͱͰɺϝϞϦͷ҆શੑΛ֬อ͢Δɻ 
  16. ʢ͓·͚ʣ3VTUͷ঺հಈը https://keens.github.io/slide/anzennagengorust/ https://youtu.be/t9C11A_lLwY?t=2864 ˣ͜ͷಈըͷεϥΠυ κeen (きーん) さん 実践Rust⼊⾨ 

  17. 3VTUͷΠϯετʔϧ https://rustup.rs/ 

  18. 3VTUͷݱ࣌఺ͷ࠷৽όʔδϣϯ IUUQTCMPHSVTUMBOHPSH 

  19. 74$PEF͔Β࢖͏ʹ͸ IUUQTNBSLFUQMBDFWJTVBMTUVEJPDPNJUFNT JUFN/BNF WBEJNDOWTDPEFMMEC IUUQTNBSLFUQMBDFWJTVBMTUVEJPDPNJUFNT JUFN/BNF SVTUMBOHSVTU 3VTUϓϩάϥϜΛσόοάʹ͸ $PEF--%#͕ඞཁ コードの補完やリファクタリングに

    はRust拡張機能が必要 ˞8JOEPXTͷ৔߹͸ɺ.47$ͷσόοΨ΋࢖͑ΔͷͰʮ$$ ֦ுػೳʯͷΠϯετʔϧ΋͓નΊ͠·͢ɻ 
  20. 1ZUIPO㱻3VTUؒͰͷ ݺͼग़͠ʹ͍ͭͯ

  21. 3VTUͷ''*πʔϧ ʢଟݴޠؔ਺ΠϯλϑΣʔεʣ CJOEHFO $ͷϔομʔϑΝΠϧ͔Β''*ʹඞཁͳ3VTUͷόΠϯσΟϯ άίʔυΛࣗಈੜ੒͢Δɻ$ ͱͷόΠϯσΟϯάίʔυ ΋ࣗಈੜ੒Ͱ͖Δʢݱ࣌఺Ͱ͸੍ݶ͕ଟ͍ʣɻ 1Z0 1UZUIPOҎ্ʹର͢ΔόΠϯσΟϯάɻ1ZUIPO͔Β 3VTUؔ਺Λݺͼग़ͨ͠Γɺٯʹ3VTU͔Β1ZIPOͷؔ਺Λݺ

    ͼग़ͨ͠ΓͰ͖Δɻ SVTUDQZUIPO 1UZUIPOҎ্ʹର͢ΔόΠϯσΟϯάɻ1Z0ͱಉ༷ʹ 1ZUIPO͔Β3VTUؔ਺Λݺͼग़ͨ͠Γɺٯʹ3VTU͔Β 1ZIPOͷؔ਺Λݺͼग़ͨ͠ΓͰ͖Δɻ /FPO 3VTUͰ/PEFKTϞδϡʔϧΛ࡞੒͢ΔͨΊͷόΠϯσΟϯ άɻ/PEFKT͔Β3VTUͷؔ਺Λݺͼग़ͤΔɻ 3VSV 3VTUͰ3VCZͷ֦ுػೳΛ࡞੒͢ΔͨΊͷόΠϯσΟϯάɻ 3VCZ͔Β3VTUͷؔ਺Λݺͼग़ͤΔɻ 3VTUMFS 3VTUͰ&SMBOHͷ/*'ʢ/BUJWF*NQMFNFOUFE'VODUJPOʣΛ ࡞੒͢ΔͨΊͷόΠϯσΟϯάɻ&SMBOH͔Β3VTUͷؔ਺Λ ݺͼग़ͤΔɻ&MJYJS͔ΒͰ΋࢖༻Մೳɻ ࢀߟʮ࣮ફ 3VTUೖ໳ʯ ''*ʢଟݴޠؔ਺ΠϯλϑΣʔεʣΛ௨ͯ͡ɺଞͷݴޠͱ࿈ܞ͕Մೳɻ 3VTUʹ͸($ͳͲͷෳࡶͳϥϯλΠϜ͕ͳ͍ͷͰɺ1ZUIPO 3VCZͳͲ͔Β ؆୯ʹݺͼग़ͤΔɻ 
  22. 1Z0 3VTU͔Β1ZUIPOΛݺͼग़ͨ͠Γɺ1ZUIPO͔Β 3VTUΛݺͼग़ͩͤΔϥΠϒϥϦ ݱ࣌఺Ͱͷ࠷৽൛͸WFS IUUQTHJUIVCDPN1Z0QZP 

  23. 3VTUͷ։ൃϓϩδΣΫτ࡞੒ํ๏ ࣮ߦϑΝΠϧΛ࡞ΔϓϩδΣΫτΛ࡞੒͢Δɻ $BSHPUPNMΛमਖ਼ʢ1Z0ϥΠϒϥϦΛར༻͢ΔΑ͏ʹઃఆʣ͢Δɻ ্هͷίϚϯυͷΑͬͯϫʔΫεϖʔεઃఆϑΝΠϧʢ$BSHPUPNMʣͱ ϝΠϯؔ਺ʢNBJOSTʣϑΝΠϧͷεέϧτϯ͕ࣗಈੜ੒͞ΕΔͷͰ ΤσΟλͰमਖ਼Λߦ͏ɻ 

  24. 3VTUϝΠϯؔ਺ͷ४උ ʢ3VTU͔Β1ZUIPOͷݺͼग़͠ʣ ɽϝΠϯؔ਺ʢNBJOSTʣΛमਖ਼͢Δɻ 3VTU͔Βࣗ࡞ͨ͠1ZUIPOؔ਺Λݺͼग़͢αϯϓϧίʔυ ʲz͓·͡ͳ͍zͱ ࢥͬͯԼ͍͞ʳ ࣗ࡞ͨ͠1ZUIPO ίʔυ͕୳ͤΔΑ ͏ʹΧϨϯτϑΥ ϧμʹύεΛ௨͢ɻ

    ࣗ࡞ͨ͠ 1ZUIPOؔ਺Λ ݺͼग़͢ɻ 
  25. ࣮ߦʢ3VTU͔Β1ZUIPOͷݺͼग़͠ʣ 3VTUͷϝΠϯؔ਺Λ࣮ߦ͢ΔʢϦϦʔε൛Ͱ͔࣮͠ߦͰ͖ͳ͍ͷͰ஫ҙʂʣ 1ZUIPOίʔυͷ४උ ݺͼग़͞ΕΔ1ZUIPOίʔυΛϓϩδΣΫτͷΧϨϯτύεʹ४උ͢Δɻ https://github.com/abenben/rust-test02 ˣίʔυ͸ҎԼ63-ͷ(JU)VCʹ͋Γ·͢ɻ 

  26. 3VTU͔Β1ZUIPOΛݺͼग़͢ϝϦοτ • 1ZUIPOͷϥΠϒϥϦ͕࢖͑Δɻ • 1ZUIPOͰॻ͍ͨػցֶशͷ ϩδοΫͳͲΛݺͼग़ͤΔɻ 

  27. 3VTUͷ։ൃϓϩδΣΫτ࡞੒ํ๏ ʢϥΠϒϥϦ࡞੒࣌ʣ ࣮ߦϑΝΠϧΛ࡞ΔϓϩδΣΫτΛ࡞੒͢Δɻ $BSHPUPNMΛमਖ਼ʢ1Z0ϥΠϒϥϦΛར༻͢ΔΑ͏ʹઃఆʣ͢Δɻ ্هͷίϚϯυͷΑͬͯϫʔΫεϖʔεઃఆϑΝΠϧʢ$BSHPUPNMʣͱ ϥΠϒϥϦؔ਺ʢMJCSTʣϑΝΠϧͷεέϧτϯ͕ࣗಈੜ੒͞ΕΔͷͰ ΤσΟλͰमਖ਼Λߦ͏ɻ  ϥΠϒϥϦΛ࡞Δͱ͖͸MJCΛ͚ͭΔ ϥΠϒϥϦΛ࡞Δ৔

    ߹ʹඞཁͳઃఆ ϥΠϒϥϦͷݺͼग़ ํʹ஫ҙ ʢNBJO࣌ͱҟͳΔʣ
  28. ϥΠϒϥϦ४උ ʢ1ZUIPO͔Β3VTUͷݺͼग़͠ʣ ɽϥΠϒϥϦؔ਺ʢMJCSTʣΛमਖ਼͢Δɻ 1ZUIPO͔Βݺͼग़͢3VTUؔ਺ͷαϯϓϧίʔυ  Ҿ਺ແ͠ɺ໭Γ஋ແ͠ ੔਺͕Ҿ਺ɺ੔਺͕໭Γ஋ จࣈྻ͕Ҿ਺ɺ੔਺͕໭Γ஋

  29. ϥΠϒϥϦ४උ ʢ1ZUIPO͔Β3VTUͷݺͼग़͠ʣ ʢଓ͖ʣ  ഑ྻͱ੔਺͕Ҿ਺ɺ ഑ྻ͕໭Γ஋ λϓϧʢཁૉʣͱ੔਺͕Ҿ਺ɺ ͭͷ੔਺͕໭Γ஋

  30. ࣮ߦʢ1ZUIPO͔Β3VTUͷݺͼग़͠ʣ https://github.com/abenben/rust-test01 ˣίʔυ͸ҎԼ63-ͷ(JU)VCʹ͋Γ·͢ɻ 3VTUͷϥΠϒϥϦʢ˞஫ҙɿNBDPTͷ৔߹ʣΛੜ੒͢Δ 1ZUIPOͷϝΠϯؔ਺Λ࣮ߦ͢Δ 1ZUIPOίʔυʢNBJOQZʣͷ४උ 3VTUؔ਺Λݺͼग़͢1ZUIPOίʔυΛϓϩδΣΫτͷΧϨϯτύεʹ࡞੒͢Δɻ 

  31. 1ZUIPO͔Β3VTUΛݺͼग़͢ϝϦοτ • ॲཧͷߴ଎Խ͕Ͱ͖Δɻ • $$ Ͱ࡞ΔΑΓ ϝϞϦηʔϑͳϥΠϒϥϦ͕࡞ΕΔɻ ʢੜ࢈ੑ΋ߴ͍ʣ 

  32. ੑೳʹ͍ͭͯ

  33. ੑೳൺֱͷ४උ +VQZUFSΛ࢖ͬͯ1ZUIPOͱ$ZIUPOɺ +*5 /VNCB ɺ3VTUΛ·ͱΊͯܭଌ͢Δɻ ·ͣ͸Πϯετʔϧʂ 

  34. ੑೳൺֱ GPSจʣ QZUIPO $ZUIPO 3VTU 3VTU͕ܻҧ͍ʹૣ͔ͬͨʂ https://github.com/abenben/jupyter_rust1/blob/master/Jupyter_Rust_Cython_Python.ipynb ˣίʔυ͸ҎԼ63-ͷ(JU)VCʹ͋Γ·͢ɻ +*5ίϯύΠϥʢ/VNCBʣ ࣌ؒ

    QZUIPO T $ZUIPO T +*5 /VNCB T 3VTU T ܭଌ݁Ռ ϚγϯεϖοΫ
  35. ʢ͓·͚ʣ+VQZUFS͔Β؆୯ʹ࿈ܞ 

  36. ·ͱΊ • 3VTU͸ɺϝϞϦηʔϑͱੑೳͷτϨʔυΦϑؔ܎ Λଧͪഁͬͯ͘ΕΔɻ • 1ZUIPO㱻3VTUؒͷݺͼग़͠͸εϜʔζͰ͋Δɻ ʢҰ෦ɺ͓·͡ͳ͍͕ඞཁXʣ • 1ZUIPO͸ɺࠓޙ΋άϧʔݴޠʢ㲈࢘ྩౝʣͱͯ͠ ൃల͠ଓ͚Δɻ

     ˞ࠓճ͸આ໌͠·ͤΜͰ͕ͨ͠ɺ 3VTU͸ฒྻԽ΍ඇಉظ*0Λ࢖͏͜ͱͰɺ͞ΒʹϚοϋʹͳΓ·͢ʂ
  37. ͓·͚ʢએ఻ʣ 4UBSU1ZUIPO$MVCʢ݄Ͱ։࠵ʂʣͰ଴ͬͯ·ʔ͢ʂʂ IUUQTTUBSUQZUIPODPOOQBTTDPN