SlideShare a Scribd company logo
1 of 28
Download to read offline
A-5

XPagesでRESTを使ってみたら、
こんなんだった
株式会社エフ マネージャー
御代 政彦(みよ まさひこ)
e f f e c t

f o r c e

免責事項について(お約束です)
 本資料は、個人的な見解によるものです。情報の内容に

ついては万全を期しておりますが、その内容を保証する
ものではありません。
 本資料の情報は、使⽤先の責任において使⽤されるべき
ものであることを、あらかじめご了承ください。
 執筆者の承諾なしに、コピー、複製、他のメディアに転
載する事はご遠慮ください。
 当資料に記載された製品名または会社名はそれぞれの各

社の商標または登録商標です。

©2013 ef Co., Ltd. All rights Reserved.

- 2-
e f f e c t

f o r c e

アジェンダ


RESTとは?
 RESTサービス
 Notes/DominoでのRESTサービス
 JSONについて



Notes/Dominoでの設定方法
 Dominoディレクトリ
 Notesアプリケーション
 デモ(動作確認)



アプリケーションへの組み込み
 XPages Extension Libraryを使⽤した場合
 クライアントJavaScriptを使⽤した場合



Q&A

©2013 ef Co., Ltd. All rights Reserved.

- 3-
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(削除)のこと

©2013 ef Co., Ltd. All rights Reserved.

- 4-
e f f e c t

f o r c e

RESTとは?


Notes/DominoでのRESTサービス
 Domino上のNotesアプリケーションへHTTPプロトコルを利

⽤してアクセスするためのサービス
 Notesアプリケーション、ビュー、フォルダ、文書にアクセ
ス可能


サーバ単位、アプリケーション単位で制御が可能

 データの作成、読込、更新、削除(CRUD)をサポート
 データフォーマットに、JavaScript からの操作が効率的な

JSONを採⽤

※「テクてくロータス 2012年3月度」資料より抜粋

©2013 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に比べて、かなり簡略化されている。
 オブジェクトは{}で囲む
 配列は[]で囲む
 オブジェクトの要素は、:で区切る
【JSONデータのサンプル】
[
{
"@modified":"2013-06-16T03:37:44Z",
"@unid":"3D50EEFC6D5ECA1349257B8C00135AAB",
"@href":"http:¥/¥/domino90se.eflab.local:80¥/Xpages¥/ZipCode.nsf¥/api¥/data¥/documents¥/unid¥/3D50EEFC6D5ECA1349257B8C00135AAB"
}
]

©2013 ef Co., Ltd. All rights Reserved.

- 6-
e f f e c t

f o r c e

Notes/Dominoでの設定方法


Dominoディレクトリ
 サーバ文書を編集モードで開く。
 [インターネットプロトコル]-[Domino Web Engine]タブ

を開く。
 「Domino アクセスサービス」の「有効なサービス」
に”Data”と入力する。
 サーバ文書を保存する。
 サーバコンソールで
tell http refresh

と入力する。

©2013 ef Co., Ltd. All rights Reserved.

- 7-
e f f e c t

f o r c e

Notes/Dominoでの設定方法


Notesアプリケーション-その1
 サービスを適⽤したいノーツアプリケーションの「データ

ベースプロパティ」を開く。
 一番右の[詳細]タブを開く。
 「IBM Domino データサー
ビスを許可」の値を「ビュー
と文書」に変更する。

©2013 ef Co., Ltd. All rights Reserved.

- 8-
e f f e c t

f o r c e

Notes/Dominoでの設定方法


Notesアプリケーション-その2
 サービスを適⽤したいノーツアプリケーションの「ビュー」

をDomino Designerで開く。
 ビュープロパティにある右から二番目の[詳細]タブを開く。
 「IBM Domino データサービスの操作を許可」にチェック
をつける。
 ビューを保存する。

©2013 ef Co., Ltd. All rights Reserved.

- 9-
e f f e c t

f o r c e

Notes/Dominoでの設定方法


デモ(動作確認)
 実際のノーツアプリケーションを見て、動作を確認してみま

しょう!

1.ノーツDBのRESTサービスチェック用URL
http://Dominoのホスト名/Xpages/ZipCode.nsf/api/data/collections
2.($All)ビューのチェック用URL
http:// Dominoのホスト名/Xpages/ZipCode.nsf/api/data/collections/unid/ビューのUNID
3.文書のチェック用URL
http:// Dominoのホスト名/Xpages/ZipCode.nsf/api/data/documents/unid/文書のUNID
4.NGのチェック用URL
http:// Dominoのホスト名/Xpages/ZipCode.nsf/api/data/collections/unid/RESTを許可していないビューのUNID
→HTTP403エラーになります。

©2013 ef Co., Ltd. All rights Reserved.

- 10 -
e f f e c t

f o r c e

アプリケーションへの組み込み


XPages Extension Libraryを使用した場合
 郵便番号を入力したら、当てはまる住所情報を表示する
 事前準備として、「rsTest」(任意)という名前でXPageを作
成する
 「inputText1」という名前で編集ボックスを配置する
 ボタンコントロールを配置して、イベントのonClickにサーバオ
