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
本当は怖くない所有権の話
Search
saw
March 25, 2025
28
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
本当は怖くない所有権の話
saw
March 25, 2025
More Decks by saw
See All by saw
tonicの実装から学ぶトレイトとブランケット実装
saw_poke
0
160
Featured
See All Featured
Six Lessons from altMBA
skipperchong
29
4.5k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
420
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
630
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.6k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
260
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
570
How to Think Like a Performance Engineer
csswizardry
28
2.9k
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
Transcript
前原 宗太朗 本当は怖くない所有権の話
前原 宗太朗 SOTARO MAEHARA • Rust初心者? • 実務ではTypeScriptとPHPを触っています • 趣味:
LoL
Rustの所有権を身近な例に例えると怖くない説
A「最近Rust書いててさ、いい言語だよー」 B「でもRustって難しいよね所有権とか」 A「。。。」 Rustあるある
なんか聞いたことない難しい単語。怖い • 初心者にとって立ちはだかる壁 • Rustを教える身としても、ガードされた感 コミュニティを大きくしたい私たちにとっては致命的 Rustにおける所有権
Rustの所有権を身近な例に例えて、所有権が怖くないことを伝える • 初心者にとって立ちはだかる壁 →所有権怖くないよ • Rustを教える身としても、ガードされた感 →所有権怖くないことを伝えることができるかも? 今日の目的
• Rustでは、リソースを管理する所有者は常に1つだけ。 • 所有者がスコープを抜けると、自動的にそのリソースは解放される。 • 他の変数に渡すとき、所有権を丸ごと移す(Move)か 一時的に借りる(Borrow)かを選ぶ。 Rustにおける所有権
初学者あるある • 「借用」「スコープ」など新しい概念に戸惑う • いきなりメモリ管理の歴史の話をされて難しい話だと感じる • わからないたくさんのことを目の当たりにすると情報をシャットしたくなる 所有権は難しい
初学者あるある • 「借用」「スコープ」など新しい概念に戸惑う • いきなりメモリ管理の歴史の話をされて難しい話だと感じる • わからないたくさんのことを目の当たりにすると情報をシャットしたくなる 所有権のメンタルモデルはみんな持ち合わせている 身近な例から所有権の概念を理解し、所有者や所有物をプログラムに置き換えることで、 Rust学習のハードルを下げることができるかも
所有権は難しい
田中さんは教科書を持っている →本の所有者は田中さん 日常における物の貸し借り
ケース1 前原さんは教科書を忘れたので田中さんが教科書を見せる Rustにおける不変参照を借用すること 特徴 • 所有権は田中さんのまま • 前原さんは中身を見ることはできるが、書き込んだりはできない • 田中さんも自分の教科書を引き続き使える
日常における物の貸し借り
ケース2 教科書を前原さんに「後で返してね」と貸す Rustにおける可変参照を借用すること 特徴 • 所有権は田中さんのまま • 前原さんは中身を書き換えることもできる • 田中さんはその間、教科書を使えない
日常における物の貸し借り
ケース3 田中さんは教科書が必要なくなったので、前原さんにあげる Rustにおける所有権の移動のこと 特徴 • 所有権が田中さんから前原さんへ完全に移る • 田中さんはもうその教科書を使えなくなる • 以後、前原さんが所有者になる
日常における物の貸し借り
教科書を見せる 教科書を一時的に貸す 教科書をあげる 日常における物の貸し借り 内容をしれれば良いので、その場 で見せるだけで良い 何かしらの操作が必要なので、 返ってくることを前提に貸す 自分が不要になり、相手が必要な ので譲渡する
我々も普段から目的によって、「見せる(不変参照)」、「貸す(可変参照)」、 「譲渡(所有権の移動)」の行動を無意識に使い分けている
Rustに置き換えると? 所有者は変数 変数が値を所有している let book = String::from("教科書"); read(&book);
Rustに置き換えると? fn read(book: &str) { println!("見せてもらった内容: {}", book); } let
book = String::from("教科書"); read(&book); 不変参照の借用 • 所有権はbook変数 • read関数は中身を見る ことはできるが、書き 込んだりはできない • book変数も自分の教 科書を引き続き使える
Rustに置き換えると? fn write(book: &mut String) { book.push_str("にメモを書く"); } let mut
book = String::from("教科書"); write(&mut book); 可変参照の借用 • 所有権はbook変数のまま • write関数は中身を書き換 えることもできる • book変数はその間、教科 書を使えない
Rustに置き換えると? fn give(book: String) { println!("受け取った教科書: {}", book); } let
book = String::from("教科書"); give(book); 所有権の移動 • 所有権がbook変数から give関数へ完全に移る • book変数はもうその教科 書を使えなくなる • 以後、give関数が所有者に なる
Rustの所有権の概念は難しい • 「借用」「スコープ」など新しい概念に戸惑う • いきなりメモリ管理の歴史の話をされて難しい話だと感じる • わからないたくさんのことを目の当たりにすると情報をシャットしたくなる 所有権のメンタルモデルはみんな持ち合わせている 身近な例から所有権の概念を理解し、所有者や所有物をプログラムに置き換えることで、 Rust学習のハードルを下げることができるかも
まとめ