最新Webフロントエンドフレームワーク「Astro」優位性とは

現在のWebのフロントエンド開発での制作対象は、大きく「Webアプリケーション」「Webサイト」の2つに分類できます。Webアプリケーションは、ユーザーの入力に応じて情報を処理し、結果を表示するもので、SNSやECサイトが代表例です。一方、Webサイトは、ブログやニュースのように、あらかじめ用意された情報を静的に表示するのが主目的です。ここで紹介する「Astro」は、後者のWebサイト制作で真価を発揮するフレームワークです。

コンポーネントベース開発による効率アップ

従来のWebサイト制作では、ページごとにHTMLファイルを作成し、それぞれに対応するCSSやJavaScriptを記述するのが一般的でした。しかしこの方法では、複数ページで共通して使われるメニューやフッターといった要素を、すべてのHTMLファイルに用意する必要があります。そのため、制作の途中で変更が発生した場合、修正漏れといった人為的なミス(バグ)を誘発する原因になっていました。

この問題を解決するのが「コンポーネントベース開発」です。これは、UIを構成する要素を、再利用可能な独立した「コンポーネント」という部品として管理する手法です。例えば、⁠画像とキャプションのセット」を1つのコンポーネントとして定義しておけば、あとはその部品を必要な場所に配置し、画像やテキストといった差分データを与えるだけで、同じ構造の表示をいくつでも生成できます。

この手法により、修正作業が簡略化されて開発効率が向上するだけでなく、コードの保守性も高まります。このコンポーネント(Web Components)という仕組みは、Astroだけでなく、VueやReactといったWebアプリケーション開発用のフレームワークでも広く採用されている、Web標準の技術です。

静的サイトジェネレータ(SSG)による圧倒的な高速化

コンポーネントベース開発は非常に強力ですが、ページ表示時にブラウザ上でJavaScriptを実行してコンポーネントを組み上げるため、レンダリングに時間がかかるという問題があります。ユーザーの個別の操作に対する丁寧な対応が求められるWebアプリケーションではある程度許されますが、情報を素早く届けることが主目的であるWebサイトにとっては大問題です。

Astroは、この問題を「静的サイトジェネレータ(Static Site Generators、略してSSG⁠⁠」という仕組みで解決します。SSGとは、開発者がコーディングを終えた後、Webサーバーにアップロードする前に、バラバラのコンポーネントをあらかじめ結合して、完成形の静的なHTMLファイルを生成しておく方式です。ユーザーがサイトにアクセスしたとき、ブラウザはすでに完成しているHTMLファイルを読み込んで表示するだけで済むため、JavaScriptによる動的ページ生成処理が不要となり、極めて高速な表示が可能になります。

図1「SSGの仕組み」

図1

サーバーサイドレンダリング(SSR)による動的サイト対応

SSGは静的サイトの表示を高速化しますが、その性質上、ユーザーの操作に応じて表示内容が変化する「動的サイト」には対応できません。そこでAstroは、動的な機能が必要な場合のために、⁠サーバーサイドレンダリング(Server-Side Rendering、略してSSR⁠⁠」を採用しています。

SSRを理解するために、一般的なWebアプリケーションで用いられる「クライアントサイドレンダリング(Client-Side Rendering、略してCSR⁠⁠」と比較してみましょう。

CSR(クライアントサイドレンダリング)

最初に最小限のHTMLとアプリケーションの動作に必要なJavaScriptコードを読み込み、その後の画面描画はすべてユーザーのブラウザ(クライアント)側で行います。ページ遷移の際にサーバーと通信する必要がないため、一度読み込んでしまえば軽快に動作するアプリケーション(SPA:シングルページアプリケーション)を構築できます。しかし、読み込み時に多くのファイルをダウンロードする必要があるため、初回表示が遅くなるというデメリットがあります。

図2 CSRの仕組み
図2

SSR(サーバーサイドレンダリング)

ユーザーからページのリクエストがあるたびに、Webサーバー側でJavaScriptを使って動的にHTMLを生成し、それをブラウザに返します。ブラウザは完成したHTMLを受け取って表示するだけなので、CSRのような読み込みの遅延がなく、高速な表示を実現できます。これはPHPやJavaによる古くからあるサーバーサイド技術と同じ仕組みです。このような、ページごとにサーバーからHTMLを取得して表示するアプリケーションは、⁠MPA(マルチページアプリケーション⁠⁠」と呼ばれます。

図3 SSRの仕組み
図3

Astroは、Webサイトのパフォーマンスを最優先にしているため、動的な処理が必要な場合でもCSRではなく、高速表示を維持できるSSRを提供しているのです。

Astroは、SSGによる圧倒的な表示速度を特徴とし、SSRによって動的サイトにも対応できる、効率的でモダンなWebサイト制作フレームワークです。高速性が求められる「ヘッドレスCMS」「マイクロサービス」のフロントエンドとしての採用も増えており、現在のWeb開発における要注目の技術の1つと言えるでしょう。