SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Astroで始める静的サイト作成入門

Webフレームワーク「Astro」とは? 開発初心者からベテランまで注目する理由

Astroの設計思想とメリット

 先に述べたように、現代ではさまざまなJavaScriptフレームワークが存在しますが、そこに比較的新しい「Astro」というフレームワークがあります。

 Astroの設計思想は、公式ドキュメントの「はじめに」から引用すると、

 コンテンツにフォーカスした高速なWebサイトを構築するためのオールインワンWebフレームワーク

と説明されています。

 これは、Webサイトの訪問者が重視する部分、つまり「コンテンツ」に焦点を当て、最初に必要なコンテンツだけを送信し、それ以外のJavaScriptやCSSなどは必要に応じて読み込むという考え方です。

 メリットとしては、必要最小限のコンテンツだけを最初に読み込むため、ページ単位のロード時間が短縮され、サーバーへの負担を軽減し、モバイルデバイスでの閲覧にも最適化される、ということが挙げられます。

 また、ReactなどのSPAフレームワークと比較すると、パフォーマンスの最適化と開発のアプローチという点でいくつかの違いがあります。

1.レンダリング方法

 Reactや一部のSPAフレームワークは、クライアントサイドでレンダリングを行うため、サーバーから送られてくるHTMLは最小限のもので、主要なコンテンツは含まれていません。代わりに、JavaScriptがブラウザ上で実行され、その結果としてページが動的に生成されます。

 一度ページがロードされると、新しいページへの移動は瞬時に行われますが、逆に言うと、初回のページロードが遅くなる可能性があります。

 Astroは、HTMLとCSSをサーバーサイドでレンダリングし、必要なJavaScriptだけをクライアントに送信します。これによってインタラクティブになるまでの時間(TTI:Time To Interactive)を大幅に短縮し、パフォーマンスを改善することができます。簡単に言うと、初回ロードから爆速になる、ということですね。

2.JavaScriptへの依存度

 Reactや一部のSPAフレームワークは、Webページの変更箇所のみを書き換えるという機能性を実現するため、JavaScriptに大きく依存しています。それによって初回読み込み以降、高速でスムーズな画面遷移を体感できますが、一般的に開発難易度が上昇する傾向があります。

 Astroは、デフォルトでゼロJSを謳い、必要な場所にだけJavaScriptを適用し、それ以外の部分は静的なHTMLとCSSで構成することができます。これにより、それほど意識せずにJavaScriptを削減しつつ、パフォーマンスを向上させることができます。

3.フレームワークの互換性

 Astroは、基本的なWebサイトが構築できるオールインワンなフレームワークですが、React、Vueなどの異なるフレームワークや、さまざまなライブラリと互換性があり、必要に応じてインテグレーションとして拡張することができます。

 これにより、基本機能をシンプルに使いたい初級者から、開発経験を活かしたい上級者まで、幅広い開発環境を構築することができます。

 つまるところAstroは、ReactなどのSPAフレームワークを完全に置き換えるものではなく、画面遷移速度よりも初回読み込み速度を優先するようなトレードオフの関係を理解したうえで、自分のプログラミング能力に合わせて使うことができる、すべてのWeb制作者にやさしいフレームワークであると言えます。

Astroを用いた開発体験

 結論から言うと、SPAフレームワークや開発言語に関して、ほぼ基礎的な知識しか持たない筆者が、Astroを使って個人のポートフォリオブログを静的サイトとしてリニューアルした結果、PageSpeed Insightsでモバイル、デスクトップともにパフォーマンス100点を叩き出すことができました(パフォーマンス数値は変動します)。

 もちろんこれは一例であり、すべてのWebサイトにAstroが万能に使えるというわけではありませんが、少なくともポートフォリオのような小規模コンテンツにおいては、充分なパフォーマンスの静的サイトを短時間で構築することができます。

 逆に、このような小規模のコンテンツにReactなどのSPAフレームワークを導入すると、オーバースペックな複雑さを内包し、関連パッケージの多さはロード時間を増加させたり、SEOの問題を抱えたりすることもあります。

 筆者がAstroを用いた開発体験の中で、特に優れていると感じたのは、このようなフレームワークとしての「ちょうどよさ」です。

 Astroは、すべての開発者が簡単に使えるように設計されており、.astroという拡張子を持つ独自のUI言語を持っています。astro言語はHTMLのスーパーセットになっており、HTMLとして再利用可能な小さな断片(スニペット)を記述すると、そのままAstroで有効なコンポーネントとして動作します。

 つまり、HTMLとほぼ同じ感覚でコードを書き始めることができます。

 かと言って、Astroが初心者向けの簡易的なフレームワークというわけではなく、すでに既存のJavaScriptフレームワークに慣れているエンジニアの場合は、ReactにおけるJSX構文のようにHTMLとJavaScriptを混在して記述したり、propsの受け渡しや、他フレームワークのコンポーネントをインポートして使用することもできます。

 このようにAstroは、未知のフレームワークとして最初に触れる過程において、開発初心者にもベテランにも、実に「ちょうどよい」学習難易度とボリューム感を持っていると言えます。

 次回は、実際のコードを参照しながら、Astroのインストール方法やコンポーネントの作り方を説明していきたいと思います。

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
Astroで始める静的サイト作成入門連載記事一覧

もっと読む

この記事の著者

池原健治(イケハラ ケンジ)

 ゲーム会社のUXデザイナー。デザイン、プロトタイピング、コーディングなどを担当する他、SNSでの情報発信や、登壇活動など、幅広く活動している。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/17883 2023/07/03 11:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー