開発事例 マーケティングサイト

いまご覧のサイトを、URLを1つも失わずにNext.jsからRustへ移行

envixo.comは99言語で公開しています。Next.jsからRustへ書き換え、切り替え前にすべてのURLを旧サイトと比較しました。あわせて、検索エンジン、右から左へ書く言語、AIアシスタントに対して旧サイトが取りこぼしていた点も直しています。

クライアント
Envixo
プラットフォーム
ウェブ
業界
マーケティングサイト
リリース
2026

課題

Next.jsのサイトは問題なく動いていましたが、512 MBのメモリを確保したNode.jsサーバーが必要で、1ページあたり約150 KBのHTMLを送信していました。さらに、右から左へ書く言語のレイアウトがなく、構造化データはJavaScriptでしか追加されていませんでした。

導入前: 512 MBのメモリを確保したNode.jsサーバー
改善後: 約33 MBのコンテナに入ったRustのバイナリ1つ、使用メモリは約46 MB
導入前: Reactのデータを含め、1ページあたり約150 KBのHTML
改善後: サーバーで生成するHTML。必要な箇所だけ素のJavaScript
導入前: ページ読み込み後にJavaScriptが追加する構造化データ
改善後: サーバーが送るHTMLに、翻訳済みのJSON-LD
導入前: アラビア語、ヘブライ語、ペルシャ語ほか4言語が左から右のレイアウト
改善後: 右から左へ書く7言語すべてに対応したレイアウト
導入前: www.envixo.comはエラーを返し、llms.txtも存在しなかった
改善後: wwwはenvixo.comへリダイレクトし、/llms.txtがAIアシスタント向けに会社を説明

開発したもの

axumとAskamaを使ったRustサーバーが、同じURL、同じ99の言語ファイル、同じデザインを配信します。TailwindとプレーンなJavaScriptで構築しました。

同じURLとリダイレクト

言語判定、言語プレフィックス、末尾のスラッシュ、言語Cookieは旧サイトと同じ挙動です。そのためリンクも検索順位も失っていません。

まずSEO同等、そして改善

メタデータ、hreflang、JSON-LD、サイトマップは旧サイトと一致させ、SNS共有タグの不具合を修正し、llms.txtを新設しました。

差分ゼロを条件にした関門

専用ツールで旧サイトと新サイトのすべてのURLを比較しました。切り替えの条件は差分ゼロ。加えて英語、アラビア語、日本語で3つの画面幅のスクリーンショットも確認しています。

3Dで見る

ランディングページ全体をthree.jsでガイド付きに巡るツアー。3Dが使えない場合はシンプルな一覧を表示します。

SDKを使わないお問い合わせフォーム

Cloudflare Turnstileでスパムを判定し、メールはAmazon SESで送信します。リクエストは自前で署名し、ハニーポットと訪問者ごとの上限も設けています。

エラーは通知、キーは安全に

サーバーとブラウザのエラーはHoneybadgerへ送られ、APIキーがページに出ることはありません。

エンジニアリングの成果

メモリは2026年10月に本番環境で計測。イメージのサイズはビルドの値です。サイトマップのURL数は自動テストで検証しています。

~33 MB
サイト全体のコンテナイメージ
~46 MB
使用メモリ
99
同じ言語ファイルから生成した言語数
594
サイトマップのURL、すべて維持
  • 切り戻しはDNSで。旧サイトは7日間そのまま残しました
  • 依存関係の更新は、テストとイメージのビルドが通れば自動でマージ
  • テストとビルドはEnvixo自社のCIランナーで実行
  • 以前と同じ言語ファイルから99言語で公開

技術

  • Rust
  • axum
  • Askama
  • Tailwind CSS
  • three.js
  • Amazon SES
  • Cloudflare Turnstile
  • Kubernetes

ビジネスに合わせたソフトウェアが必要ですか?

連携、社内ツール、アプリ、プラットフォームを、AIエージェントを指揮するシニアエンジニアがオーダーメイドで開発します。必要なことをお聞かせいただければ、私たちならどのように構築するかをお見せします。