AndroidアプリでREST経由でNotesデータにアクセスするXPagesでスマホWebアプリ開発入門(番外編)(1/3 ページ)

XPagesから離れて、AndroidのネイティブアプリからREST APIを呼び出してNotes/Dominoデータにアクセスします。

» 2013年04月22日 18時00分 公開
[佐藤淳日本アイ・ビー・エム Lotusテクノロジー開発]

 前回の記事「ハイブリッドアプリ化するPhoneGapやMEAPを使う新時代のアプリ開発手法」ではLotus Notes/Dominoアプリのデータにモバイルデバイスからアクセスするための、さまざまなモバイルアプリ開発手法を紹介しました。今回は、その中でも紹介したLotus Notes/DominoアプリのデータへのREST APIによるアクセスを実現する「Dominoデータサービス」について解説します。番外編としてXPagesから離れて、AndroidのネイティブアプリからREST APIを呼び出してNotes/Dominoデータにアクセスします。

そもそもDominoデータサービスとは

 DominoデータサービスはLotus Domino8.5.3 Upgrade Pack 1で提供されているサーバサイドの新機能です。アプリ開発者は、これを利用することによってHTTP/HTTPSプロトコルを用いて、Lotus Notes/Dominoアプリ内に格納されているデータを取得したり、逆にデータを格納したりすることができます。

 Dominoデータサービスは、Lotus DominoやLotus Notes/Dominoアプリに格納されているデータにアクセスするために、以下のようなリソースを提供しています。

  1. Lotus Domino上に展開されているアプリのリスト(データベースコレクションリソース)
  2. アプリが持つビューやフォルダのリスト(ビュー・フォルダコレクションリソース)
  3. アプリのビューやフォルダに格納されている文書のリスト(ビュー・フォルダエントリーズリソース)
  4. アプリのビューやフォルダに格納されている文書の情報(ビュー・フォルダエントリリソース)
  5. アプリに格納されている文書のリスト(ドキュメントコレクションリソース)
  6. 文書に格納されているデータの詳細情報(ドキュメントリソース)
  7. ビューやフォルダが持つカラムの設計情報(ビュー・フォルダデザインリソース)

 アプリ、ビュー、フォルダに関してはデータの取得が行え、文書に関してはデータの取得に加えて、データの新規作成、既存データの更新および削除といった、いわゆるCRUD(Create、Read、Update、Delete)操作が行えます。

 Dominoデータサービスで取り扱うデータのフォーマットにはJSON(JavaScript Object Notation)が採用されています。データの取得には、HTTP/HTTPSのGETメソッドを用いてリクエストを発行します。正しく処理が完了するとHTTPのステータスコードである「200」(OK)とともに要求したデータがJSONデータとして返ってきます(図1)。

図1 Dominoデータサービスの概要

 文書を作成する際には、作成したい文書のデータをJSONデータで定義してPOSTメソッドでリクエストを発行します。正しく文書が作成されるとステータスコード「201」(Created)が返ってきます。同様に、既存文書を更新したい場合にはPUTメソッドまたはPATCHメソッド、削除したい場合にはDELETEメソッドを用います。

 つまり、Dominoデータサービスを利用することによって、一般的なREST APIでLotus Notes/Dominoアプリのデータにアクセス可能になります。JavaやJavaScriptなどを利用して作られている外部アプリとLotus Notes/Dominoアプリとの連携を実現する際に、Dominoデータサービスは便利なインターフェイスとなります。

 例えば、Java EEで作られたWebアプリで、Lotus Notes/Dominoアプリのデータを表示したり、何らかの処理結果をLotus Notes/Dominoアプリに格納したりといった機能を提供できます。同様に、Lotus Notes/Dominoアプリへのアクセスを実現するネイティブまたはハイブリッドのモバイルアプリを開発する際にも利用できます。

OSGiとApache Winkを使っているDominoデータサービスの仕組み

 DominoデータサービスはLotus Dominoに搭載されているOSGiコンテナ上にバンドルとして実装されています。これはサーバサイドでXPagesを実行する際に利用されるランタイムの実装と同様の仕組みです。

 Lotus DominoのOSGiコンテナ上にバンドルとしてデプロイされているサービスは、同じくLotus Domino上にデプロイされているブリッジコンポーネントを通じてLotus Dominoが提供するHTTPエンジンとの連携が可能になっています。

 つまり、外部アプリはLotus DominoのHTTPタスクを経由してOSGiコンテナ上にデプロイされているサービスにアクセスできます。Dominoデータサービスも同様にOSGiバンドル上にデプロイされているので、Lotus DominoのHTTPタスクを経由して利用できるように設計されています。

 Lotus DominoのOSGiコンテナ上にはRESTベースのWebサービスを実現するためのフレームワークである「Apache Wink」を搭載しており、Dominoデータサービスのインターフェイスは、そのフレームワーク上に実装されています。

 Dominoデータサービスは外部アプリからデータ要求などのリクエストがあると、Notes Java APIを利用して対象となるLotus Notes/Dominoアプリにアクセスし必要とされるデータを取得します。取得されたデータはサービス内部に実装されているデータコンバータによってJSON形式のデータに変換され、それがレスポンス内に含まれてリクエスト元に返されます(図2)。

図2 Dominoデータサービスの仕組み

 Dominoデータサービスを利用することでLotus Notes/Dominoアプリに格納されているデータの基本的な操作が可能ですが、Lotus DominoのOSGiコンテナ上に搭載されているApache Winkを利用して、独自のREST APIも作成可能です。

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。