ITエンジニア日記 ~NO SKILL, NO LIFE~

学んだ技術や、気になることをアウトプットしていきます。プログラミング, インフラ, etc...

SPA (Single Page Application)

今日はSPA (Single Page Application)について

1. SPA (Single Page Application)とは

SPAは1つのWebページで構成されるWebアプリケーションのこと。
SPAではJavaScriptでページ内のHTMLを差し替える(書き換える)ことによって、ページの更新を行います。

SPAでは幅広いUIを実装することができるため、ネイティブアプリの代わりとしても使うことが可能です。Webブラウザで動作するため、OSに依存しないというメリットもあります。

1.1. 従来のWebアプリの動き

従来のWebアプリでは、

 1. ユーザーがアクション(ボタンを押したり、リンクをクリックしたり)を起こす
 2. ブラウザからサーバーへリクエストを送信
 3. サーバーはリクエストに応じたWebページ(HTML/CSS/JavaScriptなど)のレスポンスを送信
 4. ブラウザはレスポンスを受け取って画面全体を更新

という流れで画面の更新が行われる。
ボタンのクリックなどでページ遷移が行われるたびにページ全体の更新が行われることになります。

1.2. SPAのWebアプリの動き

従来のWebアプリに対してSPAでは、

 1. ユーザがアクションを起こす
 2. アクションに対して必要なデータのみをサーバーにリクエス
 3. サーバーはリクエストに応じたデータをJSON形式のデータでレスポンスを送信
 4. ブラウザはレスポンスを受け取って、ページ内の必要な箇所のみを更新

という流れで画面の更新が行われる。
SPAではページ内の必要な箇所のみを更新すればよく、ユーザーがアクションを起こすたびにページ全体を更新する必要がない。よって、従来のWebアプリよりも応答性が良くなります。

2. SPAで使われている技術

2.1. フロントエンド

SPAのフロントエンドではJavaScriptをそのまま使うのではなく、JavaScriptフレームワークやライブラリ(AngularやVue.js、Reactなど)を使用するのが一般的です。

2.2. 通信

クライアントとサーバーの通信にはAjaxやWebSocketなどを使用して非同期通信を行います。

2.3. バックエンド

バックエンドはRuby on RailsJavaASP.NETなどいろいろ選択肢はあり、Web APIとしてクライアントに機能を提供するのが一般的です。

そのほか、Node.jsを使用してバックエンドもJavaScriptで記述する方法もあります。Node.jsはサーバサイドで動作するJavaScriptの実行環境です。

ittech-nsnl.hatenablog.com

3. まとめ

ReactでWebアプリを作るために勉強中なので、SPAについても調べてまとめてみました。