クラウド技術

クラウドとは、従来のローカルコンピュータや自前で準備したサーバで利用していたデータやソフトウェアをネット経由で提供するものです。

クラウドサービスのメリット

IoTシステムを開発するにあたり、クラウドサービスを利用する事で以下のようなメリットがあります。

コスト

自前でのサーバやソフトウェアの購入が不要、資産管理や運用管理も不要な為、初期導入コストが抑えられ、運用コストの削減も期待できます。

スケーラビリティ

対象のデバイスや利用者の増加に応じて柔軟に拡張する事が可能な為、事前検討、準備に費やす労力が少なくスモールスタートが容易で、保守の負担も軽減できます。また、IoTにおけるビッグデータへの対応実績、事例があり、安心して開発に専念できます。

クラウドサービスの種類

クラウドサービスは以下の種類に分類され、当社では主にPaaSを利用してシステム開発を行っています。

SaaS

SaaS(Software as a Service)は、インターネットを経由してソフトウェアを提供するサービスです。

PaaS

PaaS(Platform as a Service)は、ハードやOSなどのプラットフォーム一式をインターネット上で利用できるようにしたサービスです。OSや基板の構築が不要で、IoT向け含む多種多様なサービスが用意されており、効率良くかつ信頼性の高いIoTシステムが開発できます。

IaaS

IaaS(Infrastructure as a Service)は、OSやサーバなどのインフラをインターネット経由で提供するサービスです。サーバやOSの設定など1から構築する為、運用や保守の負担は増えますが、自由度の高いシステム構築が可能です。

クラウドサービス

有名なクラウドサービスとして、Amazon Web Services(AWS)、Microsoft Azure(Azure)、Google Cloud Platform(GCP)など挙げられますが、ここではAzureを例とし、システムの構成例、サービスの種類について紹介します。

Azure IoT Hub

何百万ものIoTデバイスからのデータをクラウドへ簡単に取り込めるサービスです。
双方向通信も可能で、通信プロトコルはMQTT、AMQP、HTTPSをサポートしています。

Azure Functions

小規模なコード(関数)をクラウドで手軽に実行できるサービスです。
C#、Java、JavaScript、PowerShell、Pythonなどの任意の開発言語を使用できます。Azure Functionsを使用すると、Azureでサーバレスなアプリケーションを作成できます。

CosmosDB

Azureのデータベースサービスのうち、NoSQLデータベースを扱うサービスです。
NoSQL (高速な読み書き、スケーラブル、スキーマレス)に加え「グローバル分散」と「マルチモデルのデータベース」の特徴があります。

BLOB Storage

Microsoft のクラウド用オブジェクトストレージです。上記構成例では、html、css、JavaScript、jpegなどのWebコンテンツを格納しています。

Azure Active Directory (Azure AD)

Azureの中で、「認証」と「認可」の機能を提供するサービスです。Webアプリケーションのサインインとアクセスに利用できます。

IoTソリューション

当社では、IoTシステムのWeb開発において、以下の技術も取り入れております。

サーバレスアーキテクチャ

Webサーバを用意する必要がなく、スモールスタート、オートスケールが可能で、従来型システムと比べて運用管理やコスト面でメリットがあります。
サーバレスコンピューティングとは、IaaS のようにインスタンスを起動し続けるのではなく、外部からのリクエストや、起点となるイベントが発生したときだけプログラムが実行される仕組みです。 FaaS (Function as a Service) と呼ばれることもあります。

各クラウドサービスにおいては、以下のサービス名で展開されています。

  • Amazon Web Services(AWS) では AWS Lambda
  • Microsoft Azure(Azure)では Azure Functions
  • Google Cloud Platform(GCP)では Cloud Functions

IaaS (EC2やAzure Virtual Machine)・PaaS (Azure App ServiceやGoogle App Engine) の場合、やるべき仕事の有無に関わらず、インスタンスを維持し続ける必要があり、その分費用が発生します。
また、IaaS や PaaS の起動にはおおむね10秒〜数分程度の時間がかかり、やるべき仕事があるときだけ起動することが難しいです。
一方、サーバレスコンピューティングの場合、実行中のみ料金がかかり、1秒で処理が終了すれば 1秒、0.5秒なら 0.5秒だけの料金です。
また、Docker 等のコンテナ技術を使っているため、短時間で起動ができます。
さらに短時間起動が実現できるため、リクエスト数に応じてスケールさせることができます。OS やミドルウェアの環境構築や、セキュリティパッチなどが不要なのは、PaaSもFaaSも同様です。サーバレスコンピューティングは、昔なつかしの CGI (Common Gateway Interface) に似た技術と言えます。

SPA (Single Page Application)

単一のWebページのみから構成することで、デスクトップアプリケーションのようなユーザ体験を提供するWebアプリケーションです。インストール不要でありながら、ネイティブアプリ並みの機能・性能を持ちます。

SPAを採用するメリット

SPA を採用する主なメリットは、以下の 3点が挙げられます。

1. 通常のWeb ページでは実現できないユーザー体験(UX)を実現できる。

ブラウザの挙動に縛られないことから、より幅広い UI を実現することができるため、ユーザー体験を向上させることができます。
例えば、ブラウザによるページ遷移が発生しないことにより、音楽を試聴しながらブラウジングを行うことができる音楽配信サービスのようなものも実現可能です。

2. 高速なページ遷移を実現できる。

従来のWebページでは、ページ遷移の度に遷移先のHTML全体をサーバから取得するため読み込みに時間がかかりましたが、SPAでは遷移先のページを構成するために必要最小限のデータのみを取得し、ブラウザでHTMLを構築するため、従来のWebページと比較してページ遷移が高速になります。

3. ネイティブアプリの代わりとして提供することができる。

SPA によって実現可能なユーザー体験はネイティブアプリと比較しても遜色のないものとなるため、Web アプリとして作成したものをネイティブアプリとして流用することができます。
最近ではプログレッシブウェブアプリ(Progressive Web Apps: PWA)という考え方がGoogleから提唱されており、Web の最新の技術を用いてWebとネイティブアプリの両方の利点を持ったアプリを作ることが注目されています。この手法を用いれば、オフラインでのページ閲覧、プッシュ通知、ホーム画面からの起動といったネイティブアプリならではの機能をWebアプリで実現することができます。

主なフレームワーク/ライブラリ

  1. Angular (Google製)
  2. React (Facebook製)
  3. Vue.js (元GoogleのAngularJS開発チーム)