Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
#DeStudy #01 Rust入門
Search
K.Mori
July 31, 2020
Programming
0
98
#DeStudy #01 Rust入門
#DeStudy #01のRust入門スライドです。
K.Mori
July 31, 2020
Tweet
Share
More Decks by K.Mori
See All by K.Mori
GraphQL入門
morikyon
1
100
Other Decks in Programming
See All in Programming
Processing Gem ベースの、2D レトロゲームエンジンの開発
tokujiros
2
130
AI Coding Agentのセキュリティリスク:PRの自己承認とメルカリの対策
s3h
0
230
チームのテスト力を鍛える
goyoki
3
800
MCPとデザインシステムに立脚したデザインと実装の融合
yukukotani
4
1.4k
AIと私たちの学習の変化を考える - Claude Codeの学習モードを例に
azukiazusa1
10
4.4k
Swift Updates - Learn Languages 2025
koher
2
490
今だからこそ入門する Server-Sent Events (SSE)
nearme_tech
PRO
3
250
Reading Rails 1.0 Source Code
okuramasafumi
0
250
Tool Catalog Agent for Bedrock AgentCore Gateway
licux
7
2.5k
Performance for Conversion! 分散トレーシングでボトルネックを 特定せよ
inetand
0
2.4k
@Environment(\.keyPath)那么好我不允许你们不知道! / atEnvironment keyPath is so good and you should know it!
lovee
0
120
Ruby Parser progress report 2025
yui_knk
1
450
Featured
See All Featured
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
131
19k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
A Tale of Four Properties
chriscoyier
160
23k
Code Review Best Practice
trishagee
71
19k
Balancing Empowerment & Direction
lara
3
620
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.5k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.1k
The Language of Interfaces
destraynor
161
25k
Building Better People: How to give real-time feedback that sticks.
wjessup
368
19k
Transcript
もちろん俺らは抵抗するで︖ Rustで kmori (@forestython)
今⽇のテーマ 2
3 Rust
Rust • Firefox の Mozilla がつくった新しいプログラミング⾔語 • 2010年7⽉7⽇に登場 • Stack
Overflowの最も愛されているプログラミング⾔語の 2016年から2019年まで4年連続1位︕ • 以下のソフト / サービスはRustで実装 • Firefox • Dropbox • AWS Lambda (Firecracker) • Discord 4
Rustのいいところ • メリット • くっそはやい • メモリ管理が優秀である • NULL安全と型推論が存在する •
デメリット • 学習コストが半端じゃない 5
実⾏速度 • 私のダメダメな実装よりQiitaの記事⾒たほうが有益なので引⽤ ü https://qiita.com/reki2000/items/55ef54b96b2 6d80ad694 • ダイクストラ法での探索アルゴリズム(枝数30万程度) ü C++
≒ Rust > Go > Julia > Kotlin > Cython > JavaScript > Python • ちなみに私のダメダメ実装でもエラトステネスの篩(指定数以下の 素数をすべて抽出)で⽐較したところ、C++とRustは拮抗してい て、Juliaがその2倍程度、Pythonが10倍程度でした 6
メモリ管理 • メモリ管理⽅法 1. プログラマが気合で管理 (C, C++) → 開放し忘れによるメモリリークの危険性 2.
システムが⾃動で不要なメモリを集約 (GC) → 実⾏時のオーバーヘッド発⽣ • Rustの管理⽅法 ü 値の所有者(=値を格納する変数)がスコープ(=簡単 に⾔うと値を含む関数等)から出た時点で開放 ü 気合で管理してた際の⼀時的な確保/開放が実現可能かつ、 GCのようなオーバヘッドとよしなにしてくれる部分をもつ 7
NULL安全、型推論 • NULL安全 • nullに対するメソッドのコール等をしたら実⾏時に出るエラー String str = null; str.length();
// => java.lang.NullPoinerException を回避するために、コンパイル時にエラーを出すこと • 鬱陶しいnull pointer exception をテスト時に発⾒ もしくは バグのまま納品せずに済む • 型推論 • 簡単に⾔うと型を推測してくれる let num; // => この時点で num は i32型と宣⾔していない num = 100; // => がしかし100の代⼊によって⾃動で定義 8
• サンプル︓ただのFizzBuzz • https://doc.rust-jp.rs/rust-by-example-ja/fn.html • よくある感想 • 正直、型が多すぎてわからん︕ • 関数の引数でも型指定しすぎててわからん︕
• 関数の定義の順番がしていないのでパッと⾒参照関係がわからん︕ 学習コスト 9
タイトル: とりまいれてみよう 10
• Mac $ brew install rust • Ubuntu $ sudo
apt install rustc • Windows スタートボタン → Ubuntu → $sudo apt install rustc ※ Windowsを素のままで使ってコーディングは 正気の沙汰ではない(諸説あり) How to install 11