プションを「すべて更新」にする

©2013 ef Co., Ltd. All rights Reserved.

- 11 -
e f f e c t

f o r c e

アプリケーションへの組み込み


XPages Extension Libraryを使用した場合
 [データアクセス]-[RESTサービス]コントロール
 プロパティビューの「すべてのプロパティ」を下表のとおりに
設定する

№
1

カテゴリ名称
基本

項目名称

値

service

xe:viewItemFileService

2

contentType

application/json

3

databaseName

値を取得したいNotesアプリケーションのファイルパス
(自DBの場合は、空白で良い)

4

defaultColumns

true

5

keys

サーバサイドJavaScriptで、下記の内容を入力する
getComponent("inputText1").getValue()

6

viewName

「databaseName」で指定したNotesアプリケーションに
あるビューの名前

©2013 ef Co., Ltd. All rights Reserved.

- 12 -
e f f e c t

f o r c e

アプリケーションへの組み込み


XPages Extension Libraryを使用した場合
 [Dojo レイアウト]-[Dojoデータグリッド]コントロール
 プロパティビューの「すべてのプロパティ」を下表のとおりに
設定する

№

カテゴリ名称

項目名称

値

1

データ

storeComponentId

「RESTサービス」コントロールの「ID」名を選択肢か
ら、選択する

2

基本

autoHeight

1
※検索結果を表示する行数を指定している

©2013 ef Co., Ltd. All rights Reserved.

- 13 -
e f f e c t

f o r c e

アプリケーションへの組み込み


XPages Extension Libraryを使用した場合
 [Dojoレイアウト]-[Dojoデータグリッド列]コントロール
 「Dojoデータグリッド」コントロール内に配置する
 プロパティビューの「すべてのプロパティ」を下表のとおりに
設定する

№

カテゴリ名称

項目名称

値

1

データ

field

JSONのデータを表示するビュー列のプログラム名

2

基本

label

列名として表示したい値

3

形式

width

auto
※データの値によって、自動的に幅を調整してくれる





「Dojoデータグリッド列」コントロールは、必要数分配置する
今回の場合、「郵便番号」「都道府県」「市区町村」「町域
名」の4つ分を配置する

©2013 ef Co., Ltd. All rights Reserved.

- 14 -
e f f e c t

f o r c e

アプリケーションへの組み込み


XPages Extension Libraryを使用した場合
 設定サンプルは下記の通り

©2013 ef Co., Ltd. All rights Reserved.

- 15 -
e f f e c t

f o r c e

アプリケーションへの組み込み


XPages Extension Libraryを使用した場合
 設定サンプルは下記の通り

©2013 ef Co., Ltd. All rights Reserved.

- 16 -
e f f e c t

f o r c e

アプリケーションへの組み込み


XPages Extension Libraryを使用した場合
 設定サンプルは下記の通り

©2013 ef Co., Ltd. All rights Reserved.

- 17 -
e f f e c t

f o r c e

アプリケーションへの組み込み


XPages Extension Libraryを使用した場合
 設定サンプルは下記の通り

©2013 ef Co., Ltd. All rights Reserved.

- 18 -
e f f e c t

f o r c e

アプリケーションへの組み込み


XPages Extension Libraryを使用した場合
 画面サンプルは下記の通り

©2013 ef Co., Ltd. All rights Reserved.

- 19 -
e f f e c t

f o r c e

アプリケーションへの組み込み


クライアントJavaScriptを使用した場合
 XPageに特別なコントロールを配置する必要はな

い
 REST APIを使って、JSONデータを取得するため
のJavaScriptを記述する
 必要な情報は下記の通り




エンドポイント(endpoint)というURL情報
JSONから必要なデータを取得してくるための検索
⽤URLパラメータ

©2013 ef Co., Ltd. All rights Reserved.

- 20 -
e f f e c t

f o r c e

アプリケーションへの組み込み
クライアントJavaScriptを使用した場合


行

コード

1 // 送信先
2 var svn = "http://domino90se.eflab.local";
3 var dbn = "Xpages/ZipCode.nsf";
4 var endpoint = "/api/data/collections/unid/D76B3FEBE958BECF49257B8C00037E9D";
5

エンドポイントのURL
全JSONデータが表示される

6 // 入力した郵便番号
7 var skey = document.getElementById( "#{id:zip71}" ).value;
8
9 // URLを生成
10 var url = svn + "/" + dbn + endpoint + "?search=FIELD zip7 CONTAINS " + encodeURI(skey);
11

?search以降が検索用URLパ
ラメータ

12 // XMLHttpRequestを作成
13 try {
14

// Netscape, Firefoxなど

15

xmlhttp = new XMLHttpRequest();

16 } catch (e){
17
18

try {
xmlhttp = new ActiveXObject ( "Msxml2.XMLHTTP" );

©2013 ef Co., Ltd. All rights Reserved.

// IE

- 21 -
e f f e c t

f o r c e

アプリケーションへの組み込み


クライアントJavaScriptを使用した場合

行

コード

19

} catch (e){

20

try {

21

xmlhttp = new ActiveXObject ( "Microsoft.XMLHTTP" );

22

} catch (e){

23

// XMLHttpRequestの作成に失敗

24
25

// IE

}
}

26 }
27
28 // レスポンスを受け取った時に呼ばれるメソッドを指定
29 xmlhttp.onreadystatechange = method1;

