"BOKU"のITな日常

BOKUが勉強したり、考えたことを頭の整理を兼ねてまとめてます。

最近のWEBアプリケーションの種類についてざっくりまとめる。

f:id:arakan_no_boku:20190505103119j:plain

最近のWEB技術のドキュメントにでてくる「最近のWEBアプリケーション」の種類について、会話で困らない程度にざっくり整理しておきます。

目次

WEBアプリケーションの種類

ウェブ開発系の資料で目にするアプリケーションの種類を列挙してみます。

  • プログレッシブウェブアプリケーション(PWA)
  • ユニバーサルアプリケーション
  • ユニバーサルWindowsプラットフォーム (UWP)アプリケーション
  • シングルページアプリケーション(SPA)
  • デスクトップ(WEB)アプリケーション
  • サーブレット
  • サーバーサイドアプリケーション
  • モバイルアプリケーション
  • モノシリックアプリケーション
  • マイクロサービスアプリケーション

など・・ですかね。

あと、紛らわしい言葉に「AMP(Accelerated Mobile Pages)」があります。

これは、「モバイルページを高速に表示させるための手法」のことなので、アプリケーションの種類ではありません。  

これらを個別に書いていくと数が多すぎてまとまりません。

WEBアプリケーションの自分流グルーピング

そこで、自分流に4つにグルーピングしてみました。 

①マルチデバイスマルチプラットフォーム対応グループ

②応答性改善狙い系グループ

  • シングルページアプリケーション(SPA)
  • デスクトップ(WEB)アプリケーション

③プロセス構成軸で分類グループ

  • モノシリックアプリケーション
  • マイクロサービスアプリケーション

④四従来のアプリケーション系グループ

  • サーブレット
  • サーバーサイドアプリケーション
  • モバイルアプリケーション

個別に見ていきます。

①マルチデバイスマルチプラットフォーム対応グループ

 ざっくりした意味はこんな感じです。

名称 概要
ユニバーサルアプリケーション

Apple社は 「iOS」を搭載した「iPhone」、「iPad」、「iPod Touch」の全端末上に対応しているアプリケーションのことをこうよんでます。

ユニバーサルWindowsプラットフォーム アプリケーション/UWPアプリケーション

「ユニバーサルWindowsプラットフォーム (UWP) 」で動作するアプリケーションです。

UWP上で動作することで、Windowsを搭載するPCやタブレット型端末、Windows Phone、Xboxなどマルチデバイスマルチプラットフォームのアプリケーションになります。

プログレッシブウェブアプリケーション

Googleが提唱するデスクトップとモバイルの両方でインストール可能なウェブアプリケーションのことです。

アプリストアにも登録可能で、ブラウザ上でも動作可能です。

当初は、Androidだけでしたが、iOSやWindows10など対応範囲は確実に広がっているようです。

なんですが。

上記の「UWPアプリケーション」は他の名前で呼ばれることもあります。

例えば、「Universal Windows Apps(UWA)」とか、単に「ユニバーサルアプリケーション」と呼んでいる資料もあります。

これが困りもので、AppleiOS対応のアプリケーションのつもりで読んでいると「あれ・・」ととまどうこともあります。

②応答性改善狙い系グループ

 WEB技術を使って、デスクトップアプリのような応答性を実現するアプローチになっているというくくりで、グルーピングしてみました。

名称 概要
シングルページアプリケーション(SPA)

単一のWebページのみで構成します。

非同期通信で処理結果をうけ画面の差分だけ更新する手法で、デスクトップアプリケーションのような応答性を提供するWebアプリケーションです。

デスクトップ(WEB)アプリケーション

HTMLとCSSJavaScriptなどのウェブ技術を使って開発するデスクトップアプリケーションです。

例えば、Electron (エレクトロン)だとWindowsmacOSの両OSのアプリケーションを1つのコードから作ることができます。

どちらも、ベースにNode.jsがいて、ほぼ同じようなWEB技術で開発します。

開発したものが「WEBアプリケーション」なのか「デスクトップアプリケーション」なのか・・の 違いということになります。

ちなみに。

Electron (エレクトロン)は・・「Visual Studio Code」、「Atom」、「Skype」などの超メジャーなアプリケーションの開発に使われた超メジャーな環境です。

③プロセス構成軸で分類グループ 

 ざっくり書くと、プログラムを単一のマシン上にまとめておくか、自由に複数のマシンに分散しておいているか・・ってことです。

名称 概要
モノシリックアプリケーション

MVCの階層分けや機能ごとにプログラム自体は異なっています。

ですが、同一マシン上にすべてが存在している前提です。

従来のサーバーアプリケーションは、基本全てこのタイプです。

マイクロサービスアプリケーション

構成する各機能が別マシンに分かれて存在している前提です。

それを通信によって値(テキストデータ)を投げ合うことで、ひとつのアプリケーションとして機能させるやり方です。

各機能が疎結合なので、保守性・拡張性・可用性等にメリットがあります。

 

自分も最近、マイクロアプリケーションには興味があります。

codezine.jp

④四従来のアプリケーション系グループ

 昔からあるタイプです。

名称 概要
モバイルアプリケーション

スマートフォンタブレットコンピュータ、その他携帯端末で動作するように設計されたコンピュータプログラムです。

他にも「携帯アプリ」とか「スマホアプリ」とかよばれる場合もあります。

iOSはSwift(Objective-C)、AndroidはKotlin(Java)で開発します。

でも、Coldovaなどクロスプラットフォーム開発できる環境もあります。

サーブレット

クライアント(ブラウザ)からのリクエストを受けて、処理を行い、結果をHTMLに生成して返すタイプのアプリケーションです。

概ね、JAVAで開発したものをこう呼ぶみたいですね。

サーバーサイドアプリケーション

サーブレットと同様に、クライアント(ブラウザ)からのリクエストを受けて、処理を行い、結果をHTMLに生成して返すタイプのアプリケーションです。

サーブレットと対比して、JAVA以外を意味する場合が多いみたいです。

でも、たまに、JAVAを含んで総称的に使われたりもするので、とまどいます。

ちょっと補足です。

最近「サーバーサイドレンダリングSSR)」という言葉が、モダンなJavaScriptフレームワーク資料で頻出しています。

これを「サーバーサイドアプリケーション」と勘違いしている人がたまにいます。

でも、この「サーバーサイドレンダリングSSR)」は、仮想DOM技術等を使ったクライアントレンダリングで生じる問題の解決のために、同じロジックをサーバーサイドで行う「手法」のことで、「サーバーサイドアプリケーション」とは全く違うものです。

念のため。 

とりあえず、超、ザックリですが、整理してみました。

ではでは。