横浜の製造業サイトをNext.jsで刷新し、表示速度を3.2秒から1.6秒に短縮。具体的な改善手順と注意点を実案件ベースで解説します。
こんな悩み、ありませんか?
「サイトの読み込みが遅くて、お客様が離脱してしまう」 「スマホでページが開くのに5秒以上かかる」 「コンバージョン率が思うように上がらない」
もしこれらの悩みに心当たりがあるなら、この記事は必ずお役に立ちます。
先日、横浜の製造業クライアント様のサイトをNext.jsで刷新したところ、表示速度が3.2秒から1.6秒へと50%改善し、問い合わせ数が前月比で30%増加しました。
実案件で見えたパフォーマンス課題
クライアント様の状況
横浜で精密部品を製造するA社様(従業員50名)は、既存のWordPressサイトで以下の課題を抱えていました:
- ページ読み込み時間:3.2秒(Google推奨は2.5秒以下)
- 直帰率:68%(業界平均を15%上回る)
- モバイル表示の問題:特にスマートフォンでの表示が遅い
- 画像の最適化不足:製品画像が重く、表示に時間がかかる
課題の根本原因
サイト分析の結果、主な問題は以下でした:
- 未最適化の画像ファイル(平均500KB以上)
- 不要なJavaScriptの読み込み
- サーバーサイドでの処理負荷
- キャッシュ戦略の不備
Next.jsを選んだ3つの理由
1. 静的サイト生成(SSG)による高速化
Next.jsの静的サイト生成機能を活用することで、ビルド時にHTMLを事前生成。サーバーへのリクエスト時間を大幅に短縮できます。
// pages/products/[slug].js
export async function getStaticProps({ params }) {
const product = await fetchProduct(params.slug);
return {
props: {
product,
},
// 1時間ごとに再生成
revalidate: 3600,
};
}
export async function getStaticPaths() {
const products = await fetchAllProducts();
const paths = products.map((product) => ({
params: { slug: product.slug },
}));
return {
paths,
fallback: 'blocking',
};
}
2. 画像最適化の自動化
Next.jsのImageコンポーネントにより、WebP変換や遅延読み込みが自動で実装されます。
import Image from 'next/image';
function ProductCard({ product }) {
return (
<div className="product-card">
<Image
src={product.image}
alt={product.name}
width={300}
height={200}
placeholder="blur"
blurDataURL="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQ..."
/>
<h3>{product.name}</h3>
</div>
);
}
3. パフォーマンス監視の充実
Next.jsに組み込まれたWeb Vitalsにより、リアルタイムでパフォーマンスを監視できます。
// pages/_app.js
export function reportWebVitals(metric) {
if (metric.label === 'web-vital') {
console.log(metric); // Google Analyticsに送信も可能
}
}
実装プロセスと改善結果
段階的な移行戦略
よくある失敗として、一度にすべてをNext.jsに移行しようとして混乱が生じるケースがあります。そこで今回は段階的なアプローチを採用しました:
- フェーズ1:トップページとサービス紹介ページ
- フェーズ2:製品カタログページ
- フェーズ3:お問い合わせフォームと会社概要
具体的な改善手法
画像最適化の実装
// next.config.js
module.exports = {
images: {
domains: ['example.com'],
formats: ['image/webp'],
deviceSizes: [640, 750, 828, 1080, 1200],
imageSizes: [16, 32, 48, 64, 96, 128, 256, 384],
},
};
CDNとキャッシュ戦略
静的ファイルをCloudflareのCDNで配信し、適切なキャッシュヘッダーを設定:
// next.config.js
module.exports = {
async headers() {
return [
{
source: '/_next/static/(.*)',
headers: [
{
key: 'Cache-Control',
value: 'public, max-age=31536000, immutable',
},
],
},
];
},
};
改善結果の詳細
導入3ヶ月後の成果:
- ページ読み込み時間:3.2秒 → 1.6秒(50%改善)
- First Contentful Paint:2.8秒 → 1.2秒
- Largest Contentful Paint:4.1秒 → 2.0秒
- Cumulative Layout Shift:0.15 → 0.05
- 直帰率:68% → 52%
- 問い合わせ数:前月比30%増加
導入時の注意点と対策
よくあるミスと対策
1. SEOへの影響
失敗例:URLの構造を大幅に変更してSEO順位が下落
対策:
// next.config.js
module.exports = {
async redirects() {
return [
{
source: '/old-products/:slug',
destination: '/products/:slug',
permanent: true,
},
];
},
};
2. 開発工数の見積もり
やりがちなミス:既存のWordPressと同じ感覚で工数を見積もる
実際の工数(中規模サイトの場合):
- 設計・準備:2週間
- 開発・実装:4週間
- テスト・調整:2週間
- 移行作業:1週間
3. 運用フローの変更
既存のWordPress管理画面に慣れた担当者向けに、**Headless CMS(Contentful)**を導入して運用性を確保しました。
まず何から始めるべきか
Next.js導入を検討されている場合、以下の手順で進めることをお勧めします:
1. 現状のパフォーマンス測定
- Google PageSpeed Insightsでの測定
- Google Analyticsでの直帰率確認
- ユーザーからのフィードバック収集
2. 優先度の設定
- 最も重要なページから改善
- アクセス数の多いページを優先
- コンバージョンに直結するページを重視
3. 段階的な実装計画
一度にすべてを変更せず、重要度の高いページから段階的に移行しましょう。
まとめ
Next.jsの導入により、サイトの表示速度は確実に改善できます。今回のA社様の事例では、50%の速度向上と30%の問い合わせ増加という具体的な成果を得ることができました。
重要なのは、技術的な実装だけでなく、ビジネス目標に合わせた戦略的な導入です。単純に新しい技術を使うのではなく、お客様の課題解決と売上向上を第一に考えた提案を心がけています。
サイトのパフォーマンス改善をご検討の際は、現状分析から実装まで、Fivenine Designが全面的にサポートいたします。まずはお気軽にご相談ください。