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でオブジェクト指向エクササイズやってみた / OOP exercise in Rust
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Roadagain
November 26, 2018
Programming
460
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Rustでオブジェクト指向エクササイズやってみた / OOP exercise in Rust
RustのLT会! Rust入門者の集い #6 での発表資料です
Roadagain
November 26, 2018
More Decks by Roadagain
See All by Roadagain
StorybookでモジュールモードのVuex storeを利用する / Use Modules mode Vuex store in Storybook
roadagain
0
1.1k
@slack/bolt on Cloud Functions for Firebase
roadagain
2
1k
HL-Report コントラクト開発裏話 / Developing Contracts of HL-Report
roadagain
1
730
RegExp the lifehack
roadagain
0
130
Other Decks in Programming
See All in Programming
並列実装の現場、2ヶ月間実務でAIを使い倒したAIもPCも私も限界が近い
ming_ayami
0
130
エンジニアと一緒にテストコードの設計と実装を改善した話
mototakatsu
0
180
セキュリティの専門家じゃなくてもできる。「セキュリティ意識」をアップデートして サプライチェーン攻撃への耐性を高めよう。
tk3fftk
5
760
Oxcを導入して開発体験が向上した話
yug1224
4
310
Lemonade + Foundry Toolkit でお手軽アプリ開発
seosoft
1
330
The NotImplementedError Problem in Ruby
koic
1
790
肥大化するレガシーコードに立ち向かうためのインターフェース分離と依存の逆転 / JJUG CCC 2026 Spring
hirokunimaeta
0
550
LLM本来の能力を解き放つサンドボックス技術とAI民主化への適用
yukukotani
3
4k
AIだと陥りがちなJakarta EE最新技術への移行時の落とし穴と解決策
tnagao7
0
110
Claspは野良GASの夢をみるか
takter00
0
190
依存関係から依存物へ―Dependencyという言葉の歴史をひも解く
j_lee
0
120
正しくソフトウェアを作る、前提を疑うための認知の視点 / doubt-premise
minodriven
21
6.6k
Featured
See All Featured
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.2k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
730
The SEO identity crisis: Don't let AI make you average
varn
0
490
How to train your dragon (web standard)
notwaldorf
97
6.7k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
200
Agile that works and the tools we love
rasmusluckow
331
21k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
780
How to make the Groovebox
asonas
2
2.2k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.6k
Heart Work Chapter 1 - Part 1
lfama
PRO
7
36k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Transcript
Rustで オブジェクト指向エクササイズ やってみた Roadagain
自己紹介 Roadagain (@ringoh72) メインの言語は特になし 最近だったら多分JS系? Rustはかじった程度です
オブジェクト指向エクササイズ オブジェクト指向できていますか? という 発表(の資料)で知りました 必然的にオブジェクト指向になる極度(Extreme)な コーディング規約 原著に当たろうとしたらAmazonに在庫なし
オブジェクト指向エクササイズ 1. 1つのメソッドにつきインデントは1段階まで 2. else句を使用しないこと 3. すべてのプリミティブ型をラップする 4. 1行につきドットは1つまで 5.
名前を省略しない 6. すべてのエンティティを小さくする 7. 1つのクラスにつきインスタンス変数は2つまで 8. ファーストクラスコレクションを使用する 9. Getter Setterを使用しない
blackjack.rs ロジックが簡単 大きなオブジェクトが少ない ◦ プレイヤー ◦ ディーラー ◦ 山札 いけるやろ!
blackjack.rs ロジックが簡単 大きなオブジェクトが少ない ◦ プレイヤー ◦ ディーラー ◦ 山札 いけるやろ!
(いけませんでした)
進捗 Work In Progress
リポジトリ https://github.com/Roadagain/blackjack.rs 山札とスコア計算までは完成
感想 オブジェクト指向わからん Rustわからん Rustで完遂厳しい気がする
感想 代表例をピックアップ
オブジェクト指向わからん編
モジュール分解 「大きいモジュールを分割しよう!」 「これは分けられない、これも分けられない」 「無理じゃん…」
Getter禁止...? 手札からスコア計算しよう→Getterができる
Getter禁止...? ドローできるかどうかの判断をしよう→Getterができる
Getter禁止...? むり
Rustわからん編
extern crate 外部モジュールを使うにはextern crateが必要←わかる モジュール内でやるとhoge::fugaみたいにできない←え? rootでextern crateするとhoge::fugaできる←マジか…
Score大迷走 Aは1点としても11点としても振る舞うことができる Aが入る特殊なスコア計算のために試行錯誤
Score大迷走 enumが直和型らしいしそれ使おう→場合分けが面倒 trait化しよう→合算のときに循環参照してしまう… 特殊なケースってAだけじゃん→has_aceで判断する
詰んだ
Rustで完遂厳しい編
1行1ドット制限との戦い self.hoge ← これで1ドット →キリがないしいちいち代入すると読みにくくなる、許容 標準入力のメソッドチェーン 例: buf.split_whitespace().map(|n| u32::from_str(n).unwrap()) →無理に分割する方が読みにくい、諦める
else句厳禁 C++: ifは文 Rust: ifは式
else句厳禁 clippy「elseを書け」
注意点 あくまで「コーディング規約を守ることが難しい」 というだけ オブジェクト指向できないわけではない むしろC++よりやりやすいのでは?
次やること
次やること 頭をRustにする
次やること Rustっぽい書き方を知る Rustっぽい書き方に慣れる RustっぽいRustコードを書く