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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
NearMeの技術発表資料です
PRO
June 20, 2022
Programming
0
250
Rustは厳しいが役に立つ Part1「Rustの概要」
NearMeの技術発表資料です
PRO
June 20, 2022
Tweet
Share
More Decks by NearMeの技術発表資料です
See All by NearMeの技術発表資料です
【Browser Automation × AI】 Stagehandを試してみよう
nearme_tech
PRO
0
39
AIを用いた PID制御で部屋 の温度制御をしてみた
nearme_tech
PRO
0
52
CopilotKit + AG-UIを学ぶ
nearme_tech
PRO
3
230
Tile38 Overview
nearme_tech
PRO
0
61
Rust 製のコードエディタ “Zed” を使ってみた
nearme_tech
PRO
0
640
実践で使えるtorchのテンソル演算
nearme_tech
PRO
0
37
ローカルLLMを⽤いてコード補完を⾏う VSCode拡張機能を作ってみた
nearme_tech
PRO
0
610
初めてのmarimo (ハンズオン)
nearme_tech
PRO
0
52
ローカルLLM
nearme_tech
PRO
0
93
Other Decks in Programming
See All in Programming
どんと来い、データベース信頼性エンジニアリング / Introduction to DBRE
nnaka2992
1
340
Strategy for Finding a Problem for OSS: With Real Examples
kibitan
0
120
今年もTECHSCOREブログを書き続けます!
hiraoku101
0
190
Codex の「自走力」を高める
yorifuji
0
1.3k
AIコードレビューの導入・運用と AI駆動開発における「AI4QA」の取り組みについて
hagevvashi
0
570
Codexに役割を持たせる 他のAIエージェントと組み合わせる実務Tips
o8n
4
1.4k
OTP を自動で入力する裏技
megabitsenmzq
0
130
S3ストレージクラスの「見える」「ある」「使える」は全部違う ─ 体験から見た、仕様の深淵を覗く
ya_ma23
0
1.2k
Cyrius ーLinux非依存にコンテナをネイティブ実行する専用OSー
n4mlz
0
250
Fundamentals of Software Engineering In the Age of AI
therealdanvega
2
300
ネイティブアプリとWebフロントエンドのAPI通信ラッパーにおける共通化の勘所
suguruooki
0
210
Reactive ❤️ Loom: A Forbidden Love Story
franz1981
2
180
Featured
See All Featured
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
1
170
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.1k
Code Review Best Practice
trishagee
74
20k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
100
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
680
Between Models and Reality
mayunak
2
240
Chasing Engaging Ingredients in Design
codingconduct
0
150
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
1.9k
Paper Plane (Part 1)
katiecoart
PRO
0
6.1k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.1k
Paper Plane
katiecoart
PRO
0
48k
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