フリーランスエンジニアの雄貴です!
近年、WEBサービス開発でモダンな技術として採用されているSPA
Vue.jsやReactなどのモダンフロントの技術を使用しているのは分かるけど、実際どんな仕組みなのか?
そもそもなんでSPAは求められているのか?を把握している人は少ないかと思います。
今回はその辺りを説明しようと思います!
Youtubeではエンジニアの単価が上がる情報発信しています!
毎週木曜日の21時から、ライブ配信やってますので、気軽にお越しください😁
これまでのWEBアプリケーション
SPAの説明をする前に、まずは背景としてこれまでのWEBアプリケーションの仕組みをお話しいたします。
以前の記事でもお話ししていますが、ここでは要約して説明いたしますね!
WEBサービスにて画面遷移する際、ブラウザからサーバー側にHTMLファイルを要求して、サーバーは要求されたHTMLをブラウザに返却することで画面を変えることができます。
またサーバー側でデータ処理など様々な機能を実施した後にブラウザにHTMLファイルを返却することになります。
このサーバー側で処理を実行している間は、ブラウザ側では操作することができず、HTMLファイルが返ってくるまで待機しなければなりません。
これを「同期通信」と呼びます。
多少の待ち時間が生じますが、昔はこれが一般的だったので、ユーザーも当たり前に感じていました。
スマホアプリの登場
しかしスマートフォンが登場したことにより、事態は一変しました。
スマートフォンで使用できるスマホアプリの操作性がとてもよく、画面遷移や各機能などを高速で行えるようになりました。
これによって、システムのUIに対するユーザーの期待値が爆上がりしました。
そうなるとどうなるか。。
WEBサービスの処理が遅いと感じるようになりました。。
SPA(シングルページアプリケーション)が開発された!
WEBアプリケーションの操作速度を向上させるために開発されたのが「SPA(シングルページアプリケーション)」です。
特徴としては、サーバーのレスポンスを待つことなく画面遷移を実施することができる点です。
詳しくみていきましょう。
画面遷移はJavaScriptで制御する
SPAの場合、WEBサービスのサイトにURLでアクセスした際、初期表示だけサーバー側からHTMLを取得します。
そして画面遷移はJavaScriptで制御します。
実はJavaScriptはコード内でHTMLを作ることができ、そのJavaScriptで生成した部分的なHTMLを初期表示で画面に描画されているHTMLに差し込むことができます。
具体的には、画面遷移のボタンをクリックした際、サーバーに通信せずにJavaScriptで次のページのHTMLを生成し、初期表示したHTMLのbodyタグ以下の部分と入れ替えることで、画面遷移しているように見せることができます。
1つのHTMLファイルのみで完結しているので、「シングル・ページ・アプリケーション」と呼ばれています。
必要なデータはAjaxを用いて非同期処理で取得
しかしここで一つ疑問が生まれます。
「データ操作する場合はサーバーと同期通信しなければならないのではないか?」
これを解決しているのがJavaScriptの「Ajax」という機能です。
Ajaxは非同期通信と呼ばれているもので、同期通信がサーバーのレスポンスを待たないと画面操作できないのに対し、非同期通信はサーバーのレスポンスを待たずに画面操作することができます。
これによって、Ajax処理でデータを取得・更新などをしている間に画面遷移を実施することができます。
取得したデータが画面に反映されるまで、画面が全て描画されることはありませんが、取得するデータ量を必要な量まで抑えることでそれらの遅延も防ぐことができます。
これらの技術によって、以前よりも高速にWEBサービスを操作できるようになりました。
JavaScriptフレームワーク
SPAの需要が増えてきたことにより、それらに特化したJavaScriptのフレームワークも登場しました。
代表的なものは、「Angular」、「React」、「Vue,js」というフレームワークで、JavaScriptの3大フレームワークと呼ばれています。
中でも日本では「React」と「Vue.js」がよく利用されていて、さらにSPAの開発に特化した「Next.js」や「Nuxt.js」などの、ReactやVue.jsによるSPA開発をより向上させるフレームワークも開発されました。
現在Vue.jsを使用している案件はNuxt.jsでの開発に置き換わっている状況です。
またReactの案件ですが、最近Next.jsの機能も豊富になってきたので少しずつ置き換わっていく動きになると予想されます。
最後に
今回はSPAが登場した背景とその仕組みについてお話しいたしました!
SPAは歴史も浅く、まだ開発体制が整っていない案件も多いです。
私自身フロントエンドエンジニアとして様々なSPAの案件に参画しましたが、そもそもSPA開発ができるエンジニアの数が少なくて、どこに行っても引っ張りだこな状況です。
需要に対し特に供給不足な領域ですので、どうなるかは以前お話ししたこちらの記事をご覧になればイメージできるかと思います。
ご興味をもたれたら、ぜひ参画できるようにスキルアップしてみてください!
Youtubeではエンジニアの単価が上がる情報発信しています!
毎週木曜日の21時から、ライブ配信やってますので、気軽にお越しください😁
コメント