資料 - Teamstudio

2015年6月
XPagesでRESTを使ってみよう
株式会社エフ マネージャー
御代 政彦(みよ まさひこ)
e f f e c t
f o r c e
免責事項について
 本資料は、個人的な見解によるものです。情報の内容に
ついては万全を期しておりますが、その内容を保証する
ものではありません。
 本資料の情報は、使⽤先の責任において使⽤されるべき
ものであることを、あらかじめご了承ください。
 執筆者の承諾なしに、コピー、複製、他のメディアに転
載する事はご遠慮ください。
 当資料に記載された製品名または会社名はそれぞれの各
社の商標または登録商標です。
©2015 ef Co., Ltd. All rights Reserved.
-2-
e f f e c t
f o r c e
自己紹介
まだまだ認知度が低いので…
御代 政彦(Miyo Masahiko)
2011年12月からIBM Champion for ICSをやってます
Twitter:@guylocke
Facebook:guylocke34
ブログ:http://guylocke.blogspot.jp
のおつ
検索
[email protected]
©2015 ef Co., Ltd. All rights Reserved.
-3-
e f f e c t
f o r c e
アジェンダ

RESTとは?
 RESTサービス
 JSONについて

Dominoアクセスサービス
 Dominoアクセスサービス
 Notes/Dominoの設定
 サンプルURL

XPagesへの応用
 RESTコントロールを使った例
 OnTime OpenAPIを使った例

まとめ
 注意事項、参考情報
©2015 ef Co., Ltd. All rights Reserved.
-4-
e f f e c t
f o r c e
RESTとは?

RESTサービス
 正式名称は、「REpresentational State Transfer」
 直訳すると、「具象的な状態の転送」(よく分からん…)
 パラメータを指定して特定のURLにHTTPでアクセスすると、
狭義の意味としては、XMLで記述されたメッセージが送られて
くるインターフェースを指す。
 HTTP ベースの軽量なWeb API を提供している
 データにはXML やJSON などの形式を利⽤
 HTTP のGET/POST/PUT/DELETE メソッドでCRUD 操作を
実現

CRUD…Create(作成)、 Read(読み込み)、 Update(更
新)、 Delete(削除)のこと
©2015 ef Co., Ltd. All rights Reserved.
-5-
e f f e c t
f o r c e
RESTとは?

JSONについて
 正式名称は、「JavaScript Object Notation」
 JavaScriptにおけるオブジェクトの表記法をベースとした軽
量なデータ記述言語である。

JavaScript専⽤ではなく、様々なソフトウェア間でデータの受
け渡しができるように設計されている
 書式はXMLに比べて、かなり簡略化されている。
 オブジェクトは{}で囲む
 配列は[]で囲む
 オブジェクトの要素は、:で区切る
©2015 ef Co., Ltd. All rights Reserved.
-6-
e f f e c t
f o r c e
RESTとは?

JSONのデータサンプル
{
"name" : "Masahiko Miyo",
"age" : 45,
数値や論理値も扱える
"male" : true,
"emails" : ["[email protected]", "[email protected]"],
"address" : {
"street" : "3-13-16 Mita",
"zipCode" : "108-0073",
"city" : "Minato-Ku",
"country" : "Japan",
"country-knj" : "¥u65e5¥u672c"
}
Unicodeで”日本”と書いてある
}
1.
2.
3.
4.
5.
6.
項目名:値という形で記述する
項目名は“”(ダブルクォーテーション)で囲うこと
値は、文字列、数値、日付/時刻、論理値等を記述可能
日本語はUnicodeでエンコードすること
配列は、[]で囲うこと
項目名の大文字小文字は区別されるので注意すること
©2015 ef Co., Ltd. All rights Reserved.
-7-
e f f e c t
f o r c e
Dominoアクセスサービス

Dominoアクセスサービス
 Domino 8.5.3 Upgrade Pack1から採⽤されたDominoの
データにアクセスするためのREST API




Domino上のNotesアプリケーションへHTTPプロトコルを利⽤
してアクセスするためのサービス
Notesアプリケーション、ビュー(フォルダ含む)、文書にア
クセス可能
データの作成、読込、更新、削除(CRUD)をサポート
データフォーマットに、JavaScript からの操作が効率的な
JSONを採⽤
©2015 ef Co., Ltd. All rights Reserved.
-8-
e f f e c t
f o r c e
Dominoアクセスサービス

Notes/Dominoの設定(1)
 Dominoディレクトリにあるサーバ文書の[インターネットプ
ロトコル]-[Domino Web Engine]タブを開く。
 「Domino アクセスサービス」の「有効なサービス」にサー
ビス名を設定する。

2015年6月の時点で設定可能なのは「Data, TravelerAdmin,
Calendar, Mail, FreeBusy」。
 サーバ文書の保存後はサーバコンソールで
