この記事では、2018年12月6日に開催されたエンバカデロ・デベロッパーキャンプ の【T6】Delphi / C++ / Sencha テクニカルセッション「Web拡張、クラウド対応も万全!つなぐシステム構築法」で説明した内容を紹介しています。

ビジネス環境の進化、新しいデバイス、新しい要件に対応できていますか?

これまでの業務システムはオフィス内での利用が前提であり、C/Sシステムはそのような前提向けに設計されてきました。しかし様々なアプリケーションがオンプレミス運用ではなくクラウドサービスとして利用できるようになると、複数のサービスの情報を連携させたり、あるいは既存のC/Sシステムとの連携させたいというニーズが増しています。またスマートフォンやタブレットは日常的に用いられるデバイスであり、それらのデバイスで業務システムを利用したいという要望も増しています。
これらのニーズに応えるシステムを Delphi や C++Builder でどのように構築できるでしょうか?

既存のシステムを、さまざまなクラウドデータやクライアントと連携できる「つなぐシステム」にアップデートする

クラウドデータやクライアントと連携するには、アプリケーション自体がサーバとクライアントの両方の機能を併せ持つことが必要です。

  • クラウドデータを操作する「クライアント」機能
  • 様々なクライアントデバイスのリクエストを処理する「サーバ」機能
    このようなアプリケーションはWeb APIとして実装することが一般化しており、またWeb API化することでさまざまなクライアントからの要求に応えることができます。
    第36回デベロッパーキャンプ セッションT6 「Web拡張、クラウド対応も万全!つなぐシステム構築法」では、以下のようなトピックでご説明しています。
  • このようなWeb APIをDelphi/C++Builderでどのように実装できるか?
  • Web APIに接続するクライアントはどのように実装できるか?
  • 実装したWeb APIはどのように運用できるか?
  • Delphi/C++Builderで実装したWeb APIからデータベース以外のクラウドデータを操作するにはどうすればよいか?

このセッションのビデオは下記のリンクよりご視聴いただけます。
第36回デベロッパーキャンプ セッションのビデオを視聴する

また、このセッションを含む、デベロッパーキャンプの全資料は下記ページからのご登録によりダウンロード頂けます。
デベロッパーキャンプ資料ダウンロード

以下では、セッションのサマリをご紹介します。セッションのビデオを視聴する前にご一読いただくと、よりスムースに内容をご理解いただけます。

このようなWeb APIをDelphi/C++Builderでどのように実装できるか? またWeb APIに接続するクライアントはどのように実装できるか?

Delphi/C++BuilderによるWeb APIの実装では過去にはWebBroker、DataSnapが用いられましたが、これらはいずれも細かい部分、たとえばユーザ管理、グループ管理、ユーザ認証処理までをきっちり設計開発する必要があり、例えて言うなら注文住宅を設計図面から起こして立てるような作業でした。
しかし最近のDelphi/C++Builderではこれらに加えてRAD Server(Enterprise Mobility Service)という新しい方法が追加されています。ユーザ管理や認証のような共通的な部分が基本機能として提供され、開発者は本来実装すべきAPIの機能にフォーカスして開発を進められます。

Delphi/C++Builder でのRAD Server 向けのWeb APIの実装は以下の2種類が作れます。

  • Delphi/C++Builderのアプリから利用しやすいAPI
  • 任意のHTTPクライアントで利用しやすいAPI

いずれも、APIがリクエストを受ける際の形式は RESTful なインタフェースです。またデータの受け渡しはJSONを用いており、一般的なWeb APIと同等の実装ができます「Delphi/C++Builderのアプリから利用しやすいAPI」は、クライアントからRAD Serverを利用するための専用のコンポーネントがあり、データはTDataSource に引き渡せます。ここから先の部分はDelphi/C++Builderによるデータベース利用アプリと同じように実装できます。「任意のHTTPクライアントで利用しやすいAPI」は、HTML5/JavaScriptアプリケーションから接続できます。セッションでは Sencha Ext JS と Sencha Architect でビジュアル開発する例を紹介しています。(Delphi/C++BuilderからRESTClient、RESTRequest、RESTResponseのコンポーネントで利用することも可能です)

実装したWeb APIはどのように運用できるか?

実装したWeb APIは、運用の目的(自社向けのサービスを提供する、または顧客むけのサービスをASPとして提供する、など)によってシステム構成が変わり、またその際に使用するRAD Server運用ライセンス選定も変わってきます。またRAD Serverでは「マルチテナント」機能に対応しています。例えていうなら、Gmail は法人向けのサービスがありますが、サービスにログインする際の入り口は同じであり、しかしログインした後に参照できる範囲はそれぞれの契約単位ごとに限られていますが、それと類似する形でサービス提供可能です。
そこで、セッションの中では4つのケースに分けて、運用時の形態を説明しています。

Delphi/C++Builderで実装したWeb APIからデータベース以外のクラウドデータを操作するにはどうすればよいか?

クラウドサービスのデータを他のシステムと連携させたい場合は、それぞれのサービスごとのAPI仕様を調査学習した上でAPIを利用するクライアントを実装することが課題でした。APIの仕様はそれぞれのサービスごとに異なりますし、返されるデータの形式も違います。またAPIの仕様は追加、削除されることがあり、それらへの対応も必要でした。
このような課題に対して、Delphi/C++Builderでのアプリケーション実装では Enterprise Connectors という選択肢があります。これは FireDAC の接続先をクラウドサービスに拡張するものであり、クラウドサービスのデータに対するSQL操作を可能とします。扱うデータはTDataSourceなどのDelphi/C++Builder標準のコンポーネントに引き渡されますので、クラウドサービスを利用するために個別のAPIの仕様を細かに学習することなく、すみやかに実装を進められます。
セッションでは kintone に接続する例をライブデモでご案内しています。

資料ダウンロードやセッションのビデオをご視聴ください

このように4つのトピックで構成されたセッションとなっておりますが、Web拡張、クラウド連携のヒントを知りたい方は、ぜひ資料ダウンロードやビデオをご視聴ください。
デベロッパーキャンプ資料ダウンロード
第36回デベロッパーキャンプ セッションのビデオを視聴する

Anonymous