30 xmlhttp.open( 'GET', url, true );
31 xmlhttp.setRequestHeader ( "Content-Type","text/json; charset=utf-8" );

RESTを使ったhttp通信

32
33 // RESTで送信
34 xmlhttp.send();
35
36

©2013 ef Co., Ltd. All rights Reserved.

- 22 -
e f f e c t

f o r c e

アプリケーションへの組み込み


クライアントJavaScriptを使用した場合

行

コード

37 function method1() {
38

// レスポンスの結果が正常の場合は、解析処理を行う

39

if ( xmlhttp.readyState == 4 && xmlhttp.status == 200 ) {

40

var ret = xmlhttp.responseText;

41

var obj = JSON.parse( ret );

42

RESTのコールバック関数

43

document.getElementById( "#{id:prefectures1}" ).value= obj[0]['Prefectures'];

44

document.getElementById( "#{id:cities1}" ).value= obj[0]['Cities'];

45

document.getElementById( "#{id:address1}" ).value= obj[0]['Address'];

46

}

47 }

©2013 ef Co., Ltd. All rights Reserved.

- 23 -
e f f e c t

f o r c e

アプリケーションへの組み込み


クライアントJavaScriptを使用した場合
 画面サンプルは下記の通り

©2013 ef Co., Ltd. All rights Reserved.

- 24 -
e f f e c t

f o r c e

まとめ


Notes/DominoでRESTを利用する意味
 Notesアプリケーションのデータを他のWebシステムで動的

に再利⽤することが可能


従来は、CSVやExcel等の静的な受け渡しのみだった(はず)

 他のWebシステムのデータを、XPagesを使うことにより、

Notes/Dominoで簡単に再利⽤することが可能


従来はJavaを使うといった高度な技術が必要だった

©2013 ef Co., Ltd. All rights Reserved.

- 25 -
e f f e c t

f o r c e

Q&A


質問ありますか?
 質問があれば、画面右側のチャットで、「Masahiko Miyo」

あてに送ってください。

©2013 ef Co., Ltd. All rights Reserved.

- 26 -
e f f e c t

f o r c e

