Rustの紹介的な勉強会
ϓϩάϥϛϯάݴޠRust
View Slide
ࣗݾհ• Yusuke Hosonuma• https://github.com/YusukeHosonuma• Qiitaͨ·ʹॻ͍ͯΔΑɻ• ϚΠϯυϑϧωε࣮ફதɻ
Rustͬͯʁ
Rustͬͯʁ• Mozilla͕࡞ͬͨγεςϜϓϩάϥϛϯάݴޠ• ߴੑɺ҆શੑɺฒߦੑɺʹϑΥʔΧε• C/C++/GoͷΑ͏ʹγϯάϧόΠφϦग़ྗͰ͖Δ• Ϟμϯͳ֓೦ʢؔܕͱ͔ʣΛऔΓೖΕͯΔ• Swift͕ӨڹΛड͚ͨݴޠͰ͋Δ
ߴʁ
ߴʁ• C/C++ͷΑ͏ͳθϩΦʔόʔϔουΛࢦ͢• GCͳ͠ɺࢀরΧϯτͳ͠ɺͷϝϞϦཧ• Ϟμϯͳ֓೦Λαϙʔτͭͭ͠ɺΦʔόʔϔου͕ݶΓͳ͘ൃੜ͠ͳ͍Α͏ʹߟ͑ΒΕͯΔ• ʮθϩίετநԽʯ(zero-cost abstractions)
҆શʁ
҆શʁ• C/C++ͰϝϞϦؔ࿈ͷόά͕ઈ͑ͳ͍• ະॳظԽ or ൣғ֎ͷྖҬʹΞΫηεͨ͠Γ• όοϑΝʔΦʔόʔϑϩʔ੬ऑੑͷѱເ• RustͰίϯύΠϧ࣌ʹແޮͳϝϞϦΞΫηε͕ൃੜ͠ͳ͍͜ͱΛอূ͢Δ• ੩తܕ͚Ͱܕਪ͋Γ
ฒߦʁ
ฒߦʁ• Ұൠతʹฒߦϓϩάϥϛϯά͍͠• ෳͷεϨου͕ಉ͡σʔλΛಉ࣌ʹಡΈॻ͖͠ͳ͍Α͏ʹࡉ৺ͷҙ͕ඞཁ• ࠶ݱੑͷ͍όάੜΈग़͍͢͠• RustͰίϯύΠϧ࣌ʹσʔλڝ߹Λ͙Έ͕͋Δ
࣮ʁ
࣮ʁ• Friends of Rust https://www.rust-lang.org/en-US/friends.html ↑࣮ϓϩμΫτʹRustΛ͍ͬͯΔ৫• MozillaFirefoxͷϝσΟΞύʔβͰར༻ ˠ 10ԯਓҎ্͕ར༻͍ͯ͠Δͷʹɺ1݅Τϥʔ͕ൃੜ͍ͯ͠ͳ͍ʢΒ͍͠ʣ• DropboxLINEͱ͍ͬͨେޚॴར༻͍ͯ͠Δ
Why Rust ?
Why Rust ?• C/C++ͷΑ͏ʹߴੑ͕ٻΊΒΕΔιϑτΣΞʢOS/υϥΠόͳͲʣʹ͍͍ͯΔ• C/C++ߴ͚ͩͲɺϝϞϦཧ҆શͰͳ͍͠ɺฒߦϓϩάϥϛϯά͍͠• ݱঢ়ͷʢGoݴޠҎ֎ͷʣϞμϯݴޠ͔ΒݟΔͱػೳऑ͍ʢ͖ͼ͠Ίʹݴ͑࣌Εʣ• ͦ͜ͰRustͰ͢Αʂ
ͭ·Γʁ
ͭ·Γʁ• ϙετC++Λࢦ͢ݴޠ• ߴɺ҆શɺฒྻɺʹϑΥʔΧεͨ͠ݴޠ• ࠷େͷڝ߹Dݴޠ
Hello Rust
Hello Rustfn main() { println!("Hello, world!"); // This is macro }
ϑΟϘφονྻ
ϑΟϘφονྻfn fib(n: u32) -> u32 { // Function definition match n { // Pattern match 0 => 1, 1 => 1, _ => fib(n - 1) + fib(n - 2), // Recursive call } // not need `return` } fn main() { let fib5 = fib(5); // local variable (Immutable is default) println!("fib(5): {}", fib5); // `{}` is placeholder // => 8 }
Cargo(Χϧΰ)
Cargo(Χϧΰ)• Rustඪ४ͷϏϧυπʔϧ• ಉ࣌ʹύοέʔδϚωʔδϟͰ͋Δ• ͭ·ΓɺϏϧυɺϥΠϒϥϦͷμϯϩʔυɺґଘؔͷղܾɺΛશ෦Δ• ʮધՙʯͱ͍͏ҙຯ͕͋Δ
Rustͷ࢝Ίํ
Rustͷ࢝Ίํ• $ brew install rust• $ cargo new hello --bin• $ cd ./hello• $ cargo run• > Hello, world!
Rust Samurai ͷಓʻࡶίϥͰѱ͔ͬͨͳ
Rust Samurai ͷಓ• ϓϩάϥϛϯάݴޠRustʢຊޠ༁ʣ https://rust-lang-ja.github.io/the-rust-programming-language-ja/1.6/book/README.html• όʔδϣϯ1.6Ͱͪΐͬͱݹ͍͚Ͳ͔Γ͍͢
Rust Samurai ͷಓ• Rust by Example http://rustbyexample.com/index.html• αϯϓϧίʔυΛϕʔεʹֶͯ͠·͢ɻͨͩ͠ӳޠɻ
Rust Samurai ͷಓ• APIϦϑΝϨϯε https://doc.rust-lang.org/std/• ݕࡧػೳ͕ͳ͔ͳ͔༏लͰ͢ɻ
Join us?
Join us?• StackOverflowʹ͓͍ͯɺ2016ͷѪ͞ΕͯΔݴޠϥϯΩϯά1ҐΛ֫ಘ͍ͯ͠·͢ɻ• طʹηϧϑϗεςΟϯάʢࣗͰࣗΛίϯύΠϧʣΛ࣮ݱ͍ͯ͠·͢ɻ• GoݴޠͷΑ͏ʹޙΖ६͕ແ͖ͯͯͨ͘͠ݴޠͰ͢ɻ• ࠷ۙʹͳͬͯར༻࣮͕֦େ͍ͯ͠·͢ɻ
Rust͍͍ͧʂ
Thanks!