皆様、こんにちは。株式会社ミガロ.の尾崎です。
今回は、Delphi/400に関してお話ししたいと思います。Delphi/400は、オープン系開発で多くの実績をもつエンバカデロ社(旧ボーランド社)のDelphiという統合開発環境に、IBM i向けミドルウェア製品を組み合わせたものです。
Delphi/400ではDelphiがもつ、コンポーネントベースの優れた開発環境をそのまま使用しながら、ミドルウェアにより追加されたIBM iへのデータアクセスやRPG/COBOLとの連携等の機能を組み合わせることで、効率よくIBM i業務システムのモダイナイゼーションが行えます。
Delphi/400にはさらなる活用のために、さまざまなアドオン機能が用意されているのですが、その1つが「Enterprise Connectors」と呼ばれるクラウドサービスとの連携機能です。
今回は、このアドオン機能である「Enterprise Connectors」についてご紹介します。
IBM i基幹系システムと情報系サービスとの連携
社内システムでIBM iを利用している場合、RPG/COBOLあるいは当社のDelphi/400等で基幹システムを構築しているかと思いますが、それとは別に各種情報系サービス(営業支援サービス、SNS、メール、グループウェア等)も利用していることが多いと思います。
従来は、このような情報系サービスもオンプレミス環境で構築することが多かったのですが、近年はクラウドベースのサービスが主流になりつつあります(図表1)。
従来のRPG/COBOLによるPC5250アプリの場合、オンプレミス環境のIBM i基幹系システムとクラウド環境の情報系サービスとを連携させるのは困難だったと思いますが、Delphi/400を使用すれば、連携が可能です。
通常、クラウドサービスとの接続には、サービスプロバイダーが提供するWeb APIを使用すしまうが、これらは一般的にSOAPやREST等を用いてリクエストを行い、XMLやJSON等でレスポンスを受け取る形となります。
Delphi/400には、従来からSOAP/RESTを使用するためのコンポーネントやXML/JSONをパースする仕組みが用意されているので、これらを使用するとWeb APIの仕様にあわせて独自に連携ロジックを開発することが可能でした。
しかしこの手法には、一般的に次のような課題があります。
・SOAP/REST、XML/JSON等に関する専門知識が必要
・サービスプロバイダーごとに異なるWeb API仕様の理解が必要
・Web APIの頻繁な仕様変更に伴い、都度連携ロジックの修正が必要
これらの課題を解決するのが、「Enterprise Connectors」です。
Enterprise Connectorsは、サービスプロバイダーごとに異なるWeb APIをラッピングすることで、Delphi/400の共通データベースエンジン「FireDAC」を使用して、簡単にクラウドサービスにアクセスできる仕組みです。
Enterprise Connectorsの概要
Delphi/400には、データベースエンジン「FireDAC」が搭載されています。
FireDACは、IBM i上のDB2やSQL Server、Oracleといった各種オープン系DB等、各種データベースの接続手順の違いを吸収して、統一した接続方法を提供するフレームワークです。
Delphi/400の開発環境にEnterprise Connectorsを追加すると、各種クラウドサービスに対しても、この共通の仕組みが使用できるようになり、SQLを使って簡単にデータを取得できます(図表2)。
2021年3月現在、Enterprise Connectors開発元のcdata社 (https://www.cdata.com/jp/firedac/)によると、230種類以上のクラウドサービスへの接続がサポートされているようです。
具体的な接続方法を紹介しましょう。
FireDACは、データベース接続を行う“TFDConnection”コンポーネントと、SQLを実行してデータを取得する“TFDQuery”という2つのコンポーネントに、接続先にあわせたドライバリンクコンポーネントを追加して使用します。
たとえばIBM iに接続する場合は、“TFDPhysCO400DriverLink”というリンクコンポーネントを追加します。
同様にEnterprise Connectorsには、クラウドサービスごとのリンクコンポーネントが用意されています。たとえば、“TFDPhysCDataTwitterDriverLink”というコンポーネントを追加すると、Twitter上のデータにSQLを使用してアクセスできるようになります(図表3)。
Enterprise Connectorsの使用例
ここで、実際のクラウドサービスへの連携例を2つ紹介します。
1つ目は、Open Exchange Rates (https://openexchangerates.org/)との連携です。
これは為替レート情報を取得できるWebサービスです。Enterprise Connectorsでは、情報のアクセスにSQLを使用しますが、最新の為替レートは、Latestテーブルから取得することが可能です。
これを使用すれば、日本円と米ドルとの最新為替レートを表示するアプリがSQL文1つで簡単に作成できます(図表4)。
また、指定した日付時点の過去の為替レートを照会することも可能です。
指示画面で入力した日付値をパラメータに、Historicalテーブルにアクセスすると指定した日付時点の為替レート履歴情報を取得できます。アプリケーションの実行時にデータの抽出条件を指定するので、プログラムコードの記述は必要ですが、わずかなコーディングでプログラムを実装できることがわかると思います(図表5)。
図表5 Open Exchange Rates 使用例(2)
2つ目は、Slack(https://slack.com/intl/ja-jp/)との連携です。
Slackはビジネス用チャットサービスです。社内で組織やプロジェクトごとに専用のチャンネルを作成し、各チャンネル内でメンバー間による情報交換や共有が行えます。有償のサービスですが無料版もあり、実際に使用されている方も多いと思います。
ここでは、Delphi/400を使用した受注入力画面にSlackへの投稿機能を追加した例を紹介します。
入力担当者が新規の受注データを入力して[登録]ボタンをクリックすると、IBM i上の受注ファイルに新規レコードを追加すると同時に、Slack上にも受注したことを通知するメッセージを自動的に投稿します(図表6)。
図表6 Slack 使用例
今回は、シンプルな連携例を2つ紹介しましたが、ほかにもさまざまな活用方法が考えられます。たとえば、Salesforce上で管理している商談データを元にIBM iの受注データを自動的に作成したり、IBM i上にある在庫情報を使って余剰在庫品を抽出し、それを元にTwitterへ特価キャンペーン情報を自動的につぶやくといったことが可能です。
Enterprise Connectorsを使用すれば、IBM iとクラウドサービスとのシームレスな連携が簡単に実現できることがご理解いただけたと思います。
まとめ
今回は、Delphi/400で使用可能なアドオン機能であるEnterprise Connectorsについて紹介しました。クラウドサービスとの連携を検討される方は、ぜひお試しください。
なお、Enterprise Connectorsには2つのグレードがあり、グレードによりサポートされるクラウドサービスの対応数が異なります。
グレードごとに対応するサービス一覧は、Enterprise Connectorsのダウンロードページ(https://www.cdata.com/jp/firedac/download/)に記載されているので、そちらをご覧下さい。
ちなみに標準版となる「Enterprise」でも、100種類以上のサービスに対応しています。この標準版は、「Delphi/400 10.2 Tokyo」の開発ライセンスおよび有効なメンテナンス契約があれば、無償で入手いただけます(すべてのサービスが使用できる上位版「Enterprise Plus」は別途有償ライセンスの購入が必要となりますが、ダウンロードページより、トライアル版を取得して動作を検証することが可能です)。
次回は、RPG/COBOLベースでWebアプリが開発できる「SP4i」の最新情報についてご紹介したいと思います。お楽しみに!
IBM i 開発ツールエンジニアの雑記帳