Skip to content
Now accepting Q2 projects — limited slots available. Get started →
Migration Service

Gatsby を Astro に移行 | Social Animal

Gatsby のビルドは取り戻せない 20 分を浪費している

  • GraphQL forces you to write resolvers just to query local markdown files
  • Builds balloon to 15–30 minutes once you cross 500 pages
  • React runtime ships to every static page with zero interactive elements
  • Plugin dependencies rot with unpatched CVEs and abandoned maintainers
  • Development stalled post-Netlify acquisition with no major release roadmap
  • Incremental builds fail unpredictably, forcing full rebuilds that kill momentum
  • Mobile Lighthouse scores hit 95–100 with zero client-side JavaScript by default
  • Type-safe content queries via getCollection() replace GraphQL ceremony
  • 500-page sites rebuild in under 30 seconds using Vite's dependency pre-bundling
  • Islands architecture hydrates only your interactive components, leaving HTML static
  • Active monthly releases and a growing integration ecosystem backed by real funding
  • Your team deploys 6x per day instead of waiting for build queues to clear

Gatsby had a good run. It pioneered the React-based static site generator category and introduced thousands of developers to the JAMstack. But it's stalled. Netlify acquired Gatsby in early 2023, development has slowed to a crawl, the plugin ecosystem is deteriorating, and build times on large content sites are still painfully slow.

Astro was built to solve exactly the problems Gatsby created. Zero JavaScript by default, content collections that replace GraphQL complexity, build times that make Gatsby look embarrassingly slow. If you're maintaining a Gatsby content site, migrating to Astro isn't just an upgrade—it's overdue.

Gatsby からの移行を促進する Pain Points

シンプルなデータの GraphQL 複雑性

Gatsby の GraphQL データレイヤーは、ローンチ時には革新的でした。ほとんどのコンテンツサイトにとっては、また大げさすぎることもありました。ブログ記事をリストアップしたいですか?GraphQL クエリを書きます。マークダウンファイルからフロントマターを取得したいですか?GraphQL クエリ。画像を表示したいですか?特別なコンポーネントにラップされた GraphQL クエリ。

50 ページのマーケティングサイトでは、独自のファイルシステムに存在するコンテンツをレンダリングするだけで、数十の GraphQL クエリを保守しています。抽象化により、認知的オーバーヘッドが追加され、それに見合う利益がありません。

スケーリングが悪いビルド時間

Gatsby のビルドパイプラインは、各ページを GraphQL レイヤーで処理し、イメージ変換を実行し、各ルートの完全な React バンドルを生成します。500 ページのコンテンツサイトは、10~15 分でビルドできます。2,000 ページのサイト?インクリメンタルビルドが有効になっていても、30 分以上かかります。

コンテンツの更新はすべて待機を意味します。すべてのタイポ修正は待機を意味します。コンテンツチームはツールに恨みを抱き始めます。

プラグインエコシステムが衰退している

Gatsby の強みはそのプラグインエコシステムでした—gatsby-plugin-image、gatsby-plugin-sharp、gatsby-source-filesystem、gatsby-transformer-remark。これらのプラグインの多くは、1 年以上にわたって意味のある更新がされていません。依存関係の競合が増加します。セキュリティアドバイザリが積み重なります。npm audit を実行すると、47 の脆弱性が表示され、ほとんどが Gatsby 依存関係ツリーの深くにあります。

重い JavaScript バンドル

Gatsby は、インタラクティビティがゼロのページでも、すべてのビジターに React ランタイム全体を配信します。静的な「About Us」ページでも、React、ReactDOM、Gatsby のランタイムがダウンロードされます。Lighthouse スコアが低下し、Core Web Vitals が低下し、接続速度が遅いユーザーが代償を支払います。

Astro が提供するもの

コンテンツコレクションが GraphQL を置き換える

