Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Python、ときどきRust

abenben
August 29, 2020

 Python、ときどきRust

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

abenben

August 29, 2020
Tweet

More Decks by abenben

Other Decks in Technology

Transcript

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

    View Slide

  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
    ͓·͑୭Α

    View Slide

  3. ςΫϊϩδʔͱਓʑͱͷܨ͕ΓͰࣾձ՝୊Λղܾ͍ͨ͠
    https://www3.nhk.or.jp/news/html/20200816/k10012569481000.html

    View Slide

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

    View Slide

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

    View Slide

  6. ࠓ೔ͷ͓࿩
    • 1ZUIPOݴޠ࢓༷ʹ͍ͭͯ
    • 3VTUʹ͍ͭͯ
    • 1ZUIPO㱻3VTUؒͰͷݺͼग़͠ʹ͍ͭͯ
    • ੑೳʹ͍ͭͯ

    View Slide

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

    View Slide

  8. l1ZUIPOz͸ݴޠ࢓༷
    • 1ZUIPO͸ݴޠ࢓༷ͷ͜ͱͰɺ͍Ζ͍ΖͳϓϩάϥϛϯάݴޠͰ
    ࣮૷͞Ε͍ͯΔɻ
    • ීஈɺΈΜͳ͕࢖ͬͯΔͷ͸ɺ$ݴޠͰ࣮૷͞Εͨ$1ZUIPOͰ͋Δɻ
    • ͦΕҎ֎ʹ΋ɺෳ਺ͷݴޠͰ࣮૷͞Ε͍ͯΔɻ
    $1ZUIPO $ݴޠͰ࣮૷ɺΈΜͳ͕࢖ͬͯΔͷ͸͜Ε
    +ZUIPO KBWBͷ+7.
    *SPO1ZUIPO /&5'SBNFXPSLPS.POP
    1Z1Z ׬શʹ1ZUIPOͰॻ͔Εͨ1ZUIPOͷ࣮૷
    .JDSP1ZUIPO ͜Ε΋$ݴޠͰ࣮૷͞Ε͍ͯΔ͕ɺ1ZUIPOϓϩάϥϛϯ
    άݴޠΛίϯύΫτ͔ͭޮ཰తʹ࣮૷ͨ͠΋ͷ
    $-1ZUIPO $PNNPO-JTQͰ࣮૷
    ͦͷଞ

    View Slide

  9. 1ZUIPO͸άϧʔݴޠ
    1ZUIPO͸ʮखଓ͖ʯͱʮखଓ͖ʯΛͭͳ͛Δ
    ކ෇͚ʢάϧʔɿ(MVFʣݴޠͱͯ͠ར༻͞Εͨͷ͕ɺ
    ਓؾ΍େ͖ͳൃలʹܨ͕͍ͬͯΔɻ

    View Slide

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

    View Slide

  11. 3VTUʹ͍ͭͯ

    View Slide

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

    View Slide

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

    View Slide

  14. 3VTUͷಛ௃
    https://www.rust-lang.org/ja
    w3VTU͸ඇৗʹߴ଎ͰϝϞϦޮ཰͕ߴ͘ϥϯλΠϜ΍ΨϕʔδίϨΫλ͕ͳ͍
    ͨΊɺύϑΥʔϚϯεॏࢹͷαʔϏεΛ࣮૷Ͱ͖·͢͠ɺ૊ࠐΈػث্Ͱ࣮
    ߦͨ͠Γଞͷݴޠͱͷௐ࿨΋؆୯ʹͰ͖·͢ɻ
    ύϑΥʔϚϯε
    w3VTUͷ๛͔ͳܕγεςϜͱॴ༗ݖϞσϧʹΑΓϝϞϦ҆શੑͱεϨου҆શ
    ੑ͕อূ͞Ε·͢ɻ͞Βʹ༷ʑͳछྨͷόάΛίϯύΠϧ࣌ʹഉআ͢Δ͜ͱ
    ͕ՄೳͰ͢ɻ
    ৴པੑ
    w3VTUʹ͸༏ΕͨυΩϡϝϯτɺ༗༻ͳΤϥʔϝοηʔδΛඋ͑ͨ࢖͍΍͍͢
    ίϯύΠϥɺ͓Αͼ౷߹͞ΕͨύοέʔδϚωʔδϟͱϏϧυπʔϧɺଟ਺
    ͷΤσΟλʹରԠ͢ΔεϚʔτͳࣗಈิ׬ͱܕݕࠪػೳɺࣗಈϑΥʔϚολ
    ͱ͍ͬͨҰྲྀͷπʔϧ܈͕਺ଟ͘ἧ͍ͬͯ·͢ɻ
    ੜ࢈ੑ

    View Slide

  15. ύϑΥʔϚϯεͱϝϞϦ҆શੑͷؔ܎
    ύϑΥʔϚϯε ϝϞϦηʔϑ
    ΄ͱΜͲͷϓϩάϥϛϯάݴޠ͸ɺύϑΥʔϚϯεͱϝϞϦ҆શੑʢϝϞϦηʔϑʣ͕
    τϨʔυΦϑؔ܎ʹͳ͍ͬͯΔɻ
    γεςϜ͕ࣗಈͰෆཁͳ
    ϝϞϦΛ͔͖ूΊΔɻ
    ΨϕʔδίϨΫγϣϯͳͲ
    ϝϞϦ͸ϓϩάϥϚ͕
    શ੹೚Λ࣋ͬͯ؅ཧ͢Δɻ
    3VTUͰ͸ɺ஋ʢʹϝϞϦʣͷॴ༗ݖΛ
    Ҡಈͤ͞Δ͜ͱͰɺϝϞϦͷ҆શੑΛ֬อ͢Δɻ

    View Slide

  16. ʢ͓·͚ʣ3VTUͷ঺հಈը
    https://keens.github.io/slide/anzennagengorust/
    https://youtu.be/t9C11A_lLwY?t=2864
    ˣ͜ͷಈըͷεϥΠυ
    κeen (きーん) さん
    実践Rust⼊⾨

    View Slide

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

    View Slide

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

    View Slide

  19. 74$PEF͔Β࢖͏ʹ͸
    IUUQTNBSLFUQMBDFWJTVBMTUVEJPDPNJUFNT JUFN/BNF
    WBEJNDOWTDPEFMMEC
    IUUQTNBSLFUQMBDFWJTVBMTUVEJPDPNJUFNT JUFN/BNF
    SVTUMBOHSVTU
    3VTUϓϩάϥϜΛσόοάʹ͸
    $PEF--%#͕ඞཁ
    コードの補完やリファクタリングに
    はRust拡張機能が必要
    ˞8JOEPXTͷ৔߹͸ɺ.47$ͷσόοΨ΋࢖͑ΔͷͰʮ$$֦ுػೳʯͷΠϯετʔϧ΋͓નΊ͠·͢ɻ

    View Slide

  20. 1ZUIPO㱻3VTUؒͰͷ
    ݺͼग़͠ʹ͍ͭͯ

    View Slide

  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ͳͲ͔Β
    ؆୯ʹݺͼग़ͤΔɻ

    View Slide

  22. 1Z0
    3VTU͔Β1ZUIPOΛݺͼग़ͨ͠Γɺ1ZUIPO͔Β
    3VTUΛݺͼग़ͩͤΔϥΠϒϥϦ
    ݱ࣌఺Ͱͷ࠷৽൛͸WFS
    IUUQTHJUIVCDPN1Z0QZP

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    ϥΠϒϥϦΛ࡞Δͱ͖͸MJCΛ͚ͭΔ
    ϥΠϒϥϦΛ࡞Δ৔
    ߹ʹඞཁͳઃఆ
    ϥΠϒϥϦͷݺͼग़
    ํʹ஫ҙ
    ʢNBJO࣌ͱҟͳΔʣ

    View Slide

  28. ϥΠϒϥϦ४උ
    ʢ1ZUIPO͔Β3VTUͷݺͼग़͠ʣ
    ɽϥΠϒϥϦؔ਺ʢMJCSTʣΛमਖ਼͢Δɻ
    1ZUIPO͔Βݺͼग़͢3VTUؔ਺ͷαϯϓϧίʔυ

    Ҿ਺ແ͠ɺ໭Γ஋ແ͠
    ੔਺͕Ҿ਺ɺ੔਺͕໭Γ஋
    จࣈྻ͕Ҿ਺ɺ੔਺͕໭Γ஋

    View Slide

  29. ϥΠϒϥϦ४උ
    ʢ1ZUIPO͔Β3VTUͷݺͼग़͠ʣ
    ʢଓ͖ʣ

    ഑ྻͱ੔਺͕Ҿ਺ɺ
    ഑ྻ͕໭Γ஋
    λϓϧʢཁૉʣͱ੔਺͕Ҿ਺ɺ
    ͭͷ੔਺͕໭Γ஋

    View Slide

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

    View Slide

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

    View Slide

  32. ੑೳʹ͍ͭͯ

    View Slide

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

    View Slide

  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
    ܭଌ݁Ռ
    ϚγϯεϖοΫ

    View Slide

  35. ʢ͓·͚ʣ+VQZUFS͔Β؆୯ʹ࿈ܞ

    View Slide

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

    ˞ࠓճ͸આ໌͠·ͤΜͰ͕ͨ͠ɺ
    3VTU͸ฒྻԽ΍ඇಉظ*0Λ࢖͏͜ͱͰɺ͞ΒʹϚοϋʹͳΓ·͢ʂ

    View Slide

  37. ͓·͚ʢએ఻ʣ
    4UBSU1ZUIPO$MVCʢ݄Ͱ։࠵ʂʣͰ଴ͬͯ·ʔ͢ʂʂ
    IUUQTTUBSUQZUIPODPOOQBTTDPN

    View Slide