
2026/07/08 3:30
Astro 7.0
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
Astro 7 は、構造化の大幅な改修を通じて、例外抜けた速度、安定性、そして高度な開発者機能に重点を置いた主要なリリースです。バンドリング、コンパイル、Markdown 処理における Go ロジックをネイティブ Rust コードに置き換えたことで、ビルド時間は 15〜61% 高速化しており、一部のサイトでは最大 2 倍の改善が見られます。新しいアーキテクチャには、queue ベースのレンダリング(現在、デフォルトかつ安定版)や、esbuild および Rollup の代わりに Rust ベースのバンドラーである Rolldown を採用した Vite 8 サポートが含まれており、既存の設定との互換性層が実装されています。
.astros コンパイラは
oxc パーサーと Lightning CSS を使用して Rust で再書式化されており、厳格な JSX 処理の導入およびランタイムエラーを防ぐための無音 HTML 補正の廃止を除き、後方互換性が維持されています。Markdown および MDX 処理は、統合パイプラインよりもデフォルトで Erika による Rust プロセッサである Sätteri を採用し、コンテンツ量が多いサイトにおけるビルド時間の大幅な短縮を実現しています。
高度なユーザーは、Cloudflare Workers、Deno、Bun、Hono と互換性のある標準
fetch ハンドラーパターンを利活用して src/fetch.ts 経由でリクエストパイプラインに対して前例のない制御権限を獲得できます。ステータス安定版のルートキャッシングは、ルート上のディレクティブまたは routeRules を介したプラットフォーム非依存 API によって導入され、ライブコンテンツコレクションとの無効化連携が自動的に統合されます。実験的な CDN キャッチャープロバイダー(Netlify、Vercel、Cloudflare)は、キャッシュディレクティブをエッジネットワークにプッシュし、より高速なレスポンス時間を実現します。
AI 関連の機能強化には、開発サーバーの自動背景検知(
astro dev --background)と、コーディングエージェントが検出された際に有効化される構造化 JSON ログ記録が含まれます。アップグレードパスは、自動化された CLI(npx @astrojs/upgrade)または npm install astro@latest による手動インストールの両方をサポートします。最終的に、Astro 7 は Rust に動力を与えられたより高速で堅牢な基盤を確立し、現代ウェブ開発の効率性においてフレームワークをリードする地位へ位置づけます。本文
Astro 7 リリースのお知らせ:全面的な「スピード」強化と AI 機能拡充
Astro 7 がリリースされました。今回の更新は**「スピード」**を最優先テーマとしており、ビルド速度の劇的な向上、高度なルータリング機能、および AI 開発環境との親和性向上が特徴です。
🔍 リリースハイライト
- Vite 8へのアップデート(Rolldown バンドラ―採用)
- パフォーマンス向上: Rust コンパイラ化によるビルド速度の劇的な改善
- 高度なルーティング:
を通じた完全なリクエストパイプライン制御src/fetch.ts - ルートキャッシング: 安定版への昇格と実験的 CDN キャッシュプロバイダーの実装
- AI 機能拡張: バックグラウンド開発サーバー、構造化 JSON ログ出力
- コミュニティ: コントリビューターへの感謝
🚀 アップグレード手順
既存プロジェクトを Astro 7 に移行するには、以下のコマンドを実行してください。
推奨方法(自動化ツール)
npx @astrojs/upgrade
手動アップグレード
npm install astro@latest
新規プロジェクトについては、単に最新版を使用すれば自動的に Astro 7 が採用されます。詳細な移行手順は アップグレードガイド を参照ください。
⚡ パフォーマンスと Vite 8
Astro 7 はこれまでのバージョン中最も高速です。特に大規模なサイト構築においては、ビルド時間の大幅な短縮が期待できます。
Rust コンパイラによる加速
.astro コンポーネントのコンパイル処理を Go から Rust に書き換えました。
- 後方互換性の維持: 例外を除いて既存のコードとの対応を保証します。
HTML の是正処理の停止: マークアップを修正せず、ユーザー意図を尊重(従来は要素順序変更などを行っていました)。JSX スタイルの厳密化: 未閉タグや不完全な属性は無視されず、エラーとして報告します。空白文字処理の変更: JSX の慣習に従い、要素間の改行を可視スペースとして保持しないようにしました。
Markdown および MDX の Rust 化
Markdown パイプラインを unified (JavaScript) から Sätteri (Rust) に置き換えました。
- ビルド時間の劇的な短縮( Astro ドキュメント例:1 分以上短縮)。
- 多くの Markdown プラグイン機能(GFM、スマート句読点、数式等)をネイティブに内蔵。
| 機能 | 旧方式 (unified) | 新方式 (Sätteri) |
|---|---|---|
| GFM (テーブル、フッターノート等) | プラグイン別途必要 | 内蔵(デフォルト有効) |
| スマート句読点 | プラグイン別途必要 | 内蔵 |
| 見出し ID | プラグイン別途必要 | 内蔵 |
| 数式 / ファントマター等 | プラグイン別途必要 | 内蔵 |
Sätteri のカスタマイズ
機能追加には
features オプションを使用できます。また、既存の unified ベースのパイプラインも継続して利用可能です。
// 例:Sätteri の機能設定 import { defineConfig } from 'astro/config'; import { satteri } from '@astrojs/markdown-satteri'; export default defineConfig({ markdown: { processor: satteri({ features: { directive: true, // コンテナディレクティブ有効 math: true, // 数式有効 }, }), }, });
🎯 高度なルーティングとキャッシング
Vite 8 と Rolldown
Astro 7 は Vite 8 を採用し、バンドラとして Rolldown(Rust ベース)を統合しました。
- Rollup の API をそのままサポートしつつ、ベンチマークでは 10〜30 倍の高速化を実現。
- 互換性層により、既存設定が自動的に移行されます。
ルートキャッシング (Route Caching)
オンデマンドレスポンスに対するキャッシング機能が安定版となり、プラットフォーム独立の API が提供されました。
キャッシュプロバイダーの設定
import { defineConfig, memoryCache } from 'astro/config'; export default defineConfig({ cache: { provider: memoryCache() }, // メモリベースのプロバイダー routeRules: { '/blog/[...path]': { maxAge: 300, swr: 60 }, }, });
使用例
--- // ページ内の明示的な設定 Astro.cache.set({ maxAge: 120, // 2 分間キャッシュ tags: ['products'], // タグによる無効化 }); ---
CDN キャッシュプロバイダー(実験的)
Netlify、Vercel、Cloudflare の環境では、ホストの CDN を利用した高速なキャッシングが可能です。
import { defineConfig } from 'astro/config'; import { cacheNetlify } from '@astrojs/netlify/cache'; export default defineConfig({ adapter: netlify(), cache: { provider: cacheNetlify() }, // CDN を活用 });
🤖 AI 開発環境への対応
バックグラウンド開発サーバー
AI エージェントによる開発フローを考慮し、
という新コマンドが追加されました。astro dev --background
- AI エージェントは開発サーバーを背景プロセスとして扱い、フリーズや重複起動を防ぐことができます。
- シェル側でのポーリング不要で、ロックファイルによる管理強化。
# 例:バックグラウンド起動 $ astro dev --background Dev server running at http://localhost:4321 (pid 12345) Status: astro dev status
構造化された JSON ログ出力
AI エージェントやログ集約システム(Kibana, Loki など)との連携を強化するため、JSON フォーマットが自動的に有効になります。
- 色付き出力などを自動で除いた、機械可読なフォーマット。
- カスタムハンドラ (
) を使用し、人間用とツール用のログを両立可能。compose
import { defineConfig, logHandlers } from 'astro/config'; export default defineConfig({ logger: logHandlers.compose( logHandlers.console(), // 人間向け表示維持 logHandlers.json() // JSON フォーマット追加 ) });
💡 コミュニティへの感謝
Astro 7 を支えるすべてのコアチームメンバーおよびコントリビューターの皆様に深く感謝申し上げます。
コアチーム: Alexander Niebuhr, Armand Philippot, Chris Swithinbank, Emanuele Stoppa, Erika, Florian Lefebvre, Fred Schott, HiDeoo, Luiz Ferraz, Matt Kane, Matthew Phillips, Reuben Tier, Sarah Rainsberger, Yan Thomas。
また、コード、ドキュメント、レビュー、テストに多大な貢献を果たされた以下の皆様にも心からの感謝を申し上げます: 0x K., 0xRozier, AceCodePt, Adam Chalemian, Adam Matthiesen, Adam McKee, Adam Page, Agus Setiawan, Ahmad Yasser, Alejandro Romano, Alex, Alex Dombroski, Alex Launi, Alexander Flodin, Alexis Aguilar, Aly Cerruti, Amar Reddy, Andreas Deininger, Andrei Alba, Antony Faris, Ariel K, Ash Hitchcock, atsbob, B Sai Thrishul, Barry, Ben Limmer, Bernd Strehl, BitToby, btea, Burra Karthikeya, buschtrisha77, Calvin Liang, Cameron Pak, Cameron Smith, Carlos Lázaro Costa, chaegumi, Chan, Chase McCoy, ChrisLaRocque, Ciaran Moran, Corbin Crutchley, CyberFlame, Daniel Bodky, Daniel Lo Nigro, Daniel Zamyatin, Daniil Sivak, Dario Piotrowicz, dataCenter430, Dawid Gaweł, Desel72, dfedoryshchev, Dom Christie, done, Dor Alagem, Dream, Ed Melly, Ed Melly, Edgar, Ellie, Em Poulter, Eric Grill, Eric Mika, Eryk Baran, Eveeifyeve, fabon, farshad, Felipe Arce, Felix Schneider, Felmon, fkatsuhiro, G Taki@MAX, Giray, Gokhan Kurt, Great Journey, Greg L. Turnquist, Harsh Agarwal, Haz, helio-cf, Henri Fournier, Henri Koskenranta, Henry, Igor Koop, Jack Lukic, Jack Moorhouse, Jack Shelton, jahndan, James Basoo, James Garbutt, James Murty, James Opstad, Jason P. Cochrane, Jett Way, Jimmy, joel hansson, John Mortlock, Johnny Noble, Jon Ege Ronnenberg, Joost de Valk, Jordan Demaison, Josh Soref, JPette1783, Julian Wolf, Julien Cayzac, Junseong Park, Justin Francos, Kai, kato takeshi, Kedar Vartak, Kendell, Kevin Brown, knj, Koji Wakamiya, Konrad Szajna, Kristijan, KTrain, Kumar Gautam, Kyle McLean, Lee Freeman, Leif Marcus, Leonie, Lieke, liruifengv, LongYC, Louis Escher, Luke Deen Taylor, MA2153, Mark Ignacio, Martin DONADIEU, Martin Heidegger, Martin Trapp, Matheus Baroni, Mathieu Mafille, Matthew Justice, Matthias, Matthieu Tremblay, Mavik, Max Malkin, maxim, meyer, Michael Giraldo, Mike Pagé, Milo, Minh Lê, Misrilal, MkDev11, Mochammad Farros Fatchur Roji, moktamd, Naren, Natan Sągol, Nicolò Paternoster, Ntale Swamadu, oab24413gmai, ocavue, Oliver Speir, oliverlynch, Ossaid, Patrick Linnane, Peter Philipp, Phaneendra, Pierre G., pierreeurope, Quetzal Rivera, R A, Raanelom, Rafael Yasuhide Sudo, Rahul Dogra, Rayan Salhab, Rodrigo Santos, Rohan Santhosh Kumar, Roman, Roman Kholiavko, Sam Richard, sanchezmaldonadojesusadrian14-coder, Sanjaiyan Parthipan, sanjibani, Schahin, Sebastian Beltran, Sebastien Barre, Shinya Fujino, Stefan Machhammer, Stel Clementine, Tay, Tee Ming, thelazylama, Timo Behrmann, tmimmanuel, Tobias Breit, Tom Callahan, Tomasz Cz-Sokołow, travisBREAKS, Tristan Bessoussa, Umut Keltek, Utpal Sen, Vagno, Varun Chawla, Victor Berchet, Vladyslav Shevchenko, Yagiz Nizipli, yy, 翠。
📢 お問い合わせ
Astro 7 をご利用中、何かご意見や問題がございましたら、以下からお気軽にお問い合わせください。
- Discord
- GitHub Issues
- Bluesky / Twitter / Mastodon