Jamstack
要点
- Jamstackは「JavaScript・API・Markup」の頭文字をとった、Webサイトの構成方式です。
- ページのHTMLを、アクセスの都度ではなく「ビルド時」にあらかじめ作っておくのが特徴です。
- 作り置きしたHTMLをそのまま配信するため、表示が速く、サーバーの攻撃対象も少なくなります。
Jamstackとは何か
Jamstackは、JavaScript(画面上の動き)・API(データの取得)・Markup(あらかじめ生成されたHTML)を組み合わせてWebサイトを構成する考え方です。
もっとも重要なポイントは「HTMLをいつ作るか」です。Jamstackでは、利用者がアクセスするより前の「ビルド時」に、必要なデータを取得してHTMLをあらかじめ作っておきます。
APIからデータ取得
HTMLを生成
配信
従来のサーバーサイドレンダリングとの違い
従来型(サーバーサイドレンダリング)は、利用者がアクセスするたびに、サーバーがそのつどデータベースへ問い合わせてHTMLを組み立て直します。Jamstackは、その組み立て作業をあらかじめ済ませておく点が異なります。
たびに
HTMLを組み立て
ぽち先生のヒント従来型は「注文を受けてから作る出前」、Jamstackは「あらかじめ刷っておいた印刷済みのチラシを配る」ことに似ています。出前は注文のたびに調理が必要ですが、印刷済みのチラシは配るだけなので速く、厨房(サーバー)が忙しくなりません。
ビルド時と実行時の役割分担
Jamstackでは「ビルド時にできること」と「ページを開いた後(実行時)にできること」が分かれています。
「絶対に事前生成のみ」というわけではなく、ログイン後の情報表示など、その場で変化する部分は、実行時にJavaScriptから改めてAPIを呼び出して補います。
Jamstackのメリット
- 表示が速い:作り置きのHTMLを返すだけなので、都度の組み立てが不要です。
- 安全性が高い:データベースへ直接アクセスされる窓口が少なく、攻撃対象が減ります。
- 負荷に強い:同じ静的ファイルを複製して世界中に配信しやすく、アクセス集中にも対応しやすくなります。
どんなサイトに向いているか
頻繁に変わらない情報はビルド時にHTML化し、リアルタイム性が必要な部分だけをAPI呼び出しで補う、という組み合わせがよく使われます。
代表的なJamstackツール・サービス
Jamstackを実践する上で、次のようなツールやサービスがよく使われています。
- Next.js、Gatsby、Astro(静的サイトを生成するフレームワーク)
- Netlify、Vercel(ビルドとホスティングを担うサービス)
- microCMS、contentful(コンテンツを管理するヘッドレスCMS)
このサイト自体も、Netlifyを使って静的ファイルを配信しています。
まとめ
Jamstackは、JavaScript・API・Markupを組み合わせ、HTMLをビルド時にあらかじめ作っておくことで、高速かつ安全な配信を実現する構成方式です。従来のサーバーサイドレンダリングとの違いは「HTMLをいつ作るか」にあります。
関連トピック: