カーディーラーのプラットフォームをRustで再構築。URL・在庫車・ログインを1つも失わずに
ポルトガルのカーディーラーG8 Motorは、在庫サイトと管理画面を2018年のRails 6.1アプリで運用していました。同じデータベースと写真のままRustへ書き換えたので、スタッフのログインはそのまま使えます。その後、公開サイトを新しいデザインに変え、3Dショールームと、検索エンジンとAIアシスタントを見据えたSEOを加えました。
- クライアント
- G8 Motor
- プラットフォーム
- ウェブサイトと管理画面
- 業界
- 自動車
- リリース
- 2026
課題
旧アプリはまだ動いていましたが、古いRails 6.1で稼働し、データベースと1台のサーバーを共有していました。さらに、販売店の見込み客を取りこぼす不具合も抱えていました。公開側の検索フィルターは一度も機能せず、スマートフォンの写真は向きがずれて表示されることがありました。
開発したもの
事業が頼っていたものをすべて残した全面書き換えと、その後の新しい公開サイト。Rustとaxum、PostgreSQLで構築し、Kubernetesで運用しています。
URL・データ・ログインはそのまま
新アプリは同じデータベース、同じ写真ストレージ、同じパスワードハッシュを読みます。そのためリンク、在庫、スタッフのアカウントはそのまま引き継がれました。
今の時代に合う公開サイト
WhatsAppボタンを備えた、モバイル優先で高速な在庫サイト。書き換えが本番で動き始めてからデザインを刷新しました。
3Dのバーチャルショールーム
訪問者が車、ブランド、連絡先を見て回れるthree.jsのスタンド。開いたときにだけ読み込まれます。
検索とAIでの見つけやすさ
メタタグ、JSON-LD、サイトマップ、よくある質問、llms.txtを最新の在庫から生成。検索エンジンとAIアシスタントが販売店とその在庫車を説明できます。
スマートフォンからそのまま写真を
管理画面が向きを直し、1920 pxにリサイズし、GPSなどのメタデータを削除して、写真を1枚ずつ処理します。スタッフはスマートフォンのカメラだけで済みます。
プライバシーとセキュリティ
会社の法定情報を載せたプライバシーと利用規約のページ、Cookie同意後だけ動くアクセス解析、公開フォームとログインのTurnstile、DKIM・SPF・DMARCで署名したメール。
エンジニアリングの成果
2026年9月にコード上で集計。メモリは2026年10月に本番環境で計測しました。
- 切り戻しはDNSの変更のみ。旧サーバーは利用できる状態を維持
- 切り替え前に、旧データベースと新データベースのレコード件数を照合
- 写真のコピーはゼロ。新アプリは同じストレージバケットを使用
- 公開ページはリードレプリカが配信し、障害時はプライマリへ自動で切り替え
技術
- Rust
- axum
- PostgreSQL
- three.js
- Amazon SES
- Cloudflare Turnstile
- Kubernetes
- Honeybadger