Astro と Quarto の技術スタックを徹底比較する

Astro(JS/TS の静的サイトフレームワーク)と Quarto(計算対応ドキュメントエンジン)を、技術スタックの観点から整理します。
blog
Published

August 2, 2026

Astro と Quarto の技術スタック比較

この CMS(issues-quarto-cms)は、元々 Astro で作られていました。ここでは 「技術スタック」という視点で Astro と Quarto を比較し、どういう場面でどちらを選ぶべきかを整理します。

両者の立ち位置がそもそも違う

項目 Astro Quarto
分類 Web フレームワーク(静的サイトジェネレーター) 文書エンジン(計算対応ドキュメントツール)
得意分野 Web サイト・アプリっぽい UI の構築 論文・レポート・教材・ブログの執筆
設計思想 「島(islands)アーキテクチャ」でページを最適化 「1原稿 → 多形式出力」の再現可能な執筆

つまり 「Web アプリを作るための道具」vs「文章と計算をまとめる道具」という違いが根底にあります。

言語・エコシステム

項目 Astro Quarto
メイン言語 JavaScript / TypeScript YAML + Markdown(本体)+ R / Python / Julia / JS(実行)
ランタイム Node.js 変換は Pandoc / Deno。実行は R / Python 等のカーネル
パッケージ管理 npm(世界最大の JS エコシステム) pip / CRAN / Julia レジストリ
コミュニティ フロントエンド寄り(React 等との連携が豊富) データサイエンス・学術寄り(Posit 製)

レンダリングモデル

項目 Astro Quarto
ページ生成 コンポーネント(.astro)をビルド時に HTML 化 .qmd(Markdown)をビルド時に HTML / PDF 等へ変換
動的 UI コンポーネントの「島」を部分ハイドレーション 基本は静的。Observable JS で一部インタラクティブ
スタイリング Tailwind / CSS / コンポーネント内 CSS テーマ(bootswatch)+ カスタム CSS
型安全なコンテンツ Content Collections(Zod で frontmatter 検証) なし(スクリプト側で検証)

コード実行(最大の差)

import matplotlib.pyplot as plt
labels = ["Astro", "Quarto"]
times = [1, 5]
plt.bar(labels, times)
plt.ylabel("コード実行コスト(相対)")
plt.show()
/opt/hostedtoolcache/Python/3.12.13/x64/lib/python3.12/site-packages/IPython/core/pylabtools.py:158: UserWarning: Glyph 12467 (\N{KATAKANA LETTER KO}) missing from font(s) DejaVu Sans.
  fig.canvas.print_figure(bytes_io, **kw)
/opt/hostedtoolcache/Python/3.12.13/x64/lib/python3.12/site-packages/IPython/core/pylabtools.py:158: UserWarning: Glyph 12540 (\N{KATAKANA-HIRAGANA PROLONGED SOUND MARK}) missing from font(s) DejaVu Sans.
  fig.canvas.print_figure(bytes_io, **kw)
/opt/hostedtoolcache/Python/3.12.13/x64/lib/python3.12/site-packages/IPython/core/pylabtools.py:158: UserWarning: Glyph 12489 (\N{KATAKANA LETTER DO}) missing from font(s) DejaVu Sans.
  fig.canvas.print_figure(bytes_io, **kw)
/opt/hostedtoolcache/Python/3.12.13/x64/lib/python3.12/site-packages/IPython/core/pylabtools.py:158: UserWarning: Glyph 23455 (\N{CJK UNIFIED IDEOGRAPH-5B9F}) missing from font(s) DejaVu Sans.
  fig.canvas.print_figure(bytes_io, **kw)
/opt/hostedtoolcache/Python/3.12.13/x64/lib/python3.12/site-packages/IPython/core/pylabtools.py:158: UserWarning: Glyph 34892 (\N{CJK UNIFIED IDEOGRAPH-884C}) missing from font(s) DejaVu Sans.
  fig.canvas.print_figure(bytes_io, **kw)
/opt/hostedtoolcache/Python/3.12.13/x64/lib/python3.12/site-packages/IPython/core/pylabtools.py:158: UserWarning: Glyph 12473 (\N{KATAKANA LETTER SU}) missing from font(s) DejaVu Sans.
  fig.canvas.print_figure(bytes_io, **kw)
/opt/hostedtoolcache/Python/3.12.13/x64/lib/python3.12/site-packages/IPython/core/pylabtools.py:158: UserWarning: Glyph 12488 (\N{KATAKANA LETTER TO}) missing from font(s) DejaVu Sans.
  fig.canvas.print_figure(bytes_io, **kw)
/opt/hostedtoolcache/Python/3.12.13/x64/lib/python3.12/site-packages/IPython/core/pylabtools.py:158: UserWarning: Glyph 65288 (\N{FULLWIDTH LEFT PARENTHESIS}) missing from font(s) DejaVu Sans.
  fig.canvas.print_figure(bytes_io, **kw)
/opt/hostedtoolcache/Python/3.12.13/x64/lib/python3.12/site-packages/IPython/core/pylabtools.py:158: UserWarning: Glyph 30456 (\N{CJK UNIFIED IDEOGRAPH-76F8}) missing from font(s) DejaVu Sans.
  fig.canvas.print_figure(bytes_io, **kw)
/opt/hostedtoolcache/Python/3.12.13/x64/lib/python3.12/site-packages/IPython/core/pylabtools.py:158: UserWarning: Glyph 23550 (\N{CJK UNIFIED IDEOGRAPH-5BFE}) missing from font(s) DejaVu Sans.
  fig.canvas.print_figure(bytes_io, **kw)
/opt/hostedtoolcache/Python/3.12.13/x64/lib/python3.12/site-packages/IPython/core/pylabtools.py:158: UserWarning: Glyph 65289 (\N{FULLWIDTH RIGHT PARENTHESIS}) missing from font(s) DejaVu Sans.
  fig.canvas.print_figure(bytes_io, **kw)
Figure 1: Quarto なら実行結果の図を埋め込める
項目 Astro Quarto
R / Python 実行 不可(MD のみ) 実行して図・表を自動埋め込み
結果の再現性 手動でスクショを貼る コードを直すと自動で再計算
データ分析記事 苦手 本領

出力形式

形式 Astro Quarto
HTML(Web / ブログ)
PDF / Word / PowerPoint 不可 ◎(--to pdf/docx/pptx
スライド / 書籍 別構成が必要 ◎(reveal.js / book)

デプロイ・運用

項目 Astro Quarto
出力 dist/ _site/(この CMS はここ)
ホスティング Pages / Netlify / Vercel / 任意 CDN Pages / 任意(静的 HTML)
検索・sitemap・RSS プラグインで実装 標準装備(設定のみ)

どちらを選ぶか(使い分け)

  • Web アプリ寄りのサイト(ログイン・フォーム・SPA 的な体験)→ Astro
  • データ分析・コード付き記事、論文、レポートQuarto
  • ブログだけで、とにかく軽く速く → どちらでも。Astro は型安全、Quarto は検索・多形式がお得
  • GitHub Issues/Discussions を CMS にしたい → 両対応できるが、コードを記事に載せたいなら Quarto が有利

まとめ

  • 技術スタックで見ると 「JS の Web フレームワーク」と「計算対応の文書エンジン」は住み分けが明確
  • この CMS は「執筆 + コード実行 + 多形式」を活かして Quarto 側を採用
  • どちらか一方が「正解」ではなく、作るものの性質で選ぶのが正しい