Astro のコンテンツコレクションは、コンテンツサイト用に目的で構築されています。TypeScript でスキーマを定義し、マークダウンファイルをフォルダにドロップし、getCollection('blog') で照会します。GraphQL なし。特別なプラグインなし。Type セーフなフロントマター検証が付属しています。

// src/content/config.ts
import { defineCollection, z } from 'astro:content';

const blog = defineCollection({
  schema: z.object({
    title: z.string(),
    date: z.date(),
    tags: z.array(z.string()),
    image: z.string().optional(),
  }),
});

それで終わり。gatsby-node.js なし、createPages API なし、GraphQL フラグメントなし。データ取得は、それを必要とするコンポーネント内の単一の関数呼び出しです。

デフォルトでゼロ JavaScript

Astro は、明示的にオプトインしない限り、クライアント側の JavaScript をゼロで配信します。50 ページのマーケティングサイトは、ブラウザに純粋な HTML と CSS を送信します。インタラクティビティが必要な場合—コンタクトフォーム、イメージカルーセル、検索ウィジェット—Astro の Islands アーキテクチャを使用して、そのコンポーネントのみをハイドレートします。

その結果:Lighthouse スコアは、最適化トリックを使用しなくても、モバイルで 95~100 です。

1 秒未満のビルド

Astro は Vite 上で実行されます。500 ページのコンテンツサイトは 30 秒未満でビルドされます。2,000 ページのサイトは 2 分未満でビルドされます。開発での Hot module replacement はインスタントです。コンテンツチームは、Gatsby の開発サーバーが GraphQL スキーマを再コンパイルするのを待つのではなく、変更をミリ秒で確認できます。

フレームワーク不知論コンポーネント

既に Gatsby サイトから React コンポーネントをお持ちですか?Astro はビルド時にレンダリングするか、クライアント側でハイドレートします—選択肢はあなた次第です。段階的に Astro コンポーネントに移行したい、または特定の機能に Vue または Svelte を試したいですか?Astro は同じプロジェクトですべてをサポートします。

Gatsby から Astro への移行プロセス

フェーズ 1:監査とアーキテクチャ(第 1 週目)

既存の Gatsby サイトをマッピングすることから始めます—すべてのページテンプレート、すべての GraphQL クエリ、すべてのプラグイン依存関係、すべてのダイナミックルート。gatsby-node.js 構成を文書化し、カスタムソースプラグインを識別し、すべてのサードパーティ統合をカタログ化します。

そこから、Astro アーキテクチャを設計します:コンテンツコレクションスキーマ、レイアウト階層、統合選択、展開ターゲット。

フェーズ 2:コンテンツ移行(第 2 週目)

Gatsby の構造からコンテンツを Astro コンテンツコレクションに変換する自動化移行スクリプトを構築します。フロントマタースキーマが検証および正規化されます。MDX コンポーネントは、それらの Astro 同等物にマップされるか、フレームワーク島としてラップされます。

Gatsby の gatsby-image 使用法は、Astro の組み込み <Image /> コンポーネントに変換されます。これは、レスポンシブイメージ、フォーマット変換、遅延読み込みをネイティブに処理します—プラグインチェーンは不要です。

フェーズ 3:テンプレートとコンポーネント変換(第 2~3 週目)

Gatsby ページテンプレートが Astro レイアウトとページになります。クライアント側の相互作用が必要ない React コンポーネントは Astro コンポーネントになります—より単純で、より高速、ゼロ JS。対話型コンポーネントは React のままで(または書き直され)、部分的なハイドレーションに client: ディレクティブを使用します。

Gatsby プラグインを Astro 統合で置き換えます:

  • gatsby-plugin-sitemap@astrojs/sitemap
  • gatsby-plugin-feed@astrojs/rss を使用したカスタム RSS
  • gatsby-plugin-mdx@astrojs/mdx を介した組み込み MDX サポート
  • gatsby-plugin-sharp → 組み込み astro:assets 画像最適化

フェーズ 4:SEO 保存(第 3 週目)

