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
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Roadagain
November 26, 2018
Programming
0
450
Rustでオブジェクト指向エクササイズやってみた / OOP exercise in Rust
RustのLT会! Rust入門者の集い #6 での発表資料です
Roadagain
November 26, 2018
Tweet
Share
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
720
RegExp the lifehack
roadagain
0
130
Other Decks in Programming
See All in Programming
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
190
Agent Skills Workshop - AIへの頼み方を仕組み化する
gotalab555
13
7.7k
API Platformを活用したPHPによる本格的なWeb API開発 / api-platform-book-intro
ttskch
1
120
15年目のiOSアプリを1から作り直す技術
teakun
0
590
要求定義・仕様記述・設計・検証の手引き - 理論から学ぶ明確で統一された成果物定義
orgachem
PRO
13
8.9k
AIとペアプロして処理時間を97%削減した話 #pyconshizu
kashewnuts
1
190
Rで始めるML・LLM活用入門
wakamatsu_takumu
0
150
LangChain4jとは一味違うLangChain4j-CDI
kazumura
1
140
社内規程RAGの精度を73.3% → 100%に改善した話
oharu121
12
7.4k
New in Go 1.26 Implementing go fix in product development
sunecosuri
0
300
DevinとClaude Code、SREの現場で使い倒してみた件
karia
1
860
登壇資料を作る時に意識していること #登壇資料_findy
konifar
5
2.1k
Featured
See All Featured
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
62
50k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
59
50k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
2.3k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
950
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
760
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
480
GitHub's CSS Performance
jonrohan
1032
470k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
470
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
1.9k
Side Projects
sachag
455
43k
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コードを書く