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
Rustは厳しいが役に立つ Part1「Rustの概要」
Search
NearMeの技術発表資料です
PRO
June 20, 2022
Programming
0
240
Rustは厳しいが役に立つ Part1「Rustの概要」
NearMeの技術発表資料です
PRO
June 20, 2022
Tweet
Share
More Decks by NearMeの技術発表資料です
See All by NearMeの技術発表資料です
Webアプリケーションにおけるクラスの設計再入門
nearme_tech
PRO
0
15
AIエージェント for 予約フォーム
nearme_tech
PRO
1
63
ULID生成速度を40倍にしたった
nearme_tech
PRO
1
25
Amazon AuroraとMongoDBの アーキテクチャを比較してみたら 結構違った件について
nearme_tech
PRO
0
14
GitHub Custom Actionのレシピ
nearme_tech
PRO
0
8
RustでDeepQNetworkを実装する
nearme_tech
PRO
1
12
より良い解に辿り着くカギ-近傍設定の重要性
nearme_tech
PRO
0
74
ルートの質を評価する指標について
nearme_tech
PRO
0
19
Rustで作る強化学習エージェント
nearme_tech
PRO
2
70
Other Decks in Programming
See All in Programming
Exit 8 for SwiftUI
ojun9
0
140
監視 やばい
syossan27
11
9.9k
Building a macOS screen saver with Kotlin (Android Makers 2025)
zsmb
1
160
メモリウォールを超えて:キャッシュメモリ技術の進歩
kawayu
0
1.9k
趣味全開のAITuber開発
kokushin
0
200
note の Elasticsearch 更新系を支える技術
tchov
0
110
AIコーディングワークフローの試行 〜AIエージェント×ワークフローでの自動化を目指して〜
rkaga
3
3.7k
エンジニアが挑む、限界までの越境
nealle
1
270
fieldalignmentから見るGoの構造体
kuro_kurorrr
0
110
RubyKaigi Dev Meeting 2025
tenderlove
1
310
Cursor/Devin全社導入の理想と現実
saitoryc
21
14k
「理解」を重視したAI活用開発
fast_doctor
0
170
Featured
See All Featured
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
47
2.7k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
23
2.6k
Documentation Writing (for coders)
carmenintech
69
4.7k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
What's in a price? How to price your products and services
michaelherold
245
12k
Fireside Chat
paigeccino
37
3.4k
Statistics for Hackers
jakevdp
798
220k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Become a Pro
speakerdeck
PRO
27
5.3k
GitHub's CSS Performance
jonrohan
1030
460k
RailsConf 2023
tenderlove
30
1.1k
Speed Design
sergeychernyshev
29
900
Transcript
0 Rustは厳しいが役に立つ Part1「Rustの概要」 2022-06-17 第2回NearMe技術勉強会 Kaito Asahi
1 目次 What is Rust? Rustの概要紹介 パフォーマンス Rustではどのようにしてパフォーマンス向上 をおこなうのでしょうか? 信頼性
変数の借用と参照についての概要 生産性 生産性を向上させる特徴についての概要
2 What is Rust? • 公式サイトより → 「効率的で信頼できるソフトウェアを誰もがつくれる言語」 • 細かい文法
→ 公式サイトで学びましょう。(手っ取り早くは...) → 私の会の2回目以降で、文法を随時扱います。 • Rustの3つの特徴 ◦ パフォーマンス ◦ 信頼性 ◦ 生産性 出典:https://rustacean.net/
3 パフォーマンス パフォーマンスのため”ランタイム”を軽量にしています。 • ガベージコレクション Garbage collectionがない → 直訳は「ゴミ拾い」 →
動的に確保したメモリ領域で、不要になったものを自動的に解放する → メモリが不要かどうかを実行時に探すため、パフォーマンスに影響する • 非同期処理にはライブラリが必要 → 様々な非同期ランタイムのライブラリが存在
4 パフォーマンス C++に匹敵するくらい高速です。 出典:https://benchmarksgame-team.pages.debian.net/benchmarksgame/box-plot-summary-charts.html ‥
5 信頼性 豊富な型システムがあることも特徴的ですが、Rustでは以下の所有権の考え方がとても重要です。 • 所有権の規則(参考リンク) ◦ Rustの各値は、所有者と呼ばれる変数と対応している。 ◦ いかなる時も所有者は一つである。 ◦
所有者がスコープから外れたら、値は破棄される。
6 信頼性 -変数の所有者- スコープ内の変数は、スコープ外で利用することができません。 Ex) 変数 a に、数値を格納する(“{}”で囲まれた部分がスコープ) 1. 変数
a をスコープ内で定義する。 2. スコープ外で a を標準出力させようとするが、 エラーが発生した。 → a はスコープ内で定義されているので、 スコープ外で利用するとエラーが発生します。 ※ for ループや if 文でも、同じようにスコープの 概念があります。
7 信頼性 -変数の借用と参照- Heap領域を利用する変数の型には、変数の借用と参照の概念が必要です。 Ex) String型 • 文字列リテラルは、静的領域を利用 → 変数を他の変数に渡しても、借用には
ならないです。 • String型は、ヒープ領域を利用 → string2がstring1を借りているので、 string1は何も持っていない状態。
8 信頼性 -変数の借用と参照- 借用のエラーを回避するために... ↓ 参照をおこなう!!
9 信頼性 -変数の借用と参照- • 変数 string2 が string1 を参照 →
“&”を用いて、参照をおこないます。 • 参照自体は len や capacity の情報を もたない → 参照をしているだけであるので、実際に 参照されている変数が、詳細の情報をも ちます。 以下の参考リンクを元に作成 https://doc.rust-jp.rs/book-ja/ch04-02-references-and- borrowing.html
10 生産性 • エラーメッセージが比較的わかりやすい Ex) 所有権に関するエラーメッセージ • 様々なIDEでの自動補完やコンパイルチェックが豊富 → Visual
Studio Codeや、IntelliJ IDEAなどのIDEでのプラグインで、生産性が向上 (他の言語でもありますが...)
11 次回予定 RustとMongoDBを用いた、シンプルなアプリケーションの構築 (keyword = [“cargo”, “crate”, “MongoDB”, “ライフタイム”];)
12 Thank you