Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Rustは厳しいが役に立つ Part1「Rustの概要」
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
NearMeの技術発表資料です
PRO
June 20, 2022
Programming
270
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Rustは厳しいが役に立つ Part1「Rustの概要」
NearMeの技術発表資料です
PRO
June 20, 2022
More Decks by NearMeの技術発表資料です
See All by NearMeの技術発表資料です
AIエージェントのための 隔離された安全なインフラ設計
nearme_tech
PRO
0
22
Claude Code × git worktree で並列開発 (続き) -差分のサービスだけを併設する-
nearme_tech
PRO
1
69
Claude Code × git worktree で並列開発 — サブモジュール構成のリポジトリで成立させる —
nearme_tech
PRO
0
79
LLM + 強化学習
nearme_tech
PRO
0
37
PosthogのA/Bテスト機能の紹介
nearme_tech
PRO
1
110
AIフレンドリーなプロダクトに向けて
nearme_tech
PRO
2
70
初めてのLean言語
nearme_tech
PRO
0
110
Apache Airflow Workflow orchestration without turning cron into spaghetti
nearme_tech
PRO
2
50
実務で役立つ幾何学 ボロノイ図の基礎から グラフ・ネットワーク応用まで
nearme_tech
PRO
1
93
Other Decks in Programming
See All in Programming
Domain-Driven Transformation
hschwentner
2
2.3k
R8 の設定見直しでアプリサイズ削減
andpad
0
220
SalesForceを内製化!? ~ HR事業を支える顧客管理基盤のインフラを大公開 ~
oku053
0
180
最近”作らせてる” ローカルAIアプリの話
akit37
0
470
contenteditable と日本語入力に向き合う
colorful12
0
200
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
750
Apple Intelligence を用いた個人情報誤送信防止、及びユーザーリクエスト体験の改善について
yukiny
0
350
Starting & Sustaining Code-Based E2E Testing for Non-Coding QA Teams( #jasstniigata )
teyamagu
PRO
1
1k
複雑なUIコンポーネントとの ⻑い付き合い⽅:波及するバグからテスト戦略を経て、安全な再設計へ
mixplace
0
410
JAWS-UG 東京支部が始める、JAWS-UG支部コラボ / JAWS-UG lunchtime LT Collaboration
y0hgi
0
270
作れる、でも消せるか?──安全に「枯らして消す」機能削除術 / Drain, Then Delete
chobishiba
2
630
Findy - エンジニア向け会社紹介/Findy Company Deck
findyinc
6
400k
Featured
See All Featured
Navigating Team Friction
lara
192
16k
Designing for Performance
lara
612
70k
Mind Mapping
helmedeiros
1
400
Are puppies a ranking factor?
jonoalderson
2
4.1k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
How to build a perfect <img>
jonoalderson
1
6.1k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
630
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
12k
Raft: Consensus for Rubyists
vanstee
142
7.8k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
1
280
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
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