これは移行が生きるか死ぬかの場所です。徹底的な URL 保存戦略を実装します:

  • 301 リダイレクト URL 構造の変更がある場合、ホスティングレベルで構成されてゼロレイテンシリダイレクト
  • Canonical タグ 既存の URL 構造と一致するすべてのページ
  • 構造化データ(JSON-LD)移行され、Google の Rich Results Test に対して検証済み
  • メタタグ 正確に保存—タイトルタグ、説明、Open Graph、Twitter Cards
  • XML サイトマップ 再生成され、Google Search Console に送信
  • 内部リンク監査 移行後の壊れた参照をキャッチする

Google Search Console で 30 日間監視して、インデックスの問題を即座に検出します。

フェーズ 5:テストとローンチ(第 4 週目)

既存の Gatsby サイトに対する完全なビジュアルリグレッションテスト。パフォーマンスベンチマークが並べて比較されます。アクセシビリティ監査。クロスブラウザテスト。ステージング URL にデプロイしてチームがレビューしてから、ダウンタイムなしでカットオーバーします。

Gatsby サイトがサービスワーカーを使用していた場合(gatsby-plugin-offline で一般的)、既存のビジターのブラウザーでキャッシュの無効化を強制する代替サービスワーカーを配置します—ほとんどの移行ガイドが完全にスキップするステップです。

タイムラインと価格

50~200 ページのコンテンツサイトの典型的な Gatsby から Astro への移行は 3~4 週間 実行され、$8,000 から開始されます。カスタムソースプラグイン、複雑な動的ルーティング、または重い CMS 統合を含む大規模なサイトは、5~6 週間が必要な場合があります。

スコープ要因には、ユニークなページテンプレートの数、カスタム Gatsby プラグイン、サードパーティ API 統合、および React コンポーネントを保持するか、すべてをネイティブ Astro に変換するかどうかが含まれます。

結論

Gatsby は死んでいませんが、改善することはありません。Astro はアクティブに開発されており、繁栄するコミュニティを持ち、コンテンツ豊富なウェブサイト向けにゼロから設計されました。移行パスは十分に文書化されており、パフォーマンスの向上は即座であり、開発チームは GraphQL ボイラープレートを排除してくれたことに感謝するでしょう。

停滞しているフレームワークの保守を中止します。速く動いているものに移動します。

How It Works

The migration process

01

Discovery & Audit

We map every page, post, media file, redirect, and plugin. Nothing gets missed.

02

Architecture Plan

New stack designed for your content structure, SEO requirements, and performance targets.

03

Staged Migration

Content migrated in batches. Each batch verified before the next begins.

04

SEO Preservation

301 redirects, canonical tags, sitemap, robots.txt — every ranking signal carried over.

05

Launch & Monitor

DNS cutover with zero downtime. 30-day monitoring period included.

Before vs After

Gatsby vs Astro

Metric Gatsby Astro
Lighthouse Mobile 45-65 95-100
TTFB 1.2-2.5s <0.2s
Build Time (500 pages) 8-15 min 15-30s
Client JS Bundle 200-400 KB 0 KB (default)
Hosting Cost $20-50/mo $0-20/mo
Content Querying GraphQL (complex) Content Collections (simple)
FAQ

Common questions

Gatsby から Astro への移行にはどのくらい時間がかかりますか?

50~200 ページのコンテンツサイトの大部分は 3~4 週間で移行します。これには、コンテンツの移行、テンプレートの変換、SEO の保存、および包括的なテストが含まれます。カスタム Gatsby プラグインまたは複雑な動的ルーティングを備えた大規模なサイトは、5~6 週間が必要な場合があります。特定の Gatsby セットアップを監査した後、詳細なタイムラインを提供します。

移行中に Google ランキングを失いますか?

適切に実行されれば失いません。すべての URL に 301 リダイレクトを実装し、すべてのメタタグと構造化データを保存し、XML サイトマップを保持し、ローンチ後 30 日間 Search Console を監視します。SEO 保存プロセスは、移行全体を通じて既存のランキングとオーガニックトラフィックを保護するために特別に設計されています。

