WordPressカスタマイズ上級編その2(WebAPI)

WordPressのWeb APIを使う

ここで掲載するWeb APIは、HTTP通信で、JSON形式でデータのやり取りを行う仕組みです。

従来のWEBシステムは、画面でデータの入出力を行う度にデータベースの読み書きをするので、システムが重くなり、大規模なシステムを構築する際に、大きな壁になっていました。

特に、ユーザーがページを閲覧する度にページを更新するため、アクションの度に画面更新が発生して、閲覧者は操作の都度、画面更新を、待つことになります。

スマホ全盛時代に、このような反応が遅いサイトは見てもらえなくなり、離脱率が問題になっていました。

これを解決した1つの方法が「SPA(Single Page Application)」です。

SPAでは、基本的に、Web APIは、HTTP通信で、JSON形式でデータのやり取りを行う仕組みで、JavaScript系のVue.jsやReact.jsなどを使って、Node.jsなどでJSON形式のデータ(主にテキスト配列)でやり取りをしています。

従来のWebアプリケーションの構成

SPA の話をする前に、複数の画面から構成される Webアプリケーションの構成について解説します。

Webサーバーの代表的なものに Apache, NGINX(エンジンエックス) があります。

SPAの場合

まずはブラウザから Web サーバーに対して静的なリソースをリクエストします(図の黒い矢印)。
このときに返される JavaScript は Vue.jsやReact などのライブラリを使用して作られた SPA の本体部分になります。

初回アクセス時に必要なリソースの多くをダウンロードすることになるため、SPA では初回表示のロード時間が長くなりがちです。

WebAPI

JavaScript の読み込みが完了したら、以降のブラウザとWebサーバーとのやり取りは青い矢印の部分に移ります。

ユーザーからの操作などをトリガーに、ブラウザからWebサーバーに対してリクエストが送られます。

Webアプリケーションではこのリクエストに対してHTMLではなく JSON などのデータをレスポンスとして返します。このような Webアプリケーションのことを WebAPI と呼びます。

ブラウザはレスポンスを受け取ると JavaScript によってページの一部が更新されます。

このように SPA では画面全体ではなく必要な箇所のみを更新することでアプリケーションの機能を提供します。

フロントエンド/バックエンド

Webアプリケーションの開発において

  • HTMLやCSS、JavaScript といったブラウザ上で動く部分を フロントエンド
  • リクエストを受け取ってデータベースなどを操作してレスポンスを返す部分を バックエンド

というふうに呼びます。
それぞれの領域を専門で扱う人のことを フロントエンド エンジニアバックエンド エンジニア と呼称することもあります。

一般的なWebアプリケーションでは HTML をレスポンスとして返すことから、バックエンドとフロントエンドは不可分なところがありました。

SPA ではレスポンス (JSON) をどのように表示するかはフロントエンドに任せ、バックエンドはデータの取得・加工を担当する、というふうに役割分担が明確になります。

Webサーバーの役割の分割

SPAの構成図において、黒い矢印の部分と青い矢印の部分は役割が異なります。

黒い矢印の部分は一般的なWebアプリケーションの構成でもあった、静的なリソースを返すWebサーバーです。

青い矢印の部分はSPAと頻繁にやり取りするWebAPIです。

これらは役割が異なるので、大規模なシステムであれば分けて構築します。

それぞれのサーバーが単一の限定された役割を担うように分割しておくと、スケールアウトしやすい柔軟なシステムとなります。

サーバーレス構成

役割を分割し、スケールアウトしやすくした構成の最たるものが サーバーレス と呼ばれるものです。

各サーバーの役割をクラウドサービスに置き換える事で、サーバーを無くしてしまう手法です。

大手クラウドサービスは負荷状況に応じて自動でスケールアウトしてくれるので、突発的にアクセスが集中するような場合に有効な構成です。

まとめ

JavaScript 系の Vue.jsやReact などのライブラリを使用して作られた SPA の仕組みをPHP言語の中に組み込むことで、PHP言語のシステムであっても、可能な限り画面遷移が少ないWebシステムを実現できるようになりました。Wordpressでも JavaScript 系の Vue.jsやReact などのライブラリを使用してWeb APIでJSON形式のデータの仕組みにすることで、画面遷移のほとんど無いWebシステムを実現することができます。

JSONに慣れよう

SPAに慣れるには、JSONに慣れる必要があります。

「配列」が苦手、更にJSONは、もっとダメと言う人が多いと思いますが、一度、簡単なサンプルで経験すれば、簡単な仕組みということが判ります。

壁を破って頑張りましょう。

そして、クリックする度に画面遷移する「古い世界」から脱皮しましょう。