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
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Rustでオブジェクト指向エクササイズやってみた / OOP exercise in Rust
Search
Roadagain
November 26, 2018
Programming
470
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.2k
@slack/bolt on Cloud Functions for Firebase
roadagain
2
1.1k
HL-Report コントラクト開発裏話 / Developing Contracts of HL-Report
roadagain
1
740
RegExp the lifehack
roadagain
0
130
Other Decks in Programming
See All in Programming
What We Talk About When We Talk About XP
m_seki
2
420
Claude Codeを組織的に動かして月400PRを実現した話
happy_ryo
0
260
一参加者から『中の人』へ 〜全通PHPerがブースに立って学んだ、カンファレンスを100倍楽しむコツ〜
wp_daisuke
0
130
高専キャリア LT 発表内容
crysta1221
6
5.6k
Intent as Code
shoppingjaws
3
510
tsc.rip を支える技術 / Kyoto.なんか #8
susisu
0
4.4k
LoopHub - ローカルで動く GitHub で、AI と共同開発
jugyo
1
470
Kiroで創り、AgentCoreで繋ぐ!AWSで実践する「AI-DLC」から「AIエージェント統合」までの最新地図
licux
3
370
Deep dive into the select statement (GopherCon UK)
jespino
0
170
LL言語やWebフレームワークのPostgreSQL対応 〜DBの機能がユーザーに届くまで〜
kentaroutakeda
0
140
自分的「カンファレンスの楽しみ方」
syumai
0
200
Webの地図
yosuke_furukawa
PRO
3
2.6k
Featured
See All Featured
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
Exploring anti-patterns in Rails
aemeredith
3
500
What does AI have to do with Human Rights?
axbom
PRO
1
2.4k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
500
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
530
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
370
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
GitHub's CSS Performance
jonrohan
1033
470k
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コードを書く