Astro に移行する際に React コンポーネントを保持できますか?

はい。Astro は Islands アーキテクチャを通じてネイティブに React コンポーネントをサポートします。インタラクティブな React コンポーネントは、Astro のクライアントディレクティブを使用してクライアント側でハイドレートできます。静的 React コンポーネントはビルド時にレンダリングされ、JavaScript はゼロで配信されます。React コンポーネントをネイティブ Astro コンポーネントに段階的に変換することもできます—すべてを一度に行う必要はありません。

Astro は Gatsby と比べてどのくらい高速ですか?

ビルド時間は通常 80~90% 削減されます。10 分かかる Gatsby サイトは、Astro では 60 秒未満で完了することがよくあります。ページロードパフォーマンスも劇的に向上します—Astro はデフォルトで JavaScript をゼロで配信するため、Lighthouse モバイルスコアは最適化トリックなしで 45~65 範囲から 95~100 に跳び上がります。

Astro の GraphQL データレイヤーを何が置き換えますか?

Astro のコンテンツコレクションはローカルコンテンツの GraphQL を置き換えます。TypeScript でスキーマを定義し、ファイルをコンテンツディレクトリに配置し、getCollection() または getEntry() で照会します。これは劇的にシンプルです—クエリフラグメント、スキーマ stitching、GraphiQL デバッグセッションはありません。

gatsby-image と画像最適化はどうなりますか?

Astro には astro:assets モジュールと Image コンポーネントを通じた組み込みの画像最適化があります。レスポンシブサイズ、遅延読み込み、WebP と AVIF への自動形式変換をネイティブに処理します。プラグインチェーンは不要です。移行中にすべての gatsby-image 使用法を Astro の Image コンポーネントに変換し、同等以上の出力品質を実現します。

Gatsby サイトがヘッドレス CMS を使用している場合、Astro は適切な選択肢ですか?

絶対に。Astro は、Contentful、Sanity、Storyblok、Strapi などのすべての主要なヘッドレス CMS と、標準 API 呼び出しまたは公式統合を使用してきれいに統合されます。Gatsby のソースプラグインと GraphQL レイヤーとは異なり、Astro はビルド時に CMS データを直接フェッチするため、デバッグと保守が簡単です。

Gatsby を使用することの欠点は何ですか?

Gatsby は、大規模なサイトの複雑なビルド時間により、開発プロセスを遅くする可能性があるため、困難な場合があります。GraphQL に大きく依存しており、その言語に精通していない開発者にとっては学習曲線が急であるかもしれません。Gatsby のプラグインエコシステムは広範ですが、依存関係の問題や互換性の課題につながることがあります。さらに、静的サイトジェネレータであるため、動的コンテンツは追加の構成が必要で、複雑さを加える可能性があり、頻繁なアップデートが必要なサイトには理想的ではないかもしれません。

React よりも Gatsby を使用する理由は何ですか?

Gatsby は、静的サイトの強力な静的サイト生成機能により、React よりも静的ウェブサイト構築に適していることが多いです。データ ソーシングや画像最適化などのタスクを簡略化する豊富なプラグインエコシステムが付属しており、開発時間を大幅に短縮できます。Gatsby のデフォルト設定には、コード分割と遅延読み込みなどのパフォーマンス最適化も含まれており、これは純粋な React セットアップでは手動で実施できます。さらに、Gatsby の GraphQL 統合により、柔軟なデータ照会が可能になり、コンテンツ豊富なサイトに適した選択肢になります。

Ready to migrate?

Free assessment. We'll audit your current site and give you a clear migration plan — no commitment.

Get your free assessment →
Get in touch

Let's build
something together.

Whether it's a migration, a new build, or an SEO challenge — the Social Animal team would love to hear from you.

Get in touch →