前回、Delphiで作成したアルバムアプリをWindows 10に対応させ、ついでにマルチデバイス対応させてみましたが、実際にスマートフォンなどのモバイルデバイスでアルバム機能を使おうとすると、ローカル環境に写真を保存するだけでなく、クラウドなどのサーバー環境に保存するように作りこみたくなります。
Delphiおよびそのスイート製品RAD Studioでは、単一コードからWindows、Mac、iOS、Androidのマルチデバイスアプリを構築できることが目を引いていますが、その背後で重要となるサーバーへの接続や、モバイルクライアントに対応したサーバーアプリそのものを構築することもできることは忘れられがちです。
今回は、アルバムアプリを拡張してサーバー環境に写真を保存できるように、RAD Studioサーバーアプリ構築に挑戦してみます。
方法は2つ ― DataSnapとEMS
最近のサーバーアプリ(クラウドサービスなどを含む)は、REST/JSONなどのオープンなプロトコルを使って、特定のプラットフォームに限定されない接続性を用意する傾向にあります。RAD Studioでも、これに倣って、REST/JSONを標準とし、HTTP/HTTPSで接続可能なサーバーアプリを構築することができます。
DataSnap
RAD Studioには、2つの方法が用意されています。ひとつは、DataSnap。この機能は、元々はCOMをベースにした多層アプリケーション構築技術でしたが、COMを分離し、REST/JSONを使ったオープンな接続性を提供するようにリニューアルされたものです。
DataSnapは、多層アプリケーション構築のためのSDKと言っていいでしょう。DataSnapを用いれば、基本的なサーバーサービス機能をコンポーネントによって構築し、用意されたライブラリを使って、比較的簡単に多層アプリケーションを構築することができます。クライアントは、Delphi、C++によって構築されたものだけでなく、Javaや.NET、スクリプト言語などからも利用可能です。
EMS
モバイルアプリに対応するために、すぐに使える中間サーバー機能として用意されたのが、EMS(Enterprise Mobility Services)です。EMSは、カスタムREST APIをパッケージとして登録するアプリケーションサーバーの機能を提供します。
DataSnapのようにサーバー機能を、SDKを使って一から構築するのではなく、元々用意されたサーバーソフトウェアに作成したモジュールを載せていくスタイルなので、ログインなどのコネクション管理、データアクセスプール、セキュリティ、ログ分析など、あらかじめ用意された機能を活用してすばやくサーバーアプリを構築できます。
また、モバイルデバイスの識別や、それを活用した通知サービスの利用(Android端末の場合Googleのサービスを使うように自動的に振り分けるなど)もサポートしていて便利です。