データ連携の仕組みとススメ方
スキーマを定義できるXMLはデータ連携に最適
それでは、現在、データ連携に用いられる汎用的なフォーマットとプロトコルについて紹介しましょう。
それぞれのアプリケーションは独自のフォーマットでデータを管理している場合がほとんどなので、そのフォーマットをすべてデータ連携ツールが理解できるようにしておくのは効率的ではありません。
そこで、データを転送する際、アプリケーション側でCSVやXMLといった汎用的なフォーマットへとデータを変換しておくことで、ネイティブな言語(固有のフォーマット)を意識することなくデータをやり取りすることが可能になります。
これまで汎用的なデータフォーマットとしては、CSVが利用されるケースが多く、FTPを使うファイル交換システムを利用したデータのやり取りが実現されてきました。
CSVはテキストファイルなので可読性が高く、特別なデータ解析が不要で、とても取り扱いが簡単なのですが、スキーマ(データ構造)が定義されていないため、データベースが関与しない環境で同形式のデータを大量に管理するのは面倒であり、一般的に処理にも時間がかかります。
そのため、近年では統一的な記法を用いながら独自の意味や構造を持ったデータを簡単に取り扱えるXMLを利用して、データ連携を実現するケースが増えてきました。また、データ連携に利用されるWebサービスが標準的にサポートしているということも、XMLが汎用的に利用される理由となっています。
図2:第4世代のデータ連携の大きな流れ |
Webサービスの連携を実現するSOAP
XMLを利用したWebサービスによるメッセージ交換は汎用性が高く、企業内外のデータ連携、システム連携に利用されています。そのWebサービスのプロトコルとして代表的なものがSOAP(Simple Object Access Protocol)とREST(REpresentation State Transfer)です。
SOAPはいまさら詳細を説明するまでもなく、Webサービスの基本的なプロトコルとして利用されてきました。XMLをベースとした言語WSDL(Web Services Description Language)により定義されたサービスをSOAPプロトコルによって送受信する方式です。
近年では、開発ツールや開発言語用ライブラリのSOAP対応が進んできているため、SOAPはとても利用しやすくなってきました。しかし、そもそも高機能で複雑な処理がハンドリングできるよう設計されているため、習得が難しく初期の学習コストが高くついてしまうというデメリットがあります。そのためSOAPに慣れていない場合には、データ連携を実現するためのハードルが高くなってしまうケースも多いようです。
またSOAPの性能面に関しても、構文の生成や解析がボトルネックとなってしまい、システムのパフォーマンスが低下してしまうケースがあるという課題を内在しています。
HTTP上で気軽に利用できるがREST
一方、RESTではHTTP上でXML文書をやり取りします。そのため、少量の情報や類似したメッセージを複数回交換する際には、SOAPに比べて定義がシンプルで済み、パフォーマンスも有利だと言われています。
SOAPが第三者機関(W3C:World Wide Web Consortium )による標準化が定義されているのに比べ、RESTには明確な仕様が決められていません。一般的には、HTTPのGETメソッドを使ってURLにアクセスするとXMLが返ってくるものがRESTと呼ばれています。
RESTの定義方法はWADL(Web Application Description Language)を用いるケースが多く、特別なサーバーやクライアント環境などを用意しなくても、WebブラウザにURLを入力するだけで動作確認ができるというのも大きな特徴です。
「SOAPか、RESTか」という点についての議論は他に譲りたいと思いますが、共にHTTPSを使って簡単に暗号化ができる点やこれまでWebサイトを開発したハードウエア、ソフトウエア、そしてノウハウを流用できることから、適材適所での使い分けをすることが肝心ではないかと考えています。
SOAP | REST | |
---|---|---|
開発のしやすさ |
比較的難易度が高く※、開発、テストには一定のサーバー環境が必要 [※]ただし、開発支援環境(ミドルウェア、ツール等)によって、開発者の負荷は軽減される。 |
データの定義がシンプル、テストも容易 |
パフォーマンス |
構文の生成や解析がボトルネックとなりパフォーマンスに影響する場合も | 少量のデータ交換には応答が速く、効率的なメッセージ交換が可能 |
機能 |
高機能で複雑な処理がハンドリングできる | HTTPに依存するため、複雑な処理には向かない場合も |
図3:データ連携から見たSOAPとRESTの比較 |