自己紹介
今回のセッションに関するお問い合わせは、↓こちらまで↓
御代 政彦(みよ まさひこ)
Twitter:@guylocke
Facebook:guylocke34
ブログ:のおつ(http://guylocke.blogspot.jp)

XPagesはもちろん、Notes/Dominoに関する営業的なお問い合わせは、
株式会社エフ
ef-info@effect-force.co.jp
まで!
1. Dominoの構築、運⽤サポート
2. Notes/Dominoアドオン製品の開発
3. 社内で利⽤するNotes アプリケーションの設計、開発
等、etc…

©2013 ef Co., Ltd. All rights Reserved.

- 27 -
e f f e c t

f o r c e

ご清聴ありがとうございました
本日のXPagesDayは、
当セッションをもって終了です。
明日以降も多くのセッションがあるので、
ご期待ください!
※11/8(金)は、
オフラインでのセミナー&懇親会もあります。
今日、質問できなくても「Ask the “X”perts」で
質問できますので、奮ってご参加ください!
©2013 ef Co., Ltd. All rights Reserved.

- 28 -

More Related Content

What's hot

[Alfresco]ドキュメントライブラリのUIカスタマイズ
[Alfresco]ドキュメントライブラリのUIカスタマイズ[Alfresco]ドキュメントライブラリのUIカスタマイズ
[Alfresco]ドキュメントライブラリのUIカスタマイズ
Jun Terashita
 
Powershell勉強会 v2 (もっと新しいバージョンがあります)
Powershell勉強会 v2 (もっと新しいバージョンがあります)Powershell勉強会 v2 (もっと新しいバージョンがあります)
Powershell勉強会 v2 (もっと新しいバージョンがあります)
Tetsu Yama
 
Powershell勉強会 v3 (もっと新しいバージョンがあります)
Powershell勉強会 v3 (もっと新しいバージョンがあります)Powershell勉強会 v3 (もっと新しいバージョンがあります)
Powershell勉強会 v3 (もっと新しいバージョンがあります)
Tetsu Yama
 
Powershell 超絶基礎 勉強会 v1 (もっと新しいバージョンがあります)
Powershell 超絶基礎 勉強会 v1 (もっと新しいバージョンがあります)Powershell 超絶基礎 勉強会 v1 (もっと新しいバージョンがあります)
Powershell 超絶基礎 勉強会 v1 (もっと新しいバージョンがあります)
Tetsu Yama
 
RのffとbigmemoryとRevoScaleRとを比較してみた
RのffとbigmemoryとRevoScaleRとを比較してみたRのffとbigmemoryとRevoScaleRとを比較してみた
RのffとbigmemoryとRevoScaleRとを比較してみた
Kazuya Wada
 

What's hot (20)

Powershell勉強会 v5 (こちらが最新です。)
Powershell勉強会 v5 (こちらが最新です。)Powershell勉強会 v5 (こちらが最新です。)
Powershell勉強会 v5 (こちらが最新です。)
 
What's new! TwentyThirteen + WordPress3.6
What's new! TwentyThirteen + WordPress3.6What's new! TwentyThirteen + WordPress3.6
What's new! TwentyThirteen + WordPress3.6
 
[Alfresco]ドキュメントライブラリのUIカスタマイズ
[Alfresco]ドキュメントライブラリのUIカスタマイズ[Alfresco]ドキュメントライブラリのUIカスタマイズ
[Alfresco]ドキュメントライブラリのUIカスタマイズ
 
Powershell勉強会 v2 (もっと新しいバージョンがあります)
Powershell勉強会 v2 (もっと新しいバージョンがあります)Powershell勉強会 v2 (もっと新しいバージョンがあります)
Powershell勉強会 v2 (もっと新しいバージョンがあります)
 
ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装
 
Powershell勉強会 v3 (もっと新しいバージョンがあります)
Powershell勉強会 v3 (もっと新しいバージョンがあります)Powershell勉強会 v3 (もっと新しいバージョンがあります)
Powershell勉強会 v3 (もっと新しいバージョンがあります)
 
RのffでGLMしてみたけど...
RのffでGLMしてみたけど...RのffでGLMしてみたけど...
RのffでGLMしてみたけど...
 
PHPの今とこれから 2013
PHPの今とこれから 2013PHPの今とこれから 2013
PHPの今とこれから 2013
 
知って得する標準関数の使い方
知って得する標準関数の使い方知って得する標準関数の使い方
知って得する標準関数の使い方
 
運用構築技術者の為のPSプログラミング第1回
運用構築技術者の為のPSプログラミング第1回運用構築技術者の為のPSプログラミング第1回
運用構築技術者の為のPSプログラミング第1回
 
Powershell 超絶基礎 勉強会 v1 (もっと新しいバージョンがあります)
Powershell 超絶基礎 勉強会 v1 (もっと新しいバージョンがあります)Powershell 超絶基礎 勉強会 v1 (もっと新しいバージョンがあります)
Powershell 超絶基礎 勉強会 v1 (もっと新しいバージョンがあります)
 
FuelPHP Osu Nagoya vol.1
FuelPHP Osu Nagoya vol.1FuelPHP Osu Nagoya vol.1
FuelPHP Osu Nagoya vol.1
 
RのffとbigmemoryとRevoScaleRとを比較してみた
RのffとbigmemoryとRevoScaleRとを比較してみたRのffとbigmemoryとRevoScaleRとを比較してみた
RのffとbigmemoryとRevoScaleRとを比較してみた
 
SolidFire を Kibana(ELK Stack)で可視化(需要予測)する
SolidFire を Kibana(ELK Stack)で可視化(需要予測)するSolidFire を Kibana(ELK Stack)で可視化(需要予測)する
SolidFire を Kibana(ELK Stack)で可視化(需要予測)する
 
運用構築技術者の為のPSプログラミング第2回
運用構築技術者の為のPSプログラミング第2回運用構築技術者の為のPSプログラミング第2回
運用構築技術者の為のPSプログラミング第2回
 
Powershell勉強会 v4 (もっと新しいバージョンがあります。)
Powershell勉強会 v4 (もっと新しいバージョンがあります。)Powershell勉強会 v4 (もっと新しいバージョンがあります。)
Powershell勉強会 v4 (もっと新しいバージョンがあります。)
 
SecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのか
SecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのかSecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのか
SecurityとValidationの奇妙な関係、あるいはDrupalはなぜValidationをしたがらないのか
 
Powershell基礎_20180521用
Powershell基礎_20180521用Powershell基礎_20180521用
Powershell基礎_20180521用
 
10分でわかるFuelPHP @ 2011/12
10分でわかるFuelPHP @ 2011/1210分でわかるFuelPHP @ 2011/12
10分でわかるFuelPHP @ 2011/12
 
Fuel php osc tokyo2012
Fuel php osc tokyo2012Fuel php osc tokyo2012
Fuel php osc tokyo2012
 

Similar to XPagesでRESTを使ってみたら、こんなんだった

13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
Takayoshi Tanaka
 
AppExchangeコンソーシアム講演_20111013
AppExchangeコンソーシアム講演_20111013AppExchangeコンソーシアム講演_20111013
AppExchangeコンソーシアム講演_20111013
TerraSky
 
CMDBuildを中心とした運用管理自動化基盤OpenPIEの事例紹介
CMDBuildを中心とした運用管理自動化基盤OpenPIEの事例紹介CMDBuildを中心とした運用管理自動化基盤OpenPIEの事例紹介
CMDBuildを中心とした運用管理自動化基盤OpenPIEの事例紹介
OSSラボ株式会社
 
Azure サポート エンジニア直伝 ~ PowerShell 実践活用術 ~
Azure サポート エンジニア直伝 ~ PowerShell 実践活用術 ~Azure サポート エンジニア直伝 ~ PowerShell 実践活用術 ~
Azure サポート エンジニア直伝 ~ PowerShell 実践活用術 ~
ShuheiUda
 
TestFlight自動化でらくらくチームテスト
TestFlight自動化でらくらくチームテストTestFlight自動化でらくらくチームテスト
TestFlight自動化でらくらくチームテスト
Yoichiro Sakurai
 
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
linzhixing
 

Similar to XPagesでRESTを使ってみたら、こんなんだった (20)

AppFormix勉強会資料
AppFormix勉強会資料AppFormix勉強会資料
AppFormix勉強会資料
 
perfを使ったpostgre sqlの解析(後編)
perfを使ったpostgre sqlの解析(後編)perfを使ったpostgre sqlの解析(後編)
perfを使ったpostgre sqlの解析(後編)
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
 
perfを使ったPostgreSQLの解析(後編)
perfを使ったPostgreSQLの解析(後編)perfを使ったPostgreSQLの解析(後編)
perfを使ったPostgreSQLの解析(後編)
 
show コマンド結果をパースする方法あれこれ #npstudy
show コマンド結果をパースする方法あれこれ #npstudyshow コマンド結果をパースする方法あれこれ #npstudy
show コマンド結果をパースする方法あれこれ #npstudy
 
Ansible2.0と実用例
Ansible2.0と実用例Ansible2.0と実用例
Ansible2.0と実用例
 
Lithium Labo #1
Lithium Labo #1Lithium Labo #1
Lithium Labo #1
 
ET2016 組込みシステムに適した コンポーネントシステムTECSの最新状況
ET2016 組込みシステムに適したコンポーネントシステムTECSの最新状況ET2016 組込みシステムに適したコンポーネントシステムTECSの最新状況
ET2016 組込みシステムに適した コンポーネントシステムTECSの最新状況
 
Windows Azure PHP Tips
Windows Azure PHP Tips Windows Azure PHP Tips
Windows Azure PHP Tips
 
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメXamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
 
[Japan Tech summit 2017] DEP 006
[Japan Tech summit 2017] DEP 006[Japan Tech summit 2017] DEP 006
[Japan Tech summit 2017] DEP 006
 
AppExchangeコンソーシアム講演_20111013
AppExchangeコンソーシアム講演_20111013AppExchangeコンソーシアム講演_20111013
AppExchangeコンソーシアム講演_20111013
 
CMDBuildを中心とした運用管理自動化基盤OpenPIEの事例紹介
CMDBuildを中心とした運用管理自動化基盤OpenPIEの事例紹介CMDBuildを中心とした運用管理自動化基盤OpenPIEの事例紹介
CMDBuildを中心とした運用管理自動化基盤OpenPIEの事例紹介
 
Azure サポート エンジニア直伝 ~ PowerShell 実践活用術 ~
Azure サポート エンジニア直伝 ~ PowerShell 実践活用術 ~Azure サポート エンジニア直伝 ~ PowerShell 実践活用術 ~
Azure サポート エンジニア直伝 ~ PowerShell 実践活用術 ~
 
TestFlight自動化でらくらくチームテスト
TestFlight自動化でらくらくチームテストTestFlight自動化でらくらくチームテスト
TestFlight自動化でらくらくチームテスト
 
夜子まま塾講義10(画面の呼び出し)
夜子まま塾講義10(画面の呼び出し)夜子まま塾講義10(画面の呼び出し)
夜子まま塾講義10(画面の呼び出し)
 
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
 
BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)
BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)
BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)
 
