Studioからの移管先として名前が挙がるAstroとは、どんなフレームワークですか?

結論

Astroは、ブログや会社紹介のように読ませる内容が中心のサイトを作るためのフレームワークです。HTMLをサーバー側で組み立て、ブラウザで動くJavaScriptは必要な部分だけに絞るので、ページ全体が重くなりにくい作りです。

移行先の比較更新日

Astroはなぜ Studioからの移管先に選ばれるのですか?

Studioから離れたいけれど、WordPressのようにプラグインやサーバーの手入れまで抱えるのは避けたい。そう考えたときに候補に上がりやすいのがAstroです。Astroは、ブログや会社紹介、マーケティングサイトのように、読ませる内容が中心のサイトを作るためのフレームワークとして設計されています。Studioで作ったコーポレートサイトや採用ページは、この使い方によく重なりますね。

HTMLはサーバー側で組み立て、ブラウザで動くJavaScriptは必要な部分だけに絞ります。メニューの開閉やスライダーなど、動きが要る所にだけスクリプトを足すので、ページ全体が重くなりにくいでしょう。

もうひとつの理由は、コンテンツの管理方法を自分たちで選べる点です。AstroはMarkdownファイルの整理や内容の検証を行う機能を備えており、記事データを手元のファイルとして管理する運用が組み立てられます。

とはいえ、Studioはデザインやページ情報、ソースコード、Studio CMSのデータを書き出す機能を提供していません。フォーム回答のCSV出力は用意されているものの、ページの外観や記事本文は移行先で改めて組み立て直す作業になります。そうであれば、次は自分で仕組みを選べる形にしたい、という理由でAstroが残ります。AstroはMITライセンスのオープンソースで(Astroの公式リポジトリ)、公開先も複数のサービスから選べます。

AstroのSSRと静的出力はどう違いますか?

ビルド時にすべてのHTMLを作成しておくのが静的出力で、利用者がアクセスした瞬間にサーバーでページを組み立てるのがSSR(サーバーサイドレンダリング)です。Astroの既定であるoutput: 'static'では、ビルドの時点で全ページのHTMLを作っておき、訪問者にはできあがったファイルを返します。一方、output: 'server'にすると各ページの初期値がSSRに切り替わります。

設定をどちらか一方に固定する必要はありません。静的出力の構成を選んだ場合でも、配信先の実行環境に合わせたアダプターを導入し、対象のページファイル内でexport const prerender = falseを宣言すれば、特定のページだけをSSRで動かせます。逆に全体をserver設定にした場合でも、prerender = trueを指定したページは事前生成が可能です。

また、純粋な静的サイトであれば生成済みのファイルをそのまま静的サーバーに配置するだけで済みますが、SSRを動かすにはCloudflare WorkersやNetlify Functionsといったサーバー処理の実行環境と連携するアダプターが欠かせません。

SSRを利用すると、ログインした利用者ごとの画面切り替えや、刻々と変わる最新情報の表示に対応でき、コンテンツ更新のたびにサイト全体を再ビルドする手間を省けます。ただし、外部データの取得待ちが発生するとページの描画が止まる場面もあるため、表示の軽快さや更新の速さは配信環境のキャッシュ設定にも左右されますね。

Astroは、大半のページで要求時の生成が必要だとわかるまではstaticモードから始めるよう勧めています。

AstroとNext.jsは何が違いますか?

Studioからの移行を検討するとき、AstroとNext.jsのどちらを選ぶべきでしょうか。どちらを選ぶかは、どんなサイトを作るかで決まります。Astroはブログ、マーケティングサイト、ランディングページ、ドキュメントなど、読み物に重きを置いたWebサイトを素早く届ける目的で作られました。初期状態ではブラウザー側へJavaScriptを送信しない設計を採用しており、ボタンの開閉や検索窓といった操作が必要な部品にだけ、部分的にスクリプトを読み込ませる仕組みになっています。JavaScriptが使えないという意味ではありません。

Next.jsはReactを前提にしたフレームワークです。App Routerでは、ページとレイアウトは既定でServer Componentsとしてサーバー側で描画され、クリックや入力に反応させたい部分にClient Componentsを使います。全画面をブラウザだけで描く仕組みではなく、サーバー側の描画とブラウザ側の操作を組み合わせる作りです。

複数の画面部品で複雑に状態を共有する会員制の管理画面や、リアルタイムの共同編集機能、細かい権限チェックが絡むWebサービスを開発するなら、Next.jsのような仕組みが力を発揮するでしょう。会員ページが1つあるだけでNext.jsが必須になるわけではありません。画面の中でどんな操作が必要で、部品同士がどれだけ状態を共有するのかを見て決めます。

