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で解きほぐす話
Search
estie | エスティ
April 04, 2023
Programming
1.3k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
不動産データの複雑さをRustで解きほぐす話
estie | エスティ
April 04, 2023
More Decks by estie | エスティ
See All by estie | エスティ
Dropを走らせないRustのメモリ管理
estie
0
3
AI時代 自由なデータ利活用とデータ保護を両立するバックエンド設計
estie
0
22
自社のレビュー履歴からAIコードレビュアーをつくる方法
estie
5
1.8k
ボトルネックは人間 ~その負担をどこまで AI に渡せるか~
estie
0
86
自分の価値が出せる場所に越境せよ
estie
0
170
AIに障害切り分けを全部やってもらった。 。 。 。
estie
1
580
Claude Code の /loop を活用する
estie
0
220
【estie x AI】 AI戦略の現在地と未来
estie
0
140
不動産業界における業界特化のデータ整備とAI活用 ─Vertical DataとVertical AI─
estie
1
1.1k
Other Decks in Programming
See All in Programming
Long Living Tokens, Die, Die, Die! (or: The One Ring is Banned in Modern)
sylph01
0
160
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Kaigi on Rails 2026, Tokyo, Japan
marcoroth
2
150
Androidだけじゃない、DroidKaigiで広がった私の技術スタック
akkeylab
0
130
すこし踏み込む CancellationToken
htkym
2
1.7k
ChromeでローカルLLM
ryu1013
0
140
[ハンズオン]AIへの指示だけで「五目並べ」を作ってみよう
satoshi256kbyte
1
380
Optunaを作ったときにやりたかったこと、その後 (2026/10/16, Optuna Meetup #3)
iwiwi
1
400
UnityでSystem.Net.WebSocketsなWebSocketサーバが動かないのでUnity Monoのコードを覗いてみた / about implementing websocket server with unity mono
drumath2237
1
600
コードレビューのボトルネックを"する側"と"される側"の両面から解消する
yub0n
2
1.6k
wkhtmltopdfの次どうするか問題2026
willnet
2
1.9k
ソニーのクラウド共通基盤の変遷とAI時代の開発スタイルに合わせた進化 / The Journey of Sony’s Common Cloud Platform and Its Evolution for AI-Native Development
kenjiyoneyama
0
260
コーディング自動化の次へ。人の介入をゼロにするファクトリーとサポートAIによる実践
timakin
4
2.8k
Featured
See All Featured
Building Applications with DynamoDB
mza
96
7.2k
Between Models and Reality
mayunak
4
500
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
270
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3.1k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
570
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
710
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
520
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.8k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
800
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.7k
sira's awesome portfolio website redesign presentation
elsirapls
0
450
Transcript
不動産データの複雑さを Rustで解きほぐす話 2022/03/15 Rust、何もわからない… #7 yassan
1 発表者紹介 Kazushige Ando (yassan) estie Software Engineer 東京大学情報理工学系研究科中退後、 ノーコードツールの開発に従事。
2022年4月estieに入社。主に不動産デー タの管理を担当。Rustで新規データ の管理システムを開発中。
2 estie (エスティ) は オフィス賃貸業の羅針盤となる 不動産データ分析基盤の構築を 目指す不動産テック企業です
3 複雑な不動産データを 正確に扱いたい!
不動産データの複雑さ
データソースからのデータの例 募集ビル名,階,募集面積,募集賃料,貸付予定日,募集開始日,… テストビル,1F,123.45坪,@12345円,即入居可能,2023/01/02,… テストビル,2F,123.45坪,@12345円,即入居可能,2023/02/03,… テストビル,3F,123.45坪,@12345円,2023年07月,2023/03/04,… テストビル,4F,123.45坪,@12345円,2023年08月,2023/04/05,… テストビル,5F,123.45坪,@12345円,2023年09月,2023/05/06,… テストビル,6F,123.45坪,@12345円,2023年10月,2023/06/07,… … 5
不動産データはどう複雑なのか?
データソースからのデータの例 募集ビル名,階,募集面積,募集賃料,貸付予定日,募集開始日,… テストビル,1F,123.45坪,@12345円,即入居可能,2023/01/02,… テストビル,2F,123.45坪,@12345円,即入居可能,2023/02/03,… テストビル,3F,123.45坪,@12345円,2023年07月,2023/03/04,… テストビル,4F,123.45坪,@12345円,2023年08月,2023/04/05,… テストビル,5F,123.45坪,@12345円,2023年09月,2023/05/06,… テストビル,6F,123.45坪,@12345円,2023年10月,2023/06/07,… … 6
税込? 税抜? 共益費は いくら? 坪単価? 総額? 税込? 税抜? 坪単価? 総額? 賃料xヶ月分? 不動産データはどう複雑なのか?
データソースからのデータの例 募集ビル名,階,募集面積,募集賃料,貸付予定日,募集開始日,… テストビル,1F,123.45坪,@12345円,即入居可能,2023/01/02,… テストビル,2F,123.45坪,@12345円,即入居可能,2023/02/03,… テストビル,3F,123.45坪,@12345円,2023年07月,2023/03/04,… テストビル,4F,123.45坪,@12345円,2023年08月,2023/04/05,… テストビル,5F,123.45坪,@12345円,2023年09月,2023/05/06,… テストビル,6F,123.45坪,@12345円,2023年10月,2023/06/07,… … 7
税込? 税抜? 共益費は いくら? 坪単価? 総額? 税込? 税抜? 坪単価? 総額? 賃料xヶ月分? データを正確に扱うには隠れた属性の管理が必要 しかも隠れた属性はある日突然現れる 不動産データはどう複雑なのか?
8 それ、Rustで解決できますよ!
Rustのenumでのデータ管理
データソースからのデータの例 募集ビル名,階,募集面積,募集賃料,貸付予定日,募集開始日,… テストビル,1F,123.45坪,@12345円,即入居可能,2023/01/02,… テストビル,2F,123.45坪,@12345円,即入居可能,2023/02/03,… テストビル,3F,123.45坪,@12345円,2023年07月,2023/03/04,… テストビル,4F,123.45坪,@12345円,2023年08月,2023/04/05,… テストビル,5F,123.45坪,@12345円,2023年09月,2023/05/06,… テストビル,6F,123.45坪,@12345円,2023年10月,2023/06/07,… … 10
税込? 税抜? 共益費は いくら? 坪単価? 総額? 税込? 税抜? 坪単価? 総額? 賃料xヶ月分? // 共益費 // Common Area Maintenance Fee enum CamFee { // 共益費なし None, // 共益費(総額, 税有無) TotalAmount(u32, bool), // 共益費(坪単価, 税有無) PerArea(u32, bool), // 共益費(賃料比) Relative(f64), } 共益費をenumで表してみる
• 選択肢と値を一緒に持てる • C++だと選択肢だけ • Pythonだとできなくはないが煩雑 11 Rustのenumの良さ // 共益費
// Common Area Maintenance Fee enum CamFee { // 共益費なし None, // 共益費(総額, 税有無) TotalAmount(u32, bool), // 共益費(坪単価, 税有無) PerArea(u32, bool), // 共益費(賃料比) Relative(f64), }
• match式で網羅性チェックされる • C++もPythonも網羅性チェックなし 12 Rustのenumの良さ let total_cam_fee = match
cam_fee { CamFee::None => ..., CamFee::TotalAmount(_, _) => ..., CamFee::PerArea(_, _) => ..., CamFee::Relative(_) => ..., }; C++ですら網羅性チェックがあったとしても危険 CamFee fee = (CamFee)12345; が合法なため
• 気軽にシリアライズできる • C++はライブラリ組み込みが大変 • Pythonはデシリアライズの前後で 型を合わせるのが大変 13 Rustのenumの良さ #[derive(Serialize,
Deserialize)] enum CamFee { ... } let json: String = serde_json::to_string(&old_fee)?; let new_fee: CamFee = serde_json::from_str(&json)?; JSONのままDBに保存すればいいし、 型がそのままスキーマになる
14 複雑なデータでも Rustのenumで解きほぐせる!
新規プロダクトでのデータ管理
16 • estieではWhole Product構想で新規プロダクトを複数開発中 • 新規プロダクトの開発では、未知の属性に次々遭遇する • データは正確に表現しつつ、状況の変化への柔軟な対応が必要 新規プロダクトの立ち上げ時は特に大変!
17 • 最初はデータ管理処理をPythonで実装した • 主な理由は、スキルセットと実装初速の速さ • 賃料よりも格段に複雑なデータと判明し、やがて実装が破綻 • 強力なenumの使えるRustに移行して実装を進められるように 新規プロダクトの立ち上げ時の言語選定
18 • 鬼門とされる所有権システムは意外と気にならない • 変数をあちこちで書き換えないスタイルに慣れていれば十分 • 人間の注意力に頼っていた部分をコンパイラに任せられて楽 • enumの選択肢を追加したときの影響範囲の考慮など •
他のRustチームから飛び地的に使ってもメリットのほうが勝る Rustに移行した感想
19 型の強力さだけでも Rustを選ぶ価値は十分ある!
まとめ
21 • プロダクトの立ち上げ時のデータ管理は特に大変 • Rustのenumは複雑な構造のデータを扱うのに便利 • 型の強力さだけでRustを選ぶ価値は十分ある まとめ
22 プロダクトの立ち上げ時こそ Rustを使おう!