Android T2 on cloud
Android T2 on cloudAndroid T2 on cloud
Android T2 on cloud
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
 

More from Masahiko Miyo

More from Masahiko Miyo (14)

Notes/Domino 開発tipsサービスについて
Notes/Domino 開発tipsサービスについてNotes/Domino 開発tipsサービスについて
Notes/Domino 開発tipsサービスについて
 
私が作成したVoltアプリの紹介
私が作成したVoltアプリの紹介私が作成したVoltアプリの紹介
私が作成したVoltアプリの紹介
 
Col113 introducing the hcl domino volt application i created
Col113 introducing the hcl domino volt application i createdCol113 introducing the hcl domino volt application i created
Col113 introducing the hcl domino volt application i created
 
Voltアプリをバージョンアップ!
Voltアプリをバージョンアップ!Voltアプリをバージョンアップ!
Voltアプリをバージョンアップ!
 
初心者向けNotes/Dominoの開発テクニック
初心者向けNotes/Dominoの開発テクニック初心者向けNotes/Dominoの開発テクニック
初心者向けNotes/Dominoの開発テクニック
 
Domino Voltアプリケーションを作成してみたよ!
Domino Voltアプリケーションを作成してみたよ!Domino Voltアプリケーションを作成してみたよ!
Domino Voltアプリケーションを作成してみたよ!
 
Nomad アプリも作成してみたよ!
Nomad アプリも作成してみたよ!Nomad アプリも作成してみたよ!
Nomad アプリも作成してみたよ!
 
formBuilderにより フォームを簡単作成(オープンセミナー版)
formBuilderにより フォームを簡単作成(オープンセミナー版)formBuilderにより フォームを簡単作成(オープンセミナー版)
formBuilderにより フォームを簡単作成(オープンセミナー版)
 