なお、ホスティング基盤として知られるVercelはNext.jsの開発元ですが、Astroのホスティングにも対応しています。配信サーバーの選択肢だけでフレームワークを決めるのではなく、サイトにどのような操作機能を持たせたいかを見極めて選ぶのが自然です。

AstroのtrailingSlash設定は移行時にどうすればいいですか?

たとえばStudioで/aboutとして公開していたページを、移行後に/about/で返すと、検索エンジンからは別のURLに見えます。旧URLは、Studioの/sitemap.xmlで一覧を確かめられます。サイトマップの生成をオンにして公開している場合に有効で、モーダルとnoindexを設定したページは含まれません(Studioのサイトマップの案内)。

Astroでは、設定ファイルのtrailingSlashという項目で末尾スラッシュの扱いを指定できます。公式の仕様では初期値が'ignore'となっており、スラッシュの有無に関係なく一致します。明示的に末尾スラッシュを揃えたいときは、常に付ける'always'か、常に省く'never'を指定。この設定は開発環境やオンデマンド描画のページで機能し、本番のオンデマンド描画では設定と合わないURLへのアクセスが正規の形へ転送されます。

事前生成したページの末尾スラッシュは、公開先のサービスが処理します。たとえばCloudflare Pagesでは、出力ファイルが/contact.htmlなら「/contact」へ転送され、/about/index.htmlという配置なら「/about/」へ転送される仕様です(Cloudflare Pagesの配信の仕様)。Astroの設定どおりにならない場合がある、ということですね。

そこで、build.formatは既定が'directory'でページごとにindex.htmlを作り、'file'はページ名.htmlを作ります。設定リファレンスでは、directoryならalways、fileならneverの組み合わせが開発時のずれを防ぐとされています。旧URLに末尾スラッシュがなければfileとneverです。

canonicalとサイトマップにも、同じ形のURLを書きます。公開後に両方の形でアクセスし、どちらへ転送されるかまで確かめてください。

AstroとTailwind CSSでStudioのレイアウトを組むにはどうしますか?

マウス操作で直感的に余白や配置を決めるStudioの画面編集に対し、AstroとTailwind CSSの組み合わせでは、再利用しやすいコードとして画面の枠組みを組み立てていきます。StudioはサイトのHTMLを外部に書き出せないため、公開中のページを横に開いて、見比べながら組み直す作業になります。

最初に作るのは、全ページで使う部品です。共通のレイアウトファイルでヘッダー、ナビゲーション、フッターといった共通要素をまとめ、各ページ独自の内容を流し込むスロット(slot)を定義。ページごとに同じHTMLを書く必要がなくなり、コードの見通しが良くなりますね。

次に、Tailwind CSS v4では、スタイルシート内の@themeディレクティブを使って、ブランドカラー、フォントサイズ、余白のルールを変数として定義できます。Studioで使っていたブランドカラーや見出しのサイズを先にここへ書き写しておけば、ページごとに同じ数値を打ち直さずに済みます。v3の設定ファイルを使う書き方とは手順が違うので、参考記事のバージョンには注意してください。

Studio CMSで作っていた記事ページは、動的ルートで置き換えます。microCMSとAstroの実装例では、記事詳細のページでgetStaticPathsを使い、記事IDをparams、記事データをpropsとして返しています。ビルドのたびに、記事の数だけ詳細ページが生成される形です。

こんな聞き方も

  • Astroとはどんなフレームワークですか?
  • astro とは
  • AstroのSSRと静的出力はどう違いますか?
  • astro ssr 静的 違い
  • AstroとNext.jsは何が違いますか?
  • astro next.js 違い
  • ポートフォリオをAstroで静的サイトにするのはどうですか?
  • ポートフォリオ 静的サイト astro
  • AstroとTailwind CSSでStudioのレイアウトを組むにはどうしますか?
  • astro tailwind studio レイアウト
  • AstroのtrailingSlash設定は移行時にどうすればいいですか?
  • astro trailing slash 設定

あわせて知りたい(関連する疑問)

QポートフォリオをAstroで静的サイトにするのはどうですか?

デザイナーやクリエイターの作品を掲載するポートフォリオサイトは、Astroで静的化するのに向いているのでしょうか。作品の魅力を伝える静的なポートフォリオと、Astroの相性は良好です。ブログやLPと並んでポートフォリオもAstroに向くサイトとして挙げられていて、サイト全体を静的に生成できます。

作品データの置き方には、たとえば次の2つがあります。ひとつは、MarkdownやMDXのファイルで作品ごとに文章を書いていく方法です。作品ごとの説明文や制作背景をMarkdownやMDXのファイルとして手元で保存しておけば、Gitで履歴を管理しながら作品を追加できます。もうひとつはmicroCMSのようなCMSにデータを置き、一覧ページと詳細ページを作る方法です。microCMSの連携例はブログなので、作品名や制作年、画像といった項目は自分で用意することになります。