tell http refresh
と入力する。
「TravelerAdmin」はIBM Notes Travelerをイン
ストールすると、自動で設定されます。
IBM Domino 9.0.1以降のみで有効
「Mail」及び「FreeBusy」サービスの利用は
Extension Library 9.0.1が導入されている必要があ
ります。
©2015 ef Co., Ltd. All rights Reserved.
-9-
e f f e c t
f o r c e
Dominoアクセスサービス

Notes/Dominoの設定(2)
 サービスを適⽤したいNotesアプリケーションの「データ
ベースプロパティ」を開きます。
 一番右の[詳細]タブを開きます。
 「IBM Domino データサービス
を許可」の値を「ビューと文書」
に変更します。
©2015 ef Co., Ltd. All rights Reserved.
- 10 -
e f f e c t
f o r c e
Dominoアクセスサービス

Notes/Dominoの設定(3)
 サービスを適⽤したいNotesアプリケーションの「ビュー」
(もしくはフォルダ)をDomino Designerで開きます。
 ビュープロパティにある右から二番目の[詳細]タブを開きま
す。
 「IBM Domino データサービスの操作を許可」にチェック
をつけます。
 ビューを保存します。
 文書情報へとアクセスするのに「フォーム」に対して、Domino
データサービスの設定は必要ない。
→設定する箇所がない
©2015 ef Co., Ltd. All rights Reserved.
- 11 -
e f f e c t
f o r c e
Dominoアクセスサービス

DominoでのJSONのデータサンプル
[
{
"@title":"Administration Requests",
"@filepath":"admin4.nsf",
"@replicaid":"49257B45034CEF77",
"@template":"StdR4AdminRequests",
"@href":"¥/admin4.nsf¥/api¥/data¥/collections"
},
{
"@title":"¥u30D1¥u30B9¥u30EF¥u30FC¥u30C9¥u3042¥u308A¥u306A¥u3057¥u30C6¥u30B9¥u3
0C8",
"@filepath":"abcdefg.nsf",
"@replicaid":"492576AF0007568C",
"@template":"",
"@href":"¥/abcdefg.nsf¥/api¥/data¥/collections"
}
]
©2015 ef Co., Ltd. All rights Reserved.
- 12 -
e f f e c t
f o r c e
Dominoアクセスサービス

サンプルURL
 Webブラウザで、下記のURLを入力してみよう
 IEの場合、ファイルを保存するかどうか聞かれるので保存する
No.
内容
URL
1
DominoサーバーのNotesアプ
リケーションの一覧
http:// Dominoのホスト名/api/data
2
ノーツDBのRESTサービス
チェック
http://Dominoホスト名/hoge.nsf/api/data/collections?page=n
3
ビューのチェック
http:// Dominoのホスト名/hoge.nsf/api/data/collections/unid/ビューUNID
4
文書のチェック
http:// Dominoのホスト名/hoge.nsf/api/data/documents/unid/文書UNID
5
指定したユーザのカレンダー
のイベントの一覧
http://Dominoのホスト名/メールDB名/api/calendar/events
6
指定したカレンダー文書の内
容
http://Dominoのホスト名/メールDB名/api/calendar/events/文書UNID-Lotus_Notes_Generated
1.
2.
3.
4.
Notesアプリケーションの一覧とは、「タイトル」、「ファイル名」、「レプリカID」等を指す
?page=nは複数ページにまたがる場合に利⽤可能(表示したいページ数を指定する)
RESTアクセスを許可していないビューのUNIDを指定すると、「HTTP403」エラーになる
カレンダーのRESTサービスはIBM Domino 9.0.1から利⽤可能
©2015 ef Co., Ltd. All rights Reserved.
- 13 -
e f f e c t
f o r c e
XPagesへの応⽤

RESTコントロールを使った例
 XAgentとlivedoor天気情報を使⽤して、JSONデータを取得
する

XAgentの内容については下記を参照
http://guylocke.blogspot.jp/2014/12/xagent.html

RESTコントロールを設置することで、JSONデータを取得する
方法だけ記述すれば良くなる
 設定方法は次ページ参照
©2015 ef Co., Ltd. All rights Reserved.
- 14 -
e f f e c t
f o r c e
XPagesへの応⽤

№
1
RESTコントロールの設定例
カテゴリ名称
基本
項目名称
値
id
restService1(任意の値)
2
pathInfo
restData(任意の値)
3
service
xe:customRestService
4
contentType
application/json
5
doGet
*下図参照
doGetの記述サンプル
©2015 ef Co., Ltd. All rights Reserved.
- 15 -
e f f e c t
f o r c e
XPagesへの応⽤

JSONへのアクセス方法
下図は、お天気Webサービスにアクセスしたときのレスポンス(JSONで返ってくる)
このページは、前述したRESTコントロールで取得するようにしてある
©2015 ef Co., Ltd. All rights Reserved.
- 16 -
e f f e c t
f o r c e
XPagesへの応⽤

サンプル画面
 XAgentで取得した天気予報データを利⽤してXPagesに組み
込んだサンプル

[天気情報検索]ボタンのプログラムは昨年紹介したCSJSを流⽤。
【検索プログラムの大まかな流れ】
1. エンドポイント(HTTPアクセスするURL)を設定