対称クラスタの設定と動作確認
対称クラスタの設定と動作確認対称クラスタの設定と動作確認
対称クラスタの設定と動作確認
 
formBuilderによりフォームを簡単作成
formBuilderによりフォームを簡単作成formBuilderによりフォームを簡単作成
formBuilderによりフォームを簡単作成
 
HCL Nomad用アプリケーション プレゼント企画
HCL Nomad用アプリケーション プレゼント企画HCL Nomad用アプリケーション プレゼント企画
HCL Nomad用アプリケーション プレゼント企画
 
XPagesでRESTを使ってみよう
XPagesでRESTを使ってみようXPagesでRESTを使ってみよう
XPagesでRESTを使ってみよう
 
三度、おじさんSEはIBM ConnectEDへ行ってきた
三度、おじさんSEはIBM ConnectEDへ行ってきた三度、おじさんSEはIBM ConnectEDへ行ってきた
三度、おじさんSEはIBM ConnectEDへ行ってきた
 
サーバー認証
サーバー認証サーバー認証
サーバー認証
 

Recently uploaded

Recently uploaded (9)

MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
 
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdfネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
 
Keywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltdKeywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltd
 
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアルLoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
 
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
 
情報を表現するときのポイント
情報を表現するときのポイント情報を表現するときのポイント
情報を表現するときのポイント
 
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイルLoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
 
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
 
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
 

