Dioxusでフルスタックを1年本番運用して分かったこと
DBからUIまでRust一本で書く利点は大きい。一方でWASMのビルドは22分、リリースは最大90分。重さの正体はCIだった。
#なぜ今日これを選んだか
Rustを学んでいると「フロントまでRustで書けたら最高では」と一度は考える。この記事は、それを1年間本番で続けた人の記録だ。良かった点だけでなく、ビルド時間やCIのメモリ不足といった具体的な痛みが数字つきで書かれている。技術を選ぶときの判断材料として、そのまま使える。
#要点
- DBクエリ・サーバー関数・UIを1つの言語と型で書けるので、フィールド名を変えると
cargo checkがUIの壊れた箇所まで全部教えてくれる。本番は「退屈なほど何も起きない」 - 痛みはビルドに集中。WASMのビルドだけで6コアで約22分、リリースイメージはGitHubの2コアrunnerで約90分(自前のVPS runnerで約40分)。Clippyは7GBのrunnerでメモリ不足で落ち、10GBのswapで回避した
- 結論として、バックエンドはRustのまま。ただし操作の少ないダッシュボード型の画面にはWASMのコストが見合わないと判断し、次はWASMを使わないサーバー描画型に賭ける(まだ検証前と本人も明記)
#自分にとっての示唆
技術の良し悪しは「書きやすさ」だけでは決まらず、ビルドとCIまで含めた運用コストで決まる、というのが一番の学びだった。Rustを仕事の武器にするなら、言語の文法と同じくらい、ビルド時間やキャッシュの効かせ方といった周辺の知識が差になる。明日からは、自分のRustのコードで cargo build --release に何秒かかっているかを一度測り、どこが重いのかを cargo build --timings で見てみる。数字で語れるエンジニアになるための小さな一歩にしたい。