この時、固有なキーなども同時に設定する

リクエストヘッダやメソッドの種類、リクエストのJSONなども設定

HTTP通信の結果によって、実行するロジックを記述
2. XMLHttpRequestの定義
3. HTTPリクエストの内容設定
4. HTTP送信
5. コールバック関数の定義
©2015 ef Co., Ltd. All rights Reserved.
- 17 -
e f f e c t
f o r c e
XPagesへの応⽤

OnTime OpenAPIを使った例
 OnTime Group CalendarにもREST APIが実装されている
 OnTime Group Calendar API Explorer を試すためのサイト
 (Username: demo / Password: demo)
http://demo.ontimesuite.com/apiexplorer

自社でOnTimeを導入している場合は以下のURLでテスト可能
http://Dominoのホスト名/OnTimeクライアントDBのパス名

API Explorerを使うことで、RequestのURLやRequest⽤の
JSONの書式がわかるようになっている
©2015 ef Co., Ltd. All rights Reserved.
- 18 -
e f f e c t
f o r c e
XPagesへの応⽤

OnTime OpenAPIを使った例
 OnTime Open APIをXPagesで利⽤したサンプルプログラム
1. OnTimeのログイン情報を持つTokenの取得
2. OnTimeのUserIDの取得
3. 指定した日付のスケジュール文書のUNIDの取得
4. 指定した文書UNIDのカレンダー情報の取得
5. 設定した内容をスケジュール文書に書き込む
 OnTime 経由(Sync機能)で、ノーツと即時連携可能!
1. OnTime Group Calendarに即時に反映される
2. OnTimeを通じて、ノーツのスケジュール文書に即時に反映さ
れる

XPagesならCSJSで記述可能!
1.
前述したお天気Webサービスと同様の記述で実行可能!
©2015 ef Co., Ltd. All rights Reserved.
- 19 -
e f f e c t
f o r c e
XPagesへの応⽤

デモ(動作確認)
 OnTime OpenAPIのサンプルプログラムは、映像で見ま
しょう♪
©2015 ef Co., Ltd. All rights Reserved.
- 20 -
e f f e c t
f o r c e
まとめ

Notes/DominoでRESTを利用する
 Notesアプリケーションのデータを他のWebシステムで動的
に再利⽤することが可能

従来は、CSVやExcel等の静的な受け渡しのみだった
 他のWebシステムのデータをXPages経由で、Dominoで利
⽤することが可能

JavaScriptを利⽤出来るようになったので敷居が少し低くなっ
た
 RESTコントロールを使うことで、JSONの取得が簡単に!
 データ取得の記述のみで良い!
 OnTime OpenAPIは利用方法が簡単!
 API Explorerを利⽤することで、JSONの取得方法が簡単にわ
かる!
©2015 ef Co., Ltd. All rights Reserved.
- 21 -
e f f e c t
f o r c e
まとめ

RESTを利用する際の注意事項
 同一オリジンのサイト(プロトコル、ドメイン、ポート番号
が同じである)でないと、リソースへのアクセスができない

Cross-Origin Resource Sharing(CORS)の有効化が必要
 JSONP(JSON with padding)を利⽤することでも回避可能
 XAgentを使ってサーバー経由で取得してもよい
 外部のWebサービスの場合、仕様の確認が大事
 ぐるなびAPIやOnTime OpenAPIでは、アプリケーション⽤の
キーが必要になるので、別途取得する必要がある。
 APIの仕様が変わることにより、データの取得方法が変わる場
合がある。
©2015 ef Co., Ltd. All rights Reserved.
- 22 -
e f f e c t
f o r c e
まとめ

DAS/REST関連のWebサイト
 IBM Domino Access Services 9.0.1
 IBM Notes and Domino Application Development wiki内のサイト(英語)
http://ibm.co/1wGMxzh

デモで利用したツール/サービス
 REST Client
 Firefoxのアドオン。Response Headersの詳細も確認できる。日本語はUnicode
をデコード表示してくれるので分かり易い。
http://restclient.net/
 JSON Viewer
 Firefoxのアドオン。JSONドキュメントをブラウザー内で階層化表示してくれる。
ダブルバイトもデコードしてくれるので、とても見やすい。
http://jsonview.com/
 Weather Hacks(お天気Webサービス )
 Livedoorのお天気Webサービス。全国142カ所の今日・明日・あさっての天気予
報・予想気温と都道府県の天気概況情報を提供している。
http://weather.livedoor.com/weather_hacks/webservice
 OnTime Group Calendar API Explorer
 OnTime Group Calendar内にあるOnTime OpenAPIをエミュレートするための
ツール。
http://demo.ontimesuite.com/apiexplorer
©2015 ef Co., Ltd. All rights Reserved.
- 23 -
e f f e c t
f o r c e
ご清聴ありがとうございました
REST APIを覚えて使ってね♪
©2015 ef Co., Ltd. All rights Reserved.
- 24 -