XPagesでRESTを使ってみたら、こんなんだった

  • 2. e f f e c t f o r c e 免責事項について(お約束です)  本資料は、個人的な見解によるものです。情報の内容に ついては万全を期しておりますが、その内容を保証する ものではありません。  本資料の情報は、使⽤先の責任において使⽤されるべき ものであることを、あらかじめご了承ください。  執筆者の承諾なしに、コピー、複製、他のメディアに転 載する事はご遠慮ください。  当資料に記載された製品名または会社名はそれぞれの各 社の商標または登録商標です。 ©2013 ef Co., Ltd. All rights Reserved. - 2-
  • 3. e f f e c t f o r c e アジェンダ  RESTとは?  RESTサービス  Notes/DominoでのRESTサービス  JSONについて  Notes/Dominoでの設定方法  Dominoディレクトリ  Notesアプリケーション  デモ(動作確認)  アプリケーションへの組み込み  XPages Extension Libraryを使⽤した場合  クライアントJavaScriptを使⽤した場合  Q&A ©2013 ef Co., Ltd. All rights Reserved. - 3-
  • 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(削除)のこと ©2013 ef Co., Ltd. All rights Reserved. - 4-
  • 5. e f f e c t f o r c e RESTとは?  Notes/DominoでのRESTサービス  Domino上のNotesアプリケーションへHTTPプロトコルを利 ⽤してアクセスするためのサービス  Notesアプリケーション、ビュー、フォルダ、文書にアクセ ス可能  サーバ単位、アプリケーション単位で制御が可能  データの作成、読込、更新、削除(CRUD)をサポート  データフォーマットに、JavaScript からの操作が効率的な JSONを採⽤ ※「テクてくロータス 2012年3月度」資料より抜粋 ©2013 ef Co., Ltd. All rights Reserved. - 5-
  • 6. e f f e c t f o r c e RESTとは?  JSONについて  正式名称は、「JavaScript Object Notation」  JavaScriptにおけるオブジェクトの表記法をベースとした軽 量なデータ記述言語である。  JavaScript専⽤ではなく、様々なソフトウェア間でデータの受 け渡しができるように設計されている  書式はXMLに比べて、かなり簡略化されている。  オブジェクトは{}で囲む  配列は[]で囲む  オブジェクトの要素は、:で区切る 【JSONデータのサンプル】 [ { "@modified":"2013-06-16T03:37:44Z", "@unid":"3D50EEFC6D5ECA1349257B8C00135AAB", "@href":"http:¥/¥/domino90se.eflab.local:80¥/Xpages¥/ZipCode.nsf¥/api¥/data¥/documents¥/unid¥/3D50EEFC6D5ECA1349257B8C00135AAB" } ] ©2013 ef Co., Ltd. All rights Reserved. - 6-
  • 7. e f f e c t f o r c e Notes/Dominoでの設定方法  Dominoディレクトリ  サーバ文書を編集モードで開く。  [インターネットプロトコル]-[Domino Web Engine]タブ を開く。  「Domino アクセスサービス」の「有効なサービス」 に”Data”と入力する。  サーバ文書を保存する。  サーバコンソールで tell http refresh と入力する。 ©2013 ef Co., Ltd. All rights Reserved. - 7-
  • 8. e f f e c t f o r c e Notes/Dominoでの設定方法  Notesアプリケーション-その1  サービスを適⽤したいノーツアプリケーションの「データ ベースプロパティ」を開く。  一番右の[詳細]タブを開く。  「IBM Domino データサー ビスを許可」の値を「ビュー と文書」に変更する。 ©2013 ef Co., Ltd. All rights Reserved. - 8-
  • 9. e f f e c t f o r c e Notes/Dominoでの設定方法  Notesアプリケーション-その2  サービスを適⽤したいノーツアプリケーションの「ビュー」 をDomino Designerで開く。  ビュープロパティにある右から二番目の[詳細]タブを開く。  「IBM Domino データサービスの操作を許可」にチェック をつける。  ビューを保存する。 ©2013 ef Co., Ltd. All rights Reserved. - 9-
  • 10. e f f e c t f o r c e Notes/Dominoでの設定方法  デモ(動作確認)  実際のノーツアプリケーションを見て、動作を確認してみま しょう! 1.ノーツDBのRESTサービスチェック用URL http://Dominoのホスト名/Xpages/ZipCode.nsf/api/data/collections 2.($All)ビューのチェック用URL http:// Dominoのホスト名/Xpages/ZipCode.nsf/api/data/collections/unid/ビューのUNID 3.文書のチェック用URL http:// Dominoのホスト名/Xpages/ZipCode.nsf/api/data/documents/unid/文書のUNID 4.NGのチェック用URL http:// Dominoのホスト名/Xpages/ZipCode.nsf/api/data/collections/unid/RESTを許可していないビューのUNID →HTTP403エラーになります。 ©2013 ef Co., Ltd. All rights Reserved. - 10 -
  • 11. e f f e c t f o r c e アプリケーションへの組み込み  XPages Extension Libraryを使用した場合  郵便番号を入力したら、当てはまる住所情報を表示する  事前準備として、「rsTest」(任意)という名前でXPageを作 成する  「inputText1」という名前で編集ボックスを配置する  ボタンコントロールを配置して、イベントのonClickにサーバオ プションを「すべて更新」にする ©2013 ef Co., Ltd. All rights Reserved. - 11 -
  • 12. e f f e c t f o r c e アプリケーションへの組み込み  XPages Extension Libraryを使用した場合  [データアクセス]-[RESTサービス]コントロール  プロパティビューの「すべてのプロパティ」を下表のとおりに 設定する № 1 カテゴリ名称 基本 項目名称 値 service xe:viewItemFileService 2 contentType application/json 3 databaseName 値を取得したいNotesアプリケーションのファイルパス (自DBの場合は、空白で良い) 4 defaultColumns true 5 keys サーバサイドJavaScriptで、下記の内容を入力する getComponent("inputText1").getValue() 6 viewName 「databaseName」で指定したNotesアプリケーションに あるビューの名前 ©2013 ef Co., Ltd. All rights Reserved. - 12 -
  • 13. e f f e c t f o r c e アプリケーションへの組み込み  XPages Extension Libraryを使用した場合  [Dojo レイアウト]-[Dojoデータグリッド]コントロール  プロパティビューの「すべてのプロパティ」を下表のとおりに 設定する № カテゴリ名称 項目名称 値 1 データ storeComponentId 「RESTサービス」コントロールの「ID」名を選択肢か ら、選択する 2 基本 autoHeight 1 ※検索結果を表示する行数を指定している ©2013 ef Co., Ltd. All rights Reserved. - 13 -
  • 14. e f f e c t f o r c e アプリケーションへの組み込み  XPages Extension Libraryを使用した場合  [Dojoレイアウト]-[Dojoデータグリッド列]コントロール  「Dojoデータグリッド」コントロール内に配置する  プロパティビューの「すべてのプロパティ」を下表のとおりに 設定する № カテゴリ名称 項目名称 値 1 データ field JSONのデータを表示するビュー列のプログラム名 2 基本 label 列名として表示したい値 3 形式 width auto ※データの値によって、自動的に幅を調整してくれる   「Dojoデータグリッド列」コントロールは、必要数分配置する 今回の場合、「郵便番号」「都道府県」「市区町村」「町域 名」の4つ分を配置する ©2013 ef Co., Ltd. All rights Reserved. - 14 -
  • 15. e f f e c t f o r c e アプリケーションへの組み込み  XPages Extension Libraryを使用した場合  設定サンプルは下記の通り ©2013 ef Co., Ltd. All rights Reserved. - 15 -
  • 16. e f f e c t f o r c e アプリケーションへの組み込み  XPages Extension Libraryを使用した場合  設定サンプルは下記の通り ©2013 ef Co., Ltd. All rights Reserved. - 16 -
  • 17. e f f e c t f o r c e アプリケーションへの組み込み  XPages Extension Libraryを使用した場合  設定サンプルは下記の通り ©2013 ef Co., Ltd. All rights Reserved. - 17 -
  • 18. e f f e c t f o r c e アプリケーションへの組み込み  XPages Extension Libraryを使用した場合  設定サンプルは下記の通り ©2013 ef Co., Ltd. All rights Reserved. - 18 -
  • 19. e f f e c t f o r c e アプリケーションへの組み込み  XPages Extension Libraryを使用した場合  画面サンプルは下記の通り ©2013 ef Co., Ltd. All rights Reserved. - 19 -
  • 20. e f f e c t f o r c e アプリケーションへの組み込み  クライアントJavaScriptを使用した場合  XPageに特別なコントロールを配置する必要はな い  REST APIを使って、JSONデータを取得するため のJavaScriptを記述する  必要な情報は下記の通り   エンドポイント(endpoint)というURL情報 JSONから必要なデータを取得してくるための検索 ⽤URLパラメータ ©2013 ef Co., Ltd. All rights Reserved. - 20 -
  • 21. e f f e c t f o r c e アプリケーションへの組み込み クライアントJavaScriptを使用した場合  行 コード 1 // 送信先 2 var svn = "http://domino90se.eflab.local"; 3 var dbn = "Xpages/ZipCode.nsf"; 4 var endpoint = "/api/data/collections/unid/D76B3FEBE958BECF49257B8C00037E9D"; 5 エンドポイントのURL 全JSONデータが表示される 6 // 入力した郵便番号 7 var skey = document.getElementById( "#{id:zip71}" ).value; 8 9 // URLを生成 10 var url = svn + "/" + dbn + endpoint + "?search=FIELD zip7 CONTAINS " + encodeURI(skey); 11 ?search以降が検索用URLパ ラメータ 12 // XMLHttpRequestを作成 13 try { 14 // Netscape, Firefoxなど 15 xmlhttp = new XMLHttpRequest(); 16 } catch (e){ 17 18 try { xmlhttp = new ActiveXObject ( "Msxml2.XMLHTTP" ); ©2013 ef Co., Ltd. All rights Reserved. // IE - 21 -
  • 22. e f f e c t f o r c e アプリケーションへの組み込み  クライアントJavaScriptを使用した場合 行 コード 19 } catch (e){ 20 try { 21 xmlhttp = new ActiveXObject ( "Microsoft.XMLHTTP" ); 22 } catch (e){ 23 // XMLHttpRequestの作成に失敗 24 25 // IE } } 26 } 27 28 // レスポンスを受け取った時に呼ばれるメソッドを指定 29 xmlhttp.onreadystatechange = method1; 30 xmlhttp.open( 'GET', url, true ); 31 xmlhttp.setRequestHeader ( "Content-Type","text/json; charset=utf-8" ); RESTを使ったhttp通信 32 33 // RESTで送信 34 xmlhttp.send(); 35 36 ©2013 ef Co., Ltd. All rights Reserved. - 22 -
  • 23. e f f e c t f o r c e アプリケーションへの組み込み  クライアントJavaScriptを使用した場合 行 コード 37 function method1() { 38 // レスポンスの結果が正常の場合は、解析処理を行う 39 if ( xmlhttp.readyState == 4 && xmlhttp.status == 200 ) { 40 var ret = xmlhttp.responseText; 41 var obj = JSON.parse( ret ); 42 RESTのコールバック関数 43 document.getElementById( "#{id:prefectures1}" ).value= obj[0]['Prefectures']; 44 document.getElementById( "#{id:cities1}" ).value= obj[0]['Cities']; 45 document.getElementById( "#{id:address1}" ).value= obj[0]['Address']; 46 } 47 } ©2013 ef Co., Ltd. All rights Reserved. - 23 -
  • 24. e f f e c t f o r c e アプリケーションへの組み込み  クライアントJavaScriptを使用した場合  画面サンプルは下記の通り ©2013 ef Co., Ltd. All rights Reserved. - 24 -
  • 25. e f f e c t f o r c e まとめ  Notes/DominoでRESTを利用する意味  Notesアプリケーションのデータを他のWebシステムで動的 に再利⽤することが可能  従来は、CSVやExcel等の静的な受け渡しのみだった(はず)  他のWebシステムのデータを、XPagesを使うことにより、 Notes/Dominoで簡単に再利⽤することが可能  従来はJavaを使うといった高度な技術が必要だった ©2013 ef Co., Ltd. All rights Reserved. - 25 -
  • 26. e f f e c t f o r c e Q&A  質問ありますか?  質問があれば、画面右側のチャットで、「Masahiko Miyo」 あてに送ってください。 ©2013 ef Co., Ltd. All rights Reserved. - 26 -
  • 27. e f f e c t f o r c e 自己紹介 今回のセッションに関するお問い合わせは、↓こちらまで↓ 御代 政彦(みよ まさひこ) Twitter:@guylocke Facebook:guylocke34 ブログ:のおつ(http://guylocke.blogspot.jp) XPagesはもちろん、Notes/Dominoに関する営業的なお問い合わせは、 株式会社エフ ef-info@effect-force.co.jp まで! 1. Dominoの構築、運⽤サポート 2. Notes/Dominoアドオン製品の開発 3. 社内で利⽤するNotes アプリケーションの設計、開発 等、etc… ©2013 ef Co., Ltd. All rights Reserved. - 27 -
  • 28. e f f e c t f o r c e ご清聴ありがとうございました 本日のXPagesDayは、 当セッションをもって終了です。 明日以降も多くのセッションがあるので、 ご期待ください! ※11/8(金)は、 オフラインでのセミナー&懇親会もあります。 今日、質問できなくても「Ask the “X”perts」で 質問できますので、奮ってご参加ください! ©2013 ef Co., Ltd. All rights Reserved. - 28 -