公開の手順もシンプルです。手元の端末で「npm run build」を実行すると、「dist」というフォルダに公開用の静的ファイルが一式生成されます。Cloudflare PagesとGitを連携しておけば、新しいコミットをpushするたびに再ビルドと公開が走ります。作品を1つ追加してpushすれば、そのまま公開まで進みますね。CMSで作品を更新する場合は、更新のあとにビルドを走らせる方法を別に決めておく必要があります。

ただし、StudioにはサイトのHTMLを書き出す機能がないため、今の画面をそのまま持ってくることはできません。作品画像や紹介文の元データを手元にそろえてから始めると、作業が止まりません。

QAstroは無料で使えますか?

Astroというフレームワーク自体は、利用料のかからないオープンソースソフトウェアとして配布されています。Studioのようにツールの月額利用プランを契約し続けなくても、手元のパソコンでサイトを構築する段階で費用を請求される心配はありません。

お金が出ていく可能性があるのは、サイトを置く公開先のほうです。公開サービスには無料プランと有料プランがあり、たとえばRenderでは無料でAstroのサイトを公開でき、必要になったら有料のプランに上げられます。Netlifyには無料プランがあり、上限は300クレジットです(Netlifyの料金ページ)。

この300クレジットは配信サービス側の上限で、Astroの機能の制限ではありません。

公開作業を行う際は、ソースコードを管理するGitHubなどのリポジトリを配信サービスに連携させ、ビルドコマンドと出力先フォルダを設定する手順を踏みます。自分で組める人なら公開先の費用だけで運用できますが、Studioにはデザインやデータを書き出す機能が無いため、移行先で作り直す作業が要ります。

QAstroのサイトはエンジニアでないと更新できませんか?

ソースコードを直接書き換える更新方法と、専用の管理画面から文字を入力する更新方法の二つがあり、後者の仕組みを整えればエンジニアでなくても日常の更新作業が行えます。分けて考えたいのは、記事の更新とデザインの変更です。Studioでも、この2つは別の画面で行っています。記事の入稿やデータの管理はCMSダッシュボード、ページの作成やデザインはデザインエディタです。AstroにCMSを接続した場合も同様で、更新したら自動でビルドする仕組みを用意しておけば、日々の記事は管理画面からの入力で公開まで進められますが、新しいページ枠組みの追加やデザインの微調整を行う場面では、やはりコードを扱える担当者の協力が必要です。

Astroでは、ヘッドレスCMSを組み合わせる構成がよく使われます。CMSがコンテンツを管理し、Astroがそのデータを取り出してページに表示する役割分担です。microCMSと連携すれば、担当者は管理画面から記事を書けます。Astroを土台にした無料のCMS「EmDash 1.0」も公開されていて、開発者がAstroで作り、編集者は管理画面で内容を扱う形をとれますね。

ただ、最初にCMSとAstroをつなぐ設定や実装は、作れる人が担当します。いったんつないでしまえば、日々の記事更新に開発者が毎回入る必要はありません。

CMSを使わずにMarkdownファイルで記事を管理する構成では、ファイルを直接書いて更新します。CMSを入れれば、Markdownの代わりにリッチテキストのエディタで書けます。管理画面から直せるのは、CMSにつないだ部分までです。

QStudioのアニメーションも再現できますか?

Studioのデザインエディタで設定していたホバー時の動きやスクロール時のアニメーションは、Astroへ移管しても再現できるのでしょうか。ホバーやフェードのような動きなら、CSSでかなり近づけられます。Studioのアニメーション設定は、変化にかかる「時間」、動き出すまでの「遅延」、加速や減速を指定する「イージング」の組み合わせで成り立っています。これはCSSのtransitionプロパティが持つ設定項目とそのまま一致するため、ボタンにマウスを乗せたときの色変化や画像の拡大といったホバー演出は、CSSを書くだけで再現可能です。

見落としやすいのが、元に戻るときの動きです。Studioでは、通常時のスタイルに設定したアニメーションが、条件が外れて通常の状態に戻る動きに使われます。CSSでスタイルを組む際も、ホバー側だけでなく元のクラスにも適切にtransitionを指定しておけば、マウスを離したときの滑らかな戻り方を自然に再現できますね。

画面を下にスクロールしたときに要素がふわっと浮き出るような出現アニメーションについては、ブラウザー標準のIntersection Observer APIやスクリプトを組み合わせて実装します。Astroのページにはブラウザで動くスクリプトを追加でき、アニメーションの再生にも使えます。

ただし、自動で移せる機能はありません。Studioと同じ位置で動き出すかは保証されないので、公開中のStudioのページと並べて、動き出す位置や速さを調整しながら合わせていくことになります。

出典

この内容をChatGPTで相談

無料診断