Slide 1

Slide 1 text

ϓϩάϥϛϯάݴޠ Rust

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

Rustͬͯʁ

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

ߴ଎ʁ

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

҆શʁ

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

ฒߦʁ

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

࣮੷ʁ

Slide 12

Slide 12 text

࣮੷ʁ • Friends of Rust
 https://www.rust-lang.org/en-US/friends.html
 
 ↑࣮ϓϩμΫτʹRustΛ࢖͍ͬͯΔ૊৫ • Mozilla͸FirefoxͷϝσΟΞύʔβͰར༻
 ˠ 10ԯਓҎ্͕ར༻͍ͯ͠Δͷʹɺ1݅΋Τϥʔ͕ ൃੜ͍ͯ͠ͳ͍ʢΒ͍͠ʣ • Dropbox΍LINEͱ͍ͬͨେޚॴ΋ར༻͍ͯ͠Δ

Slide 13

Slide 13 text

Why Rust ?

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

ͭ·Γʁ

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

Hello Rust

Slide 18

Slide 18 text

Hello Rust fn main() {
 println!("Hello, world!"); // This is macro
 }

Slide 19

Slide 19 text

ϑΟϘφον਺ྻ

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

Cargo(Χϧΰ)

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

Rustͷ࢝Ίํ

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

Rust Samurai ΁ͷಓ • ϓϩάϥϛϯάݴޠRustʢ೔ຊޠ༁ʣ
 https://rust-lang-ja.github.io/the-rust- programming-language-ja/1.6/book/ README.html • όʔδϣϯ1.6Ͱͪΐͬͱݹ͍͚Ͳ෼͔Γ΍͍͢

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

Rust Samurai ΁ͷಓ • APIϦϑΝϨϯε
 https://doc.rust-lang.org/std/ • ݕࡧػೳ͕ͳ͔ͳ͔༏लͰ͢ɻ

Slide 29

Slide 29 text

Join us?

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

Rust͸͍͍ͧʂ

Slide 32

Slide 32 text

Thanks!