Col113 introducing the hcl domino volt application i createdMasahiko Miyo
?
Masahiko Miyo is the CEO of ef Co., Ltd., which specializes in Notes and Domino development. He has developed several applications using Domino Volt, including a file transfer service, expense application, and library management system. In his presentation, he demonstrates the file transfer service app and explains how he used Domino and REST APIs to allow anonymous access, as this was not supported in Domino Volt 1.0.1. He concludes with tips for development and supplemental information on tools like FullCalendar that can make applications more powerful.
2. ?2015 ef Co., Ltd. All rights Reserved.
e f f e c t f o r c e
免責事項について
?本資料は、個人的な見解によるものです。情報の内容に
ついては万全を期しておりますが、その内容を保証する
ものではありません。
?本資料の情報は、使?先の責任において使?されるべき
ものであることを、あらかじめご了承ください。
?執筆者の承諾なしに、コピー、複製、他のメディアに転
載する事はご遠慮ください。
?当資料に記載された製品名または会社名はそれぞれの各
社の商標または登録商標です。
- 2 -
3. ?2015 ef Co., Ltd. All rights Reserved.
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
- 3 -
ef-info@effect-force.co.jp
自己紹介
のおつ 検索
4. ?2015 ef Co., Ltd. All rights Reserved.
e f f e c t f o r c e
アジェンダ
? RESTとは?
? RESTサービス
? JSONについて
? Dominoアクセスサービス
? Dominoアクセスサービス
? Notes/Dominoの設定
? サンプルURL
? XPagesへの応用
? RESTコントロールを使った例
? OnTime OpenAPIを使った例
? まとめ
? 注意事項、参考情報
- 4 -
5. ?2015 ef Co., Ltd. All rights Reserved.
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(削除)のこと
- 5 -
6. ?2015 ef Co., Ltd. All rights Reserved.
e f f e c t f o r c e
RESTとは?
? JSONについて
? 正式名称は、「JavaScript Object Notation」
? JavaScriptにおけるオブジェクトの表記法をベースとした軽
量なデータ記述言語である。
? JavaScript専?ではなく、様々なソフトウェア間でデータの受
け渡しができるように設計されている
? 書式はXMLに比べて、かなり簡略化されている。
? オブジェクトは{}で囲む
? 配列は[]で囲む
? オブジェクトの要素は、:で区切る
- 6 -
7. ?2015 ef Co., Ltd. All rights Reserved.
e f f e c t f o r c e
RESTとは?
? JSONのデータサンプル
{
"name" : "Masahiko Miyo",
"age" : 45,
"male" : true,
"emails" : ["m.miyo@effect-force.co.jp", "guylocke34@gmail.com"],
"address" : {
"street" : "3-13-16 Mita",
"zipCode" : "108-0073",
"city" : "Minato-Ku",
"country" : "Japan",
"country-knj" : "?u65e5?u672c"
}
}
- 7 -
1. 項目名:値という形で記述する
2. 項目名は“”(ダブルクォーテーション)で囲うこと
3. 値は、文字列、数値、日付/時刻、論理値等を記述可能
4. 日本語はUnicodeでエンコードすること
5. 配列は、[]で囲うこと
6. 項目名の大文字小文字は区別されるので注意すること
Unicodeで”日本”と書いてある
数値や論理値も扱える
8. ?2015 ef Co., Ltd. All rights Reserved.
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を採?
- 8 -
9. ?2015 ef Co., Ltd. All rights Reserved.
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が導入されている必要があ
ります。
- 9 -
10. ?2015 ef Co., Ltd. All rights Reserved.
e f f e c t f o r c e
Dominoアクセスサービス
? Notes/Dominoの設定(2)
? サービスを適?したいNotesアプリケーションの「データ
ベースプロパティ」を開きます。
? 一番右の[詳細]タブを開きます。
? 「IBM Domino データサービス
を許可」の値を「ビューと文書」
に変更します。
- 10 -
11. ?2015 ef Co., Ltd. All rights Reserved.
e f f e c t f o r c e
Dominoアクセスサービス
? Notes/Dominoの設定(3)
? サービスを適?したいNotesアプリケーションの「ビュー」
(もしくはフォルダ)をDomino Designerで開きます。
? ビュープロパティにある右から二番目の[詳細]タブを開きま
す。
? 「IBM Domino データサービスの操作を許可」にチェック
をつけます。
? ビューを保存します。
- 11 -
? 文書情報へとアクセスするのに「フォーム」に対して、Domino
データサービスの設定は必要ない。
→設定する箇所がない
12. ?2015 ef Co., Ltd. All rights Reserved.
e f f e c t f o r c e
Dominoアクセスサービス
? DominoでのJSONのデータサンプル
- 12 -
[
{
"@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"
}
]
13. ?2015 ef Co., Ltd. All rights Reserved.
e f f e c t f o r c e
Dominoアクセスサービス
? サンプルURL
? Webブラウザで、下記のURLを入力してみよう
? IEの場合、ファイルを保存するかどうか聞かれるので保存する
- 13 -
1. Notesアプリケーションの一覧とは、「タイトル」、「ファイル名」、「レプリカID」等を指す
2. ?page=nは複数ページにまたがる場合に利?可能(表示したいページ数を指定する)
3. RESTアクセスを許可していないビューのUNIDを指定すると、「HTTP403」エラーになる
4. カレンダーのRESTサービスはIBM Domino 9.0.1から利?可能
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
14. ?2015 ef Co., Ltd. All rights Reserved.
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データを取得する
方法だけ記述すれば良くなる
? 設定方法は次ページ参照
- 14 -
15. ?2015 ef Co., Ltd. All rights Reserved.
e f f e c t f o r c e
XPagesへの応?
? RESTコントロールの設定例
- 15 -
№ カテゴリ名称 項目名称 値
1 基本 id restService1(任意の値)
2 pathInfo restData(任意の値)
3 service xe:customRestService
4 contentType application/json
5 doGet *下図参照
doGetの記述サンプル
16. ?2015 ef Co., Ltd. All rights Reserved.
e f f e c t f o r c e
XPagesへの応?
? JSONへのアクセス方法
- 16 -
下図は、お天気Webサービスにアクセスしたときのレスポンス(JSONで返ってくる)
このページは、前述したRESTコントロールで取得するようにしてある
17. ?2015 ef Co., Ltd. All rights Reserved.
e f f e c t f o r c e
XPagesへの応?
? サンプル画面
? XAgentで取得した天気予報データを利?してXPagesに組み
込んだサンプル
? [天気情報検索]ボタンのプログラムは昨年紹介したCSJSを流?。
- 17 -
【検索プログラムの大まかな流れ】
1. エンドポイント(HTTPアクセスするURL)を設定
? この時、固有なキーなども同時に設定する
2. XMLHttpRequestの定義
3. HTTPリクエストの内容設定
? リクエストヘッダやメソッドの種類、リクエストのJSONなども設定
4. HTTP送信
5. コールバック関数の定義
? HTTP通信の結果によって、実行するロジックを記述
18. ?2015 ef Co., Ltd. All rights Reserved.
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の書式がわかるようになっている
- 18 -
19. ?2015 ef Co., Ltd. All rights Reserved.
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サービスと同様の記述で実行可能!
- 19 -
20. ?2015 ef Co., Ltd. All rights Reserved.
e f f e c t f o r c e
XPagesへの応?
? デモ(動作確認)
? OnTime OpenAPIのサンプルプログラムは、映像で見ま
しょう?
- 20 -
21. ?2015 ef Co., Ltd. All rights Reserved.
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の取得方法が簡単にわ
かる!
- 21 -
22. ?2015 ef Co., Ltd. All rights Reserved.
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の仕様が変わることにより、データの取得方法が変わる場
合がある。
- 22 -
23. ?2015 ef Co., Ltd. All rights Reserved.
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
- 23 -
24. ?2015 ef Co., Ltd. All rights Reserved.
e f f e c t f o r c e
- 24 -
ご清聴ありがとうございました
REST APIを覚えて使ってね?