$30 off During Our Annual Pro Sale. View Details »

プログラミング言語Rust

 プログラミング言語Rust

Rustの紹介的な勉強会

Yusuke Hosonuma

November 09, 2016
Tweet

More Decks by Yusuke Hosonuma

Other Decks in Technology

Transcript

  1. ϓϩάϥϛϯάݴޠ
    Rust

    View Slide

  2. ࣗݾ঺հ
    • Yusuke Hosonuma
    • https://github.com/YusukeHosonuma
    • Qiita΋ͨ·ʹॻ͍ͯΔΑɻ
    • ϚΠϯυϑϧωε࣮ફதɻ

    View Slide

  3. Rustͬͯʁ

    View Slide

  4. Rustͬͯʁ
    • Mozilla͕࡞ͬͨγεςϜϓϩάϥϛϯάݴޠ
    • ߴ଎ੑɺ҆શੑɺฒߦੑɺʹϑΥʔΧε
    • C/C++/GoͷΑ͏ʹγϯάϧόΠφϦग़ྗͰ͖Δ
    • Ϟμϯͳ֓೦ʢؔ਺ܕͱ͔ʣΛऔΓೖΕͯΔ
    • Swift͕ӨڹΛड͚ͨݴޠͰ΋͋Δ

    View Slide

  5. ߴ଎ʁ

    View Slide

  6. ߴ଎ʁ
    • C/C++ͷΑ͏ͳθϩΦʔόʔϔουΛ໨ࢦ͢
    • GCͳ͠ɺࢀরΧ΢ϯτͳ͠ɺͷϝϞϦ؅ཧ
    • Ϟμϯͳ֓೦Λαϙʔτͭͭ͠ɺΦʔόʔϔου
    ͕ݶΓͳ͘ൃੜ͠ͳ͍Α͏ʹߟ͑ΒΕͯΔ
    • ʮθϩίετந৅Խʯ(zero-cost abstractions)

    View Slide

  7. ҆શʁ

    View Slide

  8. ҆શʁ
    • C/C++Ͱ͸ϝϞϦؔ࿈ͷόά͕ઈ͑ͳ͍
    • ະॳظԽ or ൣғ֎ͷྖҬʹΞΫηεͨ͠Γ
    • όοϑΝʔΦʔόʔϑϩʔ੬ऑੑͷѱເ
    • RustͰ͸ίϯύΠϧ࣌ʹແޮͳϝϞϦΞΫηε͕ൃ
    ੜ͠ͳ͍͜ͱΛอূ͢Δ
    • ੩తܕ෇͚Ͱܕਪ࿦͋Γ

    View Slide

  9. ฒߦʁ

    View Slide

  10. ฒߦʁ
    • Ұൠతʹฒߦϓϩάϥϛϯά͸೉͍͠
    • ෳ਺ͷεϨου͕ಉ͡σʔλΛಉ࣌ʹಡΈॻ͖
    ͠ͳ͍Α͏ʹࡉ৺ͷ஫ҙ͕ඞཁ
    • ࠶ݱੑͷ௿͍όά΋ੜΈग़͠΍͍͢
    • RustͰ͸ίϯύΠϧ࣌ʹσʔλڝ߹Λ๷͙࢓૊Έ
    ͕͋Δ

    View Slide

  11. ࣮੷ʁ

    View Slide

  12. ࣮੷ʁ
    • Friends of Rust

    https://www.rust-lang.org/en-US/friends.html


    ↑࣮ϓϩμΫτʹRustΛ࢖͍ͬͯΔ૊৫
    • Mozilla͸FirefoxͷϝσΟΞύʔβͰར༻

    ˠ 10ԯਓҎ্͕ར༻͍ͯ͠Δͷʹɺ1݅΋Τϥʔ͕
    ൃੜ͍ͯ͠ͳ͍ʢΒ͍͠ʣ
    • Dropbox΍LINEͱ͍ͬͨେޚॴ΋ར༻͍ͯ͠Δ

    View Slide

  13. Why Rust ?

    View Slide

  14. Why Rust ?
    • C/C++ͷΑ͏ʹߴ଎ੑ͕ٻΊΒΕΔιϑτ΢ΣΞ
    ʢOS/υϥΠόͳͲʣʹ޲͍͍ͯΔ
    • C/C++͸ߴ଎͚ͩͲɺϝϞϦ؅ཧ͸҆શͰ͸ͳ͍͠ɺ
    ฒߦϓϩάϥϛϯά΋೉͍͠
    • ݱঢ়ͷʢGoݴޠҎ֎ͷʣϞμϯݴޠ͔ΒݟΔͱػೳ͸
    ऑ͍ʢ͖ͼ͠Ίʹݴ͑͹࣌୅஗Εʣ
    • ͦ͜ͰRustͰ͢Αʂ

    View Slide

  15. ͭ·Γʁ

    View Slide

  16. ͭ·Γʁ
    • ϙετC++Λ໨ࢦ͢ݴޠ
    • ߴ଎ɺ҆શɺฒྻɺʹϑΥʔΧεͨ͠ݴޠ
    • ࠷େͷڝ߹͸Dݴޠ

    View Slide

  17. Hello Rust

    View Slide

  18. Hello Rust
    fn main() {

    println!("Hello, world!"); // This is macro

    }

    View Slide

  19. ϑΟϘφον਺ྻ

    View Slide

  20. ϑΟϘφον਺ྻ
    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

    }

    View Slide

  21. Cargo(Χϧΰ)

    View Slide

  22. Cargo(Χϧΰ)
    • Rustඪ४ͷϏϧυπʔϧ
    • ಉ࣌ʹύοέʔδϚωʔδϟͰ΋͋Δ
    • ͭ·ΓɺϏϧυɺϥΠϒϥϦͷμ΢ϯϩʔυɺ
    ґଘؔ܎ͷղܾɺΛશ෦΍Δ
    • ʮધՙʯͱ͍͏ҙຯ͕͋Δ

    View Slide

  23. Rustͷ࢝Ίํ

    View Slide

  24. Rustͷ࢝Ίํ
    • $ brew install rust
    • $ cargo new hello --bin
    • $ cd ./hello
    • $ cargo run
    • > Hello, world!

    View Slide

  25. Rust Samurai ΁ͷಓ
    ʻࡶίϥͰѱ͔ͬͨͳ

    View Slide

  26. Rust Samurai ΁ͷಓ
    • ϓϩάϥϛϯάݴޠRustʢ೔ຊޠ༁ʣ

    https://rust-lang-ja.github.io/the-rust-
    programming-language-ja/1.6/book/
    README.html
    • όʔδϣϯ1.6Ͱͪΐͬͱݹ͍͚Ͳ෼͔Γ΍͍͢

    View Slide

  27. Rust Samurai ΁ͷಓ
    • Rust by Example

    http://rustbyexample.com/index.html
    • αϯϓϧίʔυΛϕʔεʹֶͯ͠΂·͢ɻͨͩ͠
    ӳޠɻ

    View Slide

  28. Rust Samurai ΁ͷಓ
    • APIϦϑΝϨϯε

    https://doc.rust-lang.org/std/
    • ݕࡧػೳ͕ͳ͔ͳ͔༏लͰ͢ɻ

    View Slide

  29. Join us?

    View Slide

  30. Join us?
    • StackOverflowʹ͓͍ͯɺ2016೥ͷѪ͞ΕͯΔݴޠϥ
    ϯΩϯά1ҐΛ֫ಘ͍ͯ͠·͢ɻ
    • طʹηϧϑϗεςΟϯάʢࣗ਎Ͱࣗ਎ΛίϯύΠϧʣ
    Λ࣮ݱ͍ͯ͠·͢ɻ
    • GoݴޠͷΑ͏ʹޙΖ६͕ແͯ͘΋੒௕͖ͯͨ͠ݴޠ
    Ͱ͢ɻ
    • ࠷ۙʹͳͬͯར༻࣮੷͕֦େ͍ͯ͠·͢ɻ

    View Slide

  31. Rust͸͍͍ͧʂ

    View Slide

  32. Thanks!

    View Slide