概要
- Astro 7 がリリースされ、最大の特徴は ビルド速度の大幅向上
- Rust製コンパイラ や新しいMarkdown/MDXパイプライン導入による高速化
- Vite 8 & Rolldown バンドラーとの連携で最大61%のビルド短縮
- 高度なルーティング やCDNキャッシュ対応、AI開発支援機能も追加
- 既存プロジェクトは @astrojs/upgrade CLIで簡単アップグレード可能
Astro 7の新機能とパフォーマンス改善
- .astroコンパイラ をRustで再実装、従来よりも高速化
- Markdown/MDX処理 をRustベースのパイプライン(Sätteri)へ移行、特に大規模サイトでビルド時間大幅短縮
- レンダリングエンジン をキュー方式に刷新、従来の再帰型より約2.4倍速い
- Vite 8 へアップグレードし、 Rust製Rolldownバンドラー を標準採用
- RolldownはRollup比10~30倍高速、既存Vite/Rollupプラグインも多くがそのまま動作
- ビルドベンチマーク例 (MacBook Pro Apple M4 Pro, 48GB RAM):
- https://docs.astro.build (約6,313ページ):114.54秒→73.53秒
- https://astro.build(約308ページ):62.70秒→24.24秒
- https://developers.cloudflare.com(8,431ページ):386.89秒→261.94秒
Rustコンパイラの特徴
- Go製からRust製へ完全書き換え、WASMフォールバック対応
- HTML自動補正を廃止、マークアップはそのまま扱う
- JSXスタイルの厳格性 :未閉じタグや不正な属性はエラーとして検出
- JSXの空白処理 を採用、React等と同じ挙動
- oxc (パーサ)、 Lightning CSS (CSSスコープ)採用
- .astroのコンパイル自体は全体のボトルネックではないが、全体の高速化に寄与
Markdown & MDXのRust化(Sätteri)
- Sätteri (Rust製パイプライン)を標準化、Markdown-heavyサイトで劇的なビルド短縮
- pulldown-cmark (CommonMarkパース)、 Oxc (MDX式パース)採用
- 多くのMarkdown機能を 標準搭載 (GFM, スマート記号, 見出しID, 数学, Frontmatter等)
- プラグインAPI は高効率、必要なノード型のみ処理
- 従来のremark/rehypeプラグインも@astrojs/markdown-remark経由で利用可能
キュー型レンダリングエンジン
- 再帰型からキュー型へ変更、単一ループでノードを高速処理
- メモリ効率向上、大規模サイトでも安定
- 設定例:
- experimental.queuedRendering.enabled: true
- poolingやcontentCacheでさらなる最適化可能
高度なルーティング(Advanced Routing)
- src/fetch.ts 追加で、Astroのリクエストパイプラインを完全制御可能
- Cloudflare Workers/Deno/Bun ライクなfetchハンドラー導入
- 例: /api配下のみバックエンドAPIへ転送、その他はAstroページへ
- Hono ミドルウェアとの互換性、認証やロギング等も柔軟に実装可能
- Astro機能を ミドルウェア単位で合成、独自のリクエスト処理を構築
ルートキャッシュとCDN対応
- ルートキャッシュ を安定化、ビルド不要な場合はキャッシュ利用で超高速化
- Netlify/Vercel/Cloudflare 向けのCDNキャッシュプロバイダを実験的に追加
AI開発支援機能
- AIエージェントの自動検出、開発サーバーのバックグラウンド実行
- 構造化JSONログ 出力で、機械可読なフィードバック対応
アップグレード方法
- 既存プロジェクトは npx @astrojs/upgrade で自動アップグレード推奨
- 手動の場合は npm install astro@latest
- 新規プロジェクトは npm create astro@latest
- 詳細な移行手順は アップグレードガイド 参照
まとめ
- Astro 7 は全体的に ビルド・開発体験の高速化 と 柔軟性向上 が最大の特徴
- Rust化 によるパフォーマンスブースト、 新しいレンダリング戦略、 高度なルーティング、 AI支援 など、現代的なサイト構築に最適なアップデート
- 大規模・多機能サイト や AI活用開発 にも強く推奨されるバージョン