SPA
要点
- SPA(Single Page Application)は、1つのHTMLの上でJavaScriptが画面の中身を書き換えていくアプリの作り方です。
- ページ遷移のたびにHTMLをまるごと読み込み直す従来型サイト(MPA)とは仕組みが異なります。
- アプリのようななめらかな操作感を実現しやすい一方、初回の読み込みやSEOでは工夫が必要になります。
SPAとは何か
SPAは、最初に1枚のHTMLファイルだけを読み込み、その後の画面の変化はJavaScriptがDOM(画面の構成要素)を書き換えることで表現するアプリの作り方です。
1枚だけ読込
画面を書き換え
見た目が変わる
従来の複数ページ遷移型(MPA)との違い
従来型のサイト(MPA・Multi Page Application)では、リンクをクリックするたびにサーバーへリクエストを送り、新しいHTMLをまるごと受け取って画面全体を再読み込みします。
SPAでは、必要なデータだけをAPI経由で取得し、画面の変わる部分だけをJavaScriptが書き換えます。ページ全体を読み込み直さないため、画面の切り替えが速く、なめらかに感じられます。
ぽち先生のヒントMPAは「本のページをめくるたびに、本まるごと新しいものに差し替える」ようなもの、SPAは「1枚のホワイトボードに書いたり消したりしながら書き換えていく」ようなものに例えられます。ホワイトボード自体は変わらず、書かれている内容だけが更新されます。
画面遷移の仕組み(ルーティング)
SPAでも「URLが変わって別の画面に見える」体験は必要です。これはJavaScriptがURLの変化を監視し、実際にはページを再読み込みせずに、表示するコンポーネント(画面部品)だけを切り替えることで実現しています。この仕組みを「クライアントサイドルーティング」と呼びます。
変化を検知
を切り替え
SPAのメリットと注意点
SPAとJamstackの関係
SPAは「画面の書き換え方」の話であり、Jamstackは「HTMLをいつ作るか」の話です。この2つは対立するものではなく、組み合わせて使われることもよくあります。例えば、Jamstackで骨組みとなるHTMLをビルド時に用意しつつ、画面内の一部をSPA的にJavaScriptで動かす、といった構成です。
代表的なSPAフレームワークの例
SPAを構築する際は、次のようなJavaScriptフレームワーク・ライブラリがよく使われます。
- React(Facebook/Meta発、コンポーネント指向の代表格)
- Vue.js(学習コストが低く、日本でも広く使われる)
- Angular(Google発、大規模アプリ向けの総合的なフレームワーク)
- Svelte(ビルド時にコンパイルし、実行時の処理を軽量化)
まとめ
SPAは、1枚のHTMLの上でJavaScriptが画面を書き換えていくアプリの作り方です。ページ全体を読み込み直さないためなめらかな操作感が得られますが、初回表示やSEOでは工夫が必要になります。
関連トピック: