2020年8月29日の「Python JP 2020」で発表したスライドです。 https://pycon.jp/2020/timetable/?id=203945
1ZUIPOɺͱ͖Ͳ͖ 3VTU1Z$PO+1ʢʣѨ෦Ұʢ͋ΜΜʣ
View Slide
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͓·͑୭Α
ςΫϊϩδʔͱਓʑͱͷܨ͕ΓͰࣾձ՝Λղܾ͍ͨ͠https://www3.nhk.or.jp/news/html/20200816/k10012569481000.html
ҙࣄ߲ຊࢿྉͷ༰શͯஶऀݸਓʹؼ͢ΔͷͰ͋Γɺॴଐ͢ΔػؔͷݟղΛөͨ͠ͷͰ͋Γ·ͤΜɻ
ϒϩοΫνΣʔϯͰ3VTUͷ͕ߴ·͍ͬͯΔϞνϕʔγϣϯwେ͖ͳΠʔαϦΞϜͷߟҊऀ ϰΟλϦοΫɾϒςϦϯ͕1ZUIPOJTUBͰ͋ΔɻイーサリアムwϰΟλϦοΫ͕ߟҊͨ͠εϚʔτίϯτϥΫτʮ7ZQFSʯɺ1ZUIPOͰ࣮͞Ε͍͕ͯͨॏେͳ͕͓͖ͯ3VTUʹҠߦ͞Ε͍ͯΔɻスマートコントラクトw-JCSBʢϦϒϥʣ 4PMBOBʢιϥφʣͳͲͷεϚʔτίϯτϥΫτ3VTUϕʔεͰ࣮ɾ։ൃ͞Ε͍ͯΔɻパブリックブロックチェーン
ࠓͷ͓• 1ZUIPOݴޠ༷ʹ͍ͭͯ• 3VTUʹ͍ͭͯ• 1ZUIPO㱻3VTUؒͰͷݺͼग़͠ʹ͍ͭͯ• ੑೳʹ͍ͭͯ
1ZUIPOݴޠ༷ʹ͍ͭͯ
l1ZUIPOzݴޠ༷• 1ZUIPOݴޠ༷ͷ͜ͱͰɺ͍Ζ͍ΖͳϓϩάϥϛϯάݴޠͰ࣮͞Ε͍ͯΔɻ• ීஈɺΈΜͳ͕ͬͯΔͷɺ$ݴޠͰ࣮͞Εͨ$1ZUIPOͰ͋Δɻ• ͦΕҎ֎ʹɺෳͷݴޠͰ࣮͞Ε͍ͯΔɻ$1ZUIPO $ݴޠͰ࣮ɺΈΜͳ͕ͬͯΔͷ͜Ε+ZUIPO KBWBͷ+7.*SPO1ZUIPO /&5'SBNFXPSLPS.POP1Z1Z શʹ1ZUIPOͰॻ͔Εͨ1ZUIPOͷ࣮.JDSP1ZUIPO ͜Ε$ݴޠͰ࣮͞Ε͍ͯΔ͕ɺ1ZUIPOϓϩάϥϛϯάݴޠΛίϯύΫτ͔ͭޮతʹ࣮ͨ͠ͷ$-1ZUIPO $PNNPO-JTQͰ࣮ͦͷଞ
1ZUIPOάϧʔݴޠ1ZUIPOʮखଓ͖ʯͱʮखଓ͖ʯΛͭͳ͛Δކ͚ʢάϧʔɿ(MVFʣݴޠͱͯ͠ར༻͞Εͨͷ͕ɺਓؾେ͖ͳൃలʹܨ͕͍ͬͯΔɻ
1ZUIPOΛߴԽ͢Δํ๏
3VTUʹ͍ͭͯ
ʹϦϦʔε͞ΕͨΘΓͱ৽͍͠ϓϩάϥϛϯάݴޠ.P[JMMB"84ɺ.JDSPTPGU"[VSFͳͲ͕ࢧԉ҆શͳϓϩάϥϛϯάݴޠͱͯ͠3VTUͱ
࿈ଓͰ࠷Ѫ͞Εͨݴޠhttps://insights.stackoverflow.com/survey/2020#technology-most-loved-dreaded-and-wanted-languages
3VTUͷಛhttps://www.rust-lang.org/jaw3VTUඇৗʹߴͰϝϞϦޮ͕ߴ͘ϥϯλΠϜΨϕʔδίϨΫλ͕ͳ͍ͨΊɺύϑΥʔϚϯεॏࢹͷαʔϏεΛ࣮Ͱ͖·͢͠ɺࠐΈػث্Ͱ࣮ߦͨ͠Γଞͷݴޠͱͷௐ؆୯ʹͰ͖·͢ɻύϑΥʔϚϯεw3VTUͷ๛͔ͳܕγεςϜͱॴ༗ݖϞσϧʹΑΓϝϞϦ҆શੑͱεϨου҆શੑ͕อূ͞Ε·͢ɻ͞Βʹ༷ʑͳछྨͷόάΛίϯύΠϧ࣌ʹഉআ͢Δ͜ͱ͕ՄೳͰ͢ɻ৴པੑw3VTUʹ༏ΕͨυΩϡϝϯτɺ༗༻ͳΤϥʔϝοηʔδΛඋ͍͍͑ͨ͢ίϯύΠϥɺ͓Αͼ౷߹͞ΕͨύοέʔδϚωʔδϟͱϏϧυπʔϧɺଟͷΤσΟλʹରԠ͢ΔεϚʔτͳࣗಈิͱܕݕࠪػೳɺࣗಈϑΥʔϚολͱ͍ͬͨҰྲྀͷπʔϧ܈͕ଟ͘ἧ͍ͬͯ·͢ɻੜ࢈ੑ
ύϑΥʔϚϯεͱϝϞϦ҆શੑͷؔύϑΥʔϚϯε ϝϞϦηʔϑ΄ͱΜͲͷϓϩάϥϛϯάݴޠɺύϑΥʔϚϯεͱϝϞϦ҆શੑʢϝϞϦηʔϑʣ͕τϨʔυΦϑؔʹͳ͍ͬͯΔɻγεςϜ͕ࣗಈͰෆཁͳϝϞϦΛ͔͖ूΊΔɻΨϕʔδίϨΫγϣϯͳͲϝϞϦϓϩάϥϚ͕શΛ࣋ͬͯཧ͢Δɻ3VTUͰɺʢʹϝϞϦʣͷॴ༗ݖΛҠಈͤ͞Δ͜ͱͰɺϝϞϦͷ҆શੑΛ֬อ͢Δɻ
ʢ͓·͚ʣ3VTUͷհಈըhttps://keens.github.io/slide/anzennagengorust/https://youtu.be/t9C11A_lLwY?t=2864ˣ͜ͷಈըͷεϥΠυκeen (きーん) さん実践Rust⼊⾨
3VTUͷΠϯετʔϧhttps://rustup.rs/
3VTUͷݱ࣌ͷ࠷৽όʔδϣϯIUUQTCMPHSVTUMBOHPSH
74$PEF͔Β͏ʹIUUQTNBSLFUQMBDFWJTVBMTUVEJPDPNJUFNT JUFN/BNFWBEJNDOWTDPEFMMECIUUQTNBSLFUQMBDFWJTVBMTUVEJPDPNJUFNT JUFN/BNFSVTUMBOHSVTU3VTUϓϩάϥϜΛσόοάʹ$PEF--%#͕ඞཁコードの補完やリファクタリングにはRust拡張機能が必要˞8JOEPXTͷ߹ɺ.47$ͷσόοΨ͑ΔͷͰʮ$$֦ுػೳʯͷΠϯετʔϧ͓નΊ͠·͢ɻ
1ZUIPO㱻3VTUؒͰͷݺͼग़͠ʹ͍ͭͯ
3VTUͷ''*πʔϧʢଟݴޠؔΠϯλϑΣʔεʣCJOEHFO$ͷϔομʔϑΝΠϧ͔Β''*ʹඞཁͳ3VTUͷόΠϯσΟϯάίʔυΛࣗಈੜ͢Δɻ$ͱͷόΠϯσΟϯάίʔυࣗಈੜͰ͖Δʢݱ࣌Ͱ੍ݶ͕ଟ͍ʣɻ1Z01UZUIPOҎ্ʹର͢ΔόΠϯσΟϯάɻ1ZUIPO͔Β3VTUؔΛݺͼग़ͨ͠Γɺٯʹ3VTU͔Β1ZIPOͷؔΛݺͼग़ͨ͠ΓͰ͖ΔɻSVTUDQZUIPO1UZUIPOҎ্ʹର͢ΔόΠϯσΟϯάɻ1Z0ͱಉ༷ʹ1ZUIPO͔Β3VTUؔΛݺͼग़ͨ͠Γɺٯʹ3VTU͔Β1ZIPOͷؔΛݺͼग़ͨ͠ΓͰ͖Δɻ/FPO 3VTUͰ/PEFKTϞδϡʔϧΛ࡞͢ΔͨΊͷόΠϯσΟϯάɻ/PEFKT͔Β3VTUͷؔΛݺͼग़ͤΔɻ3VSV 3VTUͰ3VCZͷ֦ுػೳΛ࡞͢ΔͨΊͷόΠϯσΟϯάɻ3VCZ͔Β3VTUͷؔΛݺͼग़ͤΔɻ3VTUMFS3VTUͰ&SMBOHͷ/*'ʢ/BUJWF*NQMFNFOUFE'VODUJPOʣΛ࡞͢ΔͨΊͷόΠϯσΟϯάɻ&SMBOH͔Β3VTUͷؔΛݺͼग़ͤΔɻ&MJYJS͔ΒͰ༻Մೳɻࢀߟʮ࣮ફ 3VTUೖʯ''*ʢଟݴޠؔΠϯλϑΣʔεʣΛ௨ͯ͡ɺଞͷݴޠͱ࿈ܞ͕Մೳɻ3VTUʹ($ͳͲͷෳࡶͳϥϯλΠϜ͕ͳ͍ͷͰɺ1ZUIPO 3VCZͳͲ͔Β؆୯ʹݺͼग़ͤΔɻ
1Z03VTU͔Β1ZUIPOΛݺͼग़ͨ͠Γɺ1ZUIPO͔Β3VTUΛݺͼग़ͩͤΔϥΠϒϥϦݱ࣌Ͱͷ࠷৽൛WFSIUUQTHJUIVCDPN1Z0QZP
3VTUͷ։ൃϓϩδΣΫτ࡞ํ๏࣮ߦϑΝΠϧΛ࡞ΔϓϩδΣΫτΛ࡞͢Δɻ$BSHPUPNMΛमਖ਼ʢ1Z0ϥΠϒϥϦΛར༻͢ΔΑ͏ʹઃఆʣ͢Δɻ্هͷίϚϯυͷΑͬͯϫʔΫεϖʔεઃఆϑΝΠϧʢ$BSHPUPNMʣͱϝΠϯؔʢNBJOSTʣϑΝΠϧͷεέϧτϯ͕ࣗಈੜ͞ΕΔͷͰΤσΟλͰमਖ਼Λߦ͏ɻ
3VTUϝΠϯؔͷ४උʢ3VTU͔Β1ZUIPOͷݺͼग़͠ʣɽϝΠϯؔʢNBJOSTʣΛमਖ਼͢Δɻ3VTU͔Βࣗ࡞ͨ͠1ZUIPOؔΛݺͼग़͢αϯϓϧίʔυʲz͓·͡ͳ͍zͱࢥͬͯԼ͍͞ʳࣗ࡞ͨ͠1ZUIPOίʔυ͕୳ͤΔΑ͏ʹΧϨϯτϑΥϧμʹύεΛ௨͢ɻࣗ࡞ͨ͠1ZUIPOؔΛݺͼग़͢ɻ
࣮ߦʢ3VTU͔Β1ZUIPOͷݺͼग़͠ʣ3VTUͷϝΠϯؔΛ࣮ߦ͢ΔʢϦϦʔε൛Ͱ͔࣮͠ߦͰ͖ͳ͍ͷͰҙʂʣ1ZUIPOίʔυͷ४උݺͼग़͞ΕΔ1ZUIPOίʔυΛϓϩδΣΫτͷΧϨϯτύεʹ४උ͢Δɻhttps://github.com/abenben/rust-test02ˣίʔυҎԼ63-ͷ(JU)VCʹ͋Γ·͢ɻ
3VTU͔Β1ZUIPOΛݺͼग़͢ϝϦοτ• 1ZUIPOͷϥΠϒϥϦ͕͑Δɻ• 1ZUIPOͰॻ͍ͨػցֶशͷϩδοΫͳͲΛݺͼग़ͤΔɻ
3VTUͷ։ൃϓϩδΣΫτ࡞ํ๏ʢϥΠϒϥϦ࡞࣌ʣ࣮ߦϑΝΠϧΛ࡞ΔϓϩδΣΫτΛ࡞͢Δɻ$BSHPUPNMΛमਖ਼ʢ1Z0ϥΠϒϥϦΛར༻͢ΔΑ͏ʹઃఆʣ͢Δɻ্هͷίϚϯυͷΑͬͯϫʔΫεϖʔεઃఆϑΝΠϧʢ$BSHPUPNMʣͱϥΠϒϥϦؔʢMJCSTʣϑΝΠϧͷεέϧτϯ͕ࣗಈੜ͞ΕΔͷͰΤσΟλͰमਖ਼Λߦ͏ɻϥΠϒϥϦΛ࡞Δͱ͖MJCΛ͚ͭΔϥΠϒϥϦΛ࡞Δ߹ʹඞཁͳઃఆϥΠϒϥϦͷݺͼग़ํʹҙʢNBJO࣌ͱҟͳΔʣ
ϥΠϒϥϦ४උʢ1ZUIPO͔Β3VTUͷݺͼग़͠ʣɽϥΠϒϥϦؔʢMJCSTʣΛमਖ਼͢Δɻ1ZUIPO͔Βݺͼग़͢3VTUؔͷαϯϓϧίʔυҾແ͠ɺΓແ͕͠Ҿɺ͕Γจࣈྻ͕Ҿɺ͕Γ
ϥΠϒϥϦ४උʢ1ZUIPO͔Β3VTUͷݺͼग़͠ʣʢଓ͖ʣྻͱ͕Ҿɺྻ͕Γλϓϧʢཁૉʣͱ͕Ҿɺͭͷ͕Γ
࣮ߦʢ1ZUIPO͔Β3VTUͷݺͼग़͠ʣhttps://github.com/abenben/rust-test01ˣίʔυҎԼ63-ͷ(JU)VCʹ͋Γ·͢ɻ3VTUͷϥΠϒϥϦʢ˞ҙɿNBDPTͷ߹ʣΛੜ͢Δ1ZUIPOͷϝΠϯؔΛ࣮ߦ͢Δ1ZUIPOίʔυʢNBJOQZʣͷ४උ3VTUؔΛݺͼग़͢1ZUIPOίʔυΛϓϩδΣΫτͷΧϨϯτύεʹ࡞͢Δɻ
1ZUIPO͔Β3VTUΛݺͼग़͢ϝϦοτ• ॲཧͷߴԽ͕Ͱ͖Δɻ• $$Ͱ࡞ΔΑΓϝϞϦηʔϑͳϥΠϒϥϦ͕࡞ΕΔɻʢੜ࢈ੑߴ͍ʣ
ੑೳʹ͍ͭͯ
ੑೳൺֱͷ४උ+VQZUFSΛͬͯ1ZUIPOͱ$ZIUPOɺ+*5 /VNCBɺ3VTUΛ·ͱΊͯܭଌ͢Δɻ·ͣΠϯετʔϧʂ
ੑೳൺֱ GPSจʣQZUIPO$ZUIPO 3VTU3VTU͕ܻҧ͍ʹૣ͔ͬͨʂhttps://github.com/abenben/jupyter_rust1/blob/master/Jupyter_Rust_Cython_Python.ipynbˣίʔυҎԼ63-ͷ(JU)VCʹ͋Γ·͢ɻ+*5ίϯύΠϥʢ/VNCBʣ࣌ؒQZUIPO T$ZUIPO T+*5 /VNCB T3VTU Tܭଌ݁ՌϚγϯεϖοΫ
ʢ͓·͚ʣ+VQZUFS͔Β؆୯ʹ࿈ܞ
·ͱΊ• 3VTUɺϝϞϦηʔϑͱੑೳͷτϨʔυΦϑؔΛଧͪഁͬͯ͘ΕΔɻ• 1ZUIPO㱻3VTUؒͷݺͼग़͠εϜʔζͰ͋ΔɻʢҰ෦ɺ͓·͡ͳ͍͕ඞཁXʣ• 1ZUIPOɺࠓޙάϧʔݴޠʢ㲈࢘ྩౝʣͱͯ͠ൃల͠ଓ͚Δɻ˞ࠓճઆ໌͠·ͤΜͰ͕ͨ͠ɺ3VTUฒྻԽඇಉظ*0Λ͏͜ͱͰɺ͞ΒʹϚοϋʹͳΓ·͢ʂ
͓·͚ʢએʣ4UBSU1ZUIPO$MVCʢ݄Ͱ։࠵ʂʣͰͬͯ·ʔ͢ʂʂIUUQTTUBSUQZUIPODPOOQBTTDPN