SlideShare a Scribd company logo
1 of 46
IBM Domino
&
REST
2016年6月10日
Notesコンソーシアム
九州地区研究会 2016
6/9/2016
Ricoh IT Solutions Co.,Ltd. 1
海老原 賢次
リコーITソリューションズ株式会社
鹿児島事業所
資料をslideshareで公開しています
• Slideshareで公開していますので、後ほど振り返りでご利用くだ
さい。
• http://www.slideshare.net/kenjiebihara71
または
または
2016/6/9 Version: [0.1.0] Classification: Internal Owner: [EBIHARA Kenji] 2
XPagesで行こう! 検索
slideshare ebihara kenji 検索
参考サイト
• IBM developer Works [RESTful Web サービスの基本]
https://www.ibm.com/developerworks/jp/webservices/library/ws-
restful/
• 海老原ブログ
[XPagesで行こう]
http://take-the-xpages.blogspot.jp/
• IBM Champion 御代様
[XPagesでRESTを使ってみたら、こんなんだった]
http://www.slideshare.net/ssuser40c5c0/x-pages-daya5-27954881
[XPagesでRESTを使ってみよう]
http://www.slideshare.net/ssuser40c5c0/x-pagesrest
2016/6/9 Version: [###] Classification: Internal Owner: [Insert name] 3
参考サイト
• Extension Libraryのインストール方法
https://www-
10.lotus.com/ldd/ddwiki.nsf/dx/OpenNTF_XPages_Extension_Libr
ary_%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3
%83%88%E3%83%BC%E3%83%AB%E6%96%B9%E6%B3%95
2016/6/9 Version: [###] Classification: Internal Owner: [Insert name] 4
本日のお題
6/9/2016 Ricoh IT Solutions Co.,Ltd. 5
1. RESTとは
2. なぜRESTなのか
3.REST コントロール
4.事例紹介
本日のお題
6/9/2016 Ricoh IT Solutions Co.,Ltd. 6
1. RESTとは
2. なぜRESTなのか
3.REST コントロール
4.事例紹介
RESTとは
 システム間、またはシステムとクライ
アント間との通信方法の
アーキテクチャ思想の1つ。
6/9/2016 Ricoh IT Solutions Co.,Ltd. 7
RESTとは
 ブラウザでHTMLページを表示するの
と同じ、HTTPでデータをやり
取りする。(Web API)
 呼び出しもURLで呼びだす。(リクエストす
る)
 よって、サーバー側にはWebサービス
が必要。
6/9/2016 Ricoh IT Solutions Co.,Ltd. 8
RESTとは
 やり取りするデータの種類に規定はな
い
 最もよく使われるのが、JSONと呼
ばれるテキストデータ。
– JSONの他にXMLが使われる場合もある。
6/9/2016 Ricoh IT Solutions Co.,Ltd. 9
JSONとは
 データの構造を表現する、テキスト形式のデータ。
{ // 中括弧でオブジェクトを表現
"lastName": "海老原", // 項目名:値の形で書く
"firstName": "賢次",
"age": 41,
"skill": [ // 配列
"domino",
"XPages",
"C#",
"java"
],
"address": { // オブジェクトの入れ子
"address1": "鹿児島県鹿児島市吉野町",
"address2": "xxx-xxx"
}
}
6/9/2016 Ricoh IT Solutions Co.,Ltd. 10
RESTとは
6/9/2016 11Ricoh IT Solutions Co.,Ltd.
ブラウザ サーバー
HTTP(リクエスト)
HTTP(レスポンス)
HTM
L
クライアント
APP サーバー
HTTP(リクエスト)
HTTP(レスポンス)
JSO
N
JSO
N
RESTとは
 HTTPで通信するときに、メソッド
と言われる呼び出す型(動詞)を指定
する。
6/9/2016 Ricoh IT Solutions Co.,Ltd. 12
HTTPのメソッドとは
 HTTPのリクエスト(呼び出し)するときに、呼び出しの
目的を指定することができる。
 種類は、HTTPの規約で決まったものがある。
よく利用するメソッド
• GET … リソースの取得(ブラウザでHTMLを開くときもこれ)
• POST … リソースの作成、追加(*1)
• PUT … リソースの更新(*1)
• DELETE…リソースの削除
(*1:正確に表記すると、POSTは"べき等"でない、その他は"べき等"である、という条件が付きます。)
これ以外にも、OPTIONS、HEAD、PATCHなどがある。
6/9/2016 Ricoh IT Solutions Co.,Ltd. 13
本日のお題
6/9/2016 Ricoh IT Solutions Co.,Ltd. 14
1. RESTとは
2. なぜRESTなのか
3.REST コントロール
4.事例紹介
RESTのメリット
6/9/2016 Ricoh IT Solutions Co.,Ltd. 15
ビジネスロジックが一元化され、メンテナンス性が向上
いろいろなシステム・サービスとリアルタイムで連携しやすくなる。
シンプル。すぐに作れる。すぐ使える。
モバイルアプリなど独自のUIが提供できる。
REST…WebAPIを設計する
 XPagesなどWebアプリケーションは、主にブラウザで情
報を閲覧したり、入力したりするのが目的。
 でも、データの入り口が増えたら・・・?
Domino
Database
XPages
BL View
BL…ビジネスロジック
6/9/2016 Ricoh IT Solutions Co.,Ltd. 16
REST…WebAPIを設計する
 例えば、CSVファイルをエージェントで取り込むとした
場合、XPagesとエージェントで同じ処理を書かなくては
ならない。→メンテナンス性低下。工数増。
Domino
Database
XPages
BL View
BL…ビジネスロジック
エージェント
BL
同じものを用意する必要がある
CSVファイル
6/9/2016 Ricoh IT Solutions Co.,Ltd. 17
REST…WebAPIを設計する
 RESTによるWebAPIを作成することで、ビジネスロジッ
クを統一できる。
メンテナンス性が向上。工数減。
Domino
Database
XPages
BL
View
BL…ビジネスロジック
REST
API
6/9/2016 Ricoh IT Solutions Co.,Ltd. 18
本日のお題
6/9/2016 Ricoh IT Solutions Co.,Ltd. 19
1. RESTとは
2. なぜRESTなのか
3.REST コントロール
4.事例紹介
DominoでREST
 Domino データサービス を使う
– v8.5.1ugp1 or v9.0以上。
– サーバー設定文書とDBの設計要素の設定だけで可。
– JSONの構造は定められたもので、カスタマイズできない。
– 参考:御代様ブログ[のおつ -Notes/Dominoに関すること-]
http://guylocke.blogspot.jp/2013/06/notesdomino-rest-api.html
 XPagesのRESTコントロールを使う
6/9/2016 20Ricoh IT Solutions Co.,Ltd.
RESTコントロール
 XPagesでREST APIを簡単に実装できるコントロール
 Domino 9.0 以降は、ビルドインされている。
 Domino 8.5.3, 8.5.2 は、Extension Library または
Upgrade Packが必要。
 SSJSで、上記以外のバージョンのサーバーにアクセスし
てデータを参照、更新することもできる。
6/9/2016 Ricoh IT Solutions Co.,Ltd. 21
RESTコントロールの使い方
 はじめに、空のXPagesに"REST"サービスコントロールを
ドラッグ&ドロップする。
6/9/2016 Ricoh IT Solutions Co.,Ltd. 22
呼び出しのURLを決めます
 貼り付けたRESTコントロールを選択します。
 "全てのプロパティ"の"pathInfo"にURLとなるAPI名を入れ
ます。
 XPagesのURLが http://192.168.1.1/sample.nsf/api.xspで、
"pathInfo"に"questions" という値を入れると、外部から下
記のURLでAPIを呼びだすことができる。
http://192.168.1.1/sample.nsf/api.xsp/questions
6/9/2016 Ricoh IT Solutions Co.,Ltd. 23
メソッド毎の処理を書きます
 "service"で作成するRESTの種類を選択します。
 ここでは、汎用的なREST APIが作れる
"customRestService"を選択します。
6/9/2016 Ricoh IT Solutions Co.,Ltd. 24
メソッド毎の処理を記述する
 doGet, doPost, doPut, doDeleteに、それぞれのメソッド
で呼ばれた時のサーバーサイドスクリプトを記述します。
 まずは、GETメソッドに対応するサービスをつくります。
 ここでは、キーワードを指定してビューからそのキーに一
致した文書の一覧をJSONで返すことにします。
6/9/2016 25Ricoh IT Solutions Co.,Ltd.
URLパラメータの取得
 GETメソッドの場合、リクエストの値を受け取るには、
URLパラメータを使います。
 http://192.168.1.1/sample.nsf/api.xsp?key=word
 これをサーバーサイドスクリプトで受け取るには、
paramオブジェクトを利用します。
6/9/2016 26Ricoh IT Solutions Co.,Ltd.
var key = param.get("key");
print(key); // word
URLパラメータに記号やマルチバイト文字が入る場合は、UTF-8でURLエン
コードが必要です。
例)
ほげ → %e3%81%bb%e3%81%92
サーバーサイドで param.get() で取得する場合、自動的にデコードして元の
文字を返します。
レスポンスでJSONを返す
 テストのJSONを返すには、doGetの最後に return でスト
リングを返すだけです。
6/9/2016 27Ricoh IT Solutions Co.,Ltd.
var key = param.get("key");
var docView = database.getView("DocView");
var docs:NotesDocumentCollection = docView.getAllDocumentsByKey(key);
var array = []; //返すJSONのオブジェクト配列を定義
var doc = docs.getFirstDocument();
while(doc != null){
var obj = {
title: doc.getItemValueString("title"),
tag: doc.getItemValueString("tag")
};
array.push(obj);
doc = docs.getNextDocument();
}
return toJson(array); // JavascriptオブジェクトをJSON文字列に変換して返す
POSTのデータを受け取る
 GETの場合は、値を渡すのが目的なので、受け取るパラ
メータは少ないことが多いので、URLパラメータで十分。
 POSTやPUT(新規登録、更新)の場合は、複数の多くの
項目を受け付ける必要がある。
 POSTやPUTでは通常、リクエストBodyでフォームの値や
JSONを受け取る必要がある。
6/9/2016 28Ricoh IT Solutions Co.,Ltd.
JSONの受け取り方
 requestContentType に“application/json”を指定する。
 requestVar に任意の変数名を指定すると、
JSONを自動的に requestVar "で指定した名前でオブジェ
クト化し、サーバーサイドJS内で使用できる。
6/9/2016 30Ricoh IT Solutions Co.,Ltd.
// リクエストJSON
{
"name": "kenji ebihara",
"tag": "xpages"
}
// サーバーサイドJS
print(json.name); // kenji ebihara
print(json.tag); // xpages
Dominoの設定
6/9/2016 Ricoh IT Solutions Co.,Ltd. 31
Dominoで、GET,POST 以外のメソッドを受け取れるようにするには、「イ
ンターネットサイト」設定文書を作成し、使うメソッドを許可する必要が
あります。
サーバー設定文書
インターネットサイト文書
本日のお題
6/9/2016 Ricoh IT Solutions Co.,Ltd. 32
1. RESTとは
2. なぜRESTなのか
3.REST コントロール
4.事例紹介
スマートフォン&スマートウォッチ連携
6/9/2016 Ricoh IT Solutions Co.,Ltd. 33
施設予約アプリ
 設備予約アプリ
 http://equipmentreservation.mybluemix.net/EquipmentRes
ervation.nsf/index.xsp
34
androidアプリ+スマートウォッチ
35
システム構成
36
XPages on
通知
通知
REST
REST
REST
GCM
XPages
通知
予約一覧取得
予約詳細情報取得
新規予約登録
予約変更
メッセージ送信
Google cloud messaging
Q&Aアプリ
6/9/2016 Ricoh IT Solutions Co.,Ltd. 37
Q&Aアプリ REST API計画
 オープンなNotes関連の質問Webページ。九州地区Notes
パートナー会技術部会で作成
 http://qa.xpages.jp/
 これにRESTでデータが取得できるよう、準備中
6/9/2016 38Ricoh IT Solutions Co.,Ltd.
外部システムとの連携
6/9/2016 Ricoh IT Solutions Co.,Ltd. 39
• 大量の添付ファイル(100GB超)があるため、Dominoの
1DBのみでは管理が困難
• ファイルはSQL Serverにバイナリ・データとして格納
• Domino 8.5.1のためExtension Libraryは使用できなかった
が、オープンソースのJavaライブラリを利用することで低
コストで実現。
6/9/2016 40Ricoh IT Solutions Co.,Ltd.
事例
Version: 1.0.0 Classification: Internal Owner: EBIHARA Kenji09/06/2016 41
DB内にバイナリでファイルが
UNIDをキーとして保存する
SQL Server Domino
アクセス・コントロール
書誌情報を格納
それぞれの長所を活かすとともに、
利用者にシームレスでリアルタイムなサービスを提供することが可能に!
ファイルはWebサービスから
直接アップ&ダウンロード
他のシステムからも
Webサービスを利用
ファイル
一覧情報JSON
ファイルの一覧を取得して
XPages内に表示
Webサービス
DBサーバー
JSONの活用
6/9/2016 Ricoh IT Solutions Co.,Ltd. 42
動的フォーム 入力画面(1)
2016/6/9 43
設定に合わせて表を表示
動的フォーム 入力画面(2)
2016/6/9 44
追加ボタンを押すと、行追加のダイアログ
ボックスが表示される
設定されたデータ型に応じて
フォームが変わる
動的フォーム 設定画面(1)
2016/6/9 45
テーブルのレイアウトを選択可能
動的フォーム 設定画面(2)
2016/6/9 46
テーブル毎に10項目まで指定が可能
項目のタイプを選択可能
テーブルでの列幅を指
定
入力文字数の制限
Domino & REST

More Related Content

What's hot

Yapp methodology anjo-kolk
Yapp methodology anjo-kolkYapp methodology anjo-kolk
Yapp methodology anjo-kolkToon Koppelaars
 
Power app custom api v0.1.21.1221
Power app custom api v0.1.21.1221Power app custom api v0.1.21.1221
Power app custom api v0.1.21.1221Ayumu Inaba
 
Talend ESB : Monitoring, Repartition de Charge et Authentification
Talend ESB : Monitoring, Repartition de Charge et AuthentificationTalend ESB : Monitoring, Repartition de Charge et Authentification
Talend ESB : Monitoring, Repartition de Charge et AuthentificationLilia Sfaxi
 
「Ansible on Azure入門」資料
「Ansible on Azure入門」資料「Ansible on Azure入門」資料
「Ansible on Azure入門」資料Hidetoshi Hirokawa
 
SOA : pour une interopérabilité intrinsèque du Système d’Information
SOA : pour une interopérabilité intrinsèque du Système d’InformationSOA : pour une interopérabilité intrinsèque du Système d’Information
SOA : pour une interopérabilité intrinsèque du Système d’InformationKhaled Ben Driss
 
Oracle Database: リリースモデルとアップグレード・パッチ計画 (2021年2月版)
Oracle Database: リリースモデルとアップグレード・パッチ計画 (2021年2月版)Oracle Database: リリースモデルとアップグレード・パッチ計画 (2021年2月版)
Oracle Database: リリースモデルとアップグレード・パッチ計画 (2021年2月版)オラクルエンジニア通信
 
CMDBuildを中心とした運用管理自動化基盤OpenPIEの事例紹介
CMDBuildを中心とした運用管理自動化基盤OpenPIEの事例紹介CMDBuildを中心とした運用管理自動化基盤OpenPIEの事例紹介
CMDBuildを中心とした運用管理自動化基盤OpenPIEの事例紹介OSSラボ株式会社
 
Fargate 를 이용한 ECS with VPC 1부
Fargate 를 이용한 ECS with VPC 1부Fargate 를 이용한 ECS with VPC 1부
Fargate 를 이용한 ECS with VPC 1부Hyun-Mook Choi
 
검색 서비스 간략 교육
검색 서비스 간략 교육 검색 서비스 간략 교육
검색 서비스 간략 교육 Rjs Ryu
 
再帰Cte を使って遊ぼう
再帰Cte を使って遊ぼう再帰Cte を使って遊ぼう
再帰Cte を使って遊ぼうOda Shinsuke
 
Création de Services et Configuration du ESB avec TalendESB
Création de Services et Configuration du ESB avec TalendESBCréation de Services et Configuration du ESB avec TalendESB
Création de Services et Configuration du ESB avec TalendESBLilia Sfaxi
 
Oracle Cloud Infrastructure:2023年4月度サービス・アップデート
Oracle Cloud Infrastructure:2023年4月度サービス・アップデートOracle Cloud Infrastructure:2023年4月度サービス・アップデート
Oracle Cloud Infrastructure:2023年4月度サービス・アップデートオラクルエンジニア通信
 
JobSchedulerでのジョブの多重実行・排他制御
JobSchedulerでのジョブの多重実行・排他制御JobSchedulerでのジョブの多重実行・排他制御
JobSchedulerでのジョブの多重実行・排他制御OSSラボ株式会社
 
ノーツアプリケーションのデザインを変更してみよう!
ノーツアプリケーションのデザインを変更してみよう!ノーツアプリケーションのデザインを変更してみよう!
ノーツアプリケーションのデザインを変更してみよう!Takeshi Yoshida
 
Tp python dauphine
Tp python dauphineTp python dauphine
Tp python dauphinenoussa krid
 
Alphorm.com-Formation MongoDB Administration
Alphorm.com-Formation MongoDB AdministrationAlphorm.com-Formation MongoDB Administration
Alphorm.com-Formation MongoDB AdministrationAlphorm
 

What's hot (20)

Yapp methodology anjo-kolk
Yapp methodology anjo-kolkYapp methodology anjo-kolk
Yapp methodology anjo-kolk
 
Power app custom api v0.1.21.1221
Power app custom api v0.1.21.1221Power app custom api v0.1.21.1221
Power app custom api v0.1.21.1221
 
Talend ESB : Monitoring, Repartition de Charge et Authentification
Talend ESB : Monitoring, Repartition de Charge et AuthentificationTalend ESB : Monitoring, Repartition de Charge et Authentification
Talend ESB : Monitoring, Repartition de Charge et Authentification
 
HCL Domino REST API 利用ガイド
HCL Domino REST API 利用ガイドHCL Domino REST API 利用ガイド
HCL Domino REST API 利用ガイド
 
ODS ってなんだ?
ODS ってなんだ?ODS ってなんだ?
ODS ってなんだ?
 
「Ansible on Azure入門」資料
「Ansible on Azure入門」資料「Ansible on Azure入門」資料
「Ansible on Azure入門」資料
 
SOA : pour une interopérabilité intrinsèque du Système d’Information
SOA : pour une interopérabilité intrinsèque du Système d’InformationSOA : pour une interopérabilité intrinsèque du Système d’Information
SOA : pour une interopérabilité intrinsèque du Système d’Information
 
Oracle Database: リリースモデルとアップグレード・パッチ計画 (2021年2月版)
Oracle Database: リリースモデルとアップグレード・パッチ計画 (2021年2月版)Oracle Database: リリースモデルとアップグレード・パッチ計画 (2021年2月版)
Oracle Database: リリースモデルとアップグレード・パッチ計画 (2021年2月版)
 
CMDBuildを中心とした運用管理自動化基盤OpenPIEの事例紹介
CMDBuildを中心とした運用管理自動化基盤OpenPIEの事例紹介CMDBuildを中心とした運用管理自動化基盤OpenPIEの事例紹介
CMDBuildを中心とした運用管理自動化基盤OpenPIEの事例紹介
 
Fargate 를 이용한 ECS with VPC 1부
Fargate 를 이용한 ECS with VPC 1부Fargate 를 이용한 ECS with VPC 1부
Fargate 를 이용한 ECS with VPC 1부
 
검색 서비스 간략 교육
검색 서비스 간략 교육 검색 서비스 간략 교육
검색 서비스 간략 교육
 
再帰Cte を使って遊ぼう
再帰Cte を使って遊ぼう再帰Cte を使って遊ぼう
再帰Cte を使って遊ぼう
 
Cours design pattern m youssfi partie 6 proxy
Cours design pattern m youssfi partie 6 proxyCours design pattern m youssfi partie 6 proxy
Cours design pattern m youssfi partie 6 proxy
 
Création de Services et Configuration du ESB avec TalendESB
Création de Services et Configuration du ESB avec TalendESBCréation de Services et Configuration du ESB avec TalendESB
Création de Services et Configuration du ESB avec TalendESB
 
Mise en oeuvre des framework de machines et deep learning v1
Mise en oeuvre des framework de machines et deep learning v1 Mise en oeuvre des framework de machines et deep learning v1
Mise en oeuvre des framework de machines et deep learning v1
 
Oracle Cloud Infrastructure:2023年4月度サービス・アップデート
Oracle Cloud Infrastructure:2023年4月度サービス・アップデートOracle Cloud Infrastructure:2023年4月度サービス・アップデート
Oracle Cloud Infrastructure:2023年4月度サービス・アップデート
 
JobSchedulerでのジョブの多重実行・排他制御
JobSchedulerでのジョブの多重実行・排他制御JobSchedulerでのジョブの多重実行・排他制御
JobSchedulerでのジョブの多重実行・排他制御
 
ノーツアプリケーションのデザインを変更してみよう!
ノーツアプリケーションのデザインを変更してみよう!ノーツアプリケーションのデザインを変更してみよう!
ノーツアプリケーションのデザインを変更してみよう!
 
Tp python dauphine
Tp python dauphineTp python dauphine
Tp python dauphine
 
Alphorm.com-Formation MongoDB Administration
Alphorm.com-Formation MongoDB AdministrationAlphorm.com-Formation MongoDB Administration
Alphorm.com-Formation MongoDB Administration
 

Similar to Domino & REST

MySQL 5.7 InnoDB 日本語全文検索
MySQL 5.7 InnoDB 日本語全文検索MySQL 5.7 InnoDB 日本語全文検索
MySQL 5.7 InnoDB 日本語全文検索yoyamasaki
 
Drupal deployment trial on Engine Yard
Drupal deployment trial on Engine YardDrupal deployment trial on Engine Yard
Drupal deployment trial on Engine Yard惠 紀野
 
Windows Server 2016 Essentials TP4の強化ポイントと PowerShellの使いどころ
Windows Server 2016 Essentials TP4の強化ポイントとPowerShellの使いどころWindows Server 2016 Essentials TP4の強化ポイントとPowerShellの使いどころ
Windows Server 2016 Essentials TP4の強化ポイントと PowerShellの使いどころSatoru Nasu
 
Microsoft製品でOSSを監視してみよう
Microsoft製品でOSSを監視してみようMicrosoft製品でOSSを監視してみよう
Microsoft製品でOSSを監視してみようNorio Sashizaki
 
【Xpages day2016】標準コントールを使わないxpage開発
【Xpages day2016】標準コントールを使わないxpage開発【Xpages day2016】標準コントールを使わないxpage開発
【Xpages day2016】標準コントールを使わないxpage開発西 雄樹
 
メッセージキュー「Pulsar」の紹介 @OSC_20171007
メッセージキュー「Pulsar」の紹介 @OSC_20171007メッセージキュー「Pulsar」の紹介 @OSC_20171007
メッセージキュー「Pulsar」の紹介 @OSC_20171007Nozomi Kurihara
 
第5回 cogbot勉強会!
第5回 cogbot勉強会!第5回 cogbot勉強会!
第5回 cogbot勉強会!貴志 上坂
 
Chefで始めるWindows Server構築
Chefで始めるWindows Server構築Chefで始めるWindows Server構築
Chefで始めるWindows Server構築Takashi Kanai
 
CentOS6 でも Zabbix 3.0 を動かしたい
CentOS6 でも Zabbix 3.0 を動かしたいCentOS6 でも Zabbix 3.0 を動かしたい
CentOS6 でも Zabbix 3.0 を動かしたい真治 米田
 
20121205 nosql(okuyama fs)セミナー資料
20121205 nosql(okuyama fs)セミナー資料20121205 nosql(okuyama fs)セミナー資料
20121205 nosql(okuyama fs)セミナー資料Takahiro Iwase
 
ビッグデータ活用を加速する!分散SQLエンジン Spark SQL のご紹介 20161105 OSC Tokyo Fall
ビッグデータ活用を加速する!分散SQLエンジン Spark SQL のご紹介 20161105 OSC Tokyo Fallビッグデータ活用を加速する!分散SQLエンジン Spark SQL のご紹介 20161105 OSC Tokyo Fall
ビッグデータ活用を加速する!分散SQLエンジン Spark SQL のご紹介 20161105 OSC Tokyo FallYusukeKuramata
 
Windows環境でのMySQL
Windows環境でのMySQLWindows環境でのMySQL
Windows環境でのMySQLyoyamasaki
 
マイクロソフトの提供するMA6向けAPIのご紹介
マイクロソフトの提供するMA6向けAPIのご紹介マイクロソフトの提供するMA6向けAPIのご紹介
マイクロソフトの提供するMA6向けAPIのご紹介Sunao Tomita
 
CMSMix Sapporo vol.3 (Drupal の回)
CMSMix Sapporo vol.3 (Drupal の回)CMSMix Sapporo vol.3 (Drupal の回)
CMSMix Sapporo vol.3 (Drupal の回)Kenji Shirane
 
第1回JAZUG静岡勉強会
第1回JAZUG静岡勉強会第1回JAZUG静岡勉強会
第1回JAZUG静岡勉強会Sunao Tomita
 
SharePoint Framework Teams タブ開発基礎講座
SharePoint Framework Teams タブ開発基礎講座SharePoint Framework Teams タブ開発基礎講座
SharePoint Framework Teams タブ開発基礎講座Hiroaki Oikawa
 

Similar to Domino & REST (20)

MySQL 5.7 InnoDB 日本語全文検索
MySQL 5.7 InnoDB 日本語全文検索MySQL 5.7 InnoDB 日本語全文検索
MySQL 5.7 InnoDB 日本語全文検索
 
Monitoring あれこれ
Monitoring あれこれMonitoring あれこれ
Monitoring あれこれ
 
Azure <3 Openness
Azure <3 OpennessAzure <3 Openness
Azure <3 Openness
 
Drupal deployment trial on Engine Yard
Drupal deployment trial on Engine YardDrupal deployment trial on Engine Yard
Drupal deployment trial on Engine Yard
 
Windows Server 2016 Essentials TP4の強化ポイントと PowerShellの使いどころ
Windows Server 2016 Essentials TP4の強化ポイントとPowerShellの使いどころWindows Server 2016 Essentials TP4の強化ポイントとPowerShellの使いどころ
Windows Server 2016 Essentials TP4の強化ポイントと PowerShellの使いどころ
 
Microsoft製品でOSSを監視してみよう
Microsoft製品でOSSを監視してみようMicrosoft製品でOSSを監視してみよう
Microsoft製品でOSSを監視してみよう
 
【Xpages day2016】標準コントールを使わないxpage開発
【Xpages day2016】標準コントールを使わないxpage開発【Xpages day2016】標準コントールを使わないxpage開発
【Xpages day2016】標準コントールを使わないxpage開発
 
メッセージキュー「Pulsar」の紹介 @OSC_20171007
メッセージキュー「Pulsar」の紹介 @OSC_20171007メッセージキュー「Pulsar」の紹介 @OSC_20171007
メッセージキュー「Pulsar」の紹介 @OSC_20171007
 
第5回 cogbot勉強会!
第5回 cogbot勉強会!第5回 cogbot勉強会!
第5回 cogbot勉強会!
 
Chefで始めるWindows Server構築
Chefで始めるWindows Server構築Chefで始めるWindows Server構築
Chefで始めるWindows Server構築
 
CentOS6 でも Zabbix 3.0 を動かしたい
CentOS6 でも Zabbix 3.0 を動かしたいCentOS6 でも Zabbix 3.0 を動かしたい
CentOS6 でも Zabbix 3.0 を動かしたい
 
20121205 nosql(okuyama fs)セミナー資料
20121205 nosql(okuyama fs)セミナー資料20121205 nosql(okuyama fs)セミナー資料
20121205 nosql(okuyama fs)セミナー資料
 
ビッグデータ活用を加速する!分散SQLエンジン Spark SQL のご紹介 20161105 OSC Tokyo Fall
ビッグデータ活用を加速する!分散SQLエンジン Spark SQL のご紹介 20161105 OSC Tokyo Fallビッグデータ活用を加速する!分散SQLエンジン Spark SQL のご紹介 20161105 OSC Tokyo Fall
ビッグデータ活用を加速する!分散SQLエンジン Spark SQL のご紹介 20161105 OSC Tokyo Fall
 
Windows環境でのMySQL
Windows環境でのMySQLWindows環境でのMySQL
Windows環境でのMySQL
 
マイクロソフトの提供するMA6向けAPIのご紹介
マイクロソフトの提供するMA6向けAPIのご紹介マイクロソフトの提供するMA6向けAPIのご紹介
マイクロソフトの提供するMA6向けAPIのご紹介
 
CMSMix Sapporo vol.3 (Drupal の回)
CMSMix Sapporo vol.3 (Drupal の回)CMSMix Sapporo vol.3 (Drupal の回)
CMSMix Sapporo vol.3 (Drupal の回)
 
Spring Cloud Data Flow の紹介 #streamctjp
Spring Cloud Data Flow の紹介  #streamctjpSpring Cloud Data Flow の紹介  #streamctjp
Spring Cloud Data Flow の紹介 #streamctjp
 
第1回JAZUG静岡勉強会
第1回JAZUG静岡勉強会第1回JAZUG静岡勉強会
第1回JAZUG静岡勉強会
 
概説 Data API v3
概説 Data API v3概説 Data API v3
概説 Data API v3
 
SharePoint Framework Teams タブ開発基礎講座
SharePoint Framework Teams タブ開発基礎講座SharePoint Framework Teams タブ開発基礎講座
SharePoint Framework Teams タブ開発基礎講座
 

More from 賢次 海老原

XPages Day2015 実践 XPages on Bluemix
XPages Day2015 実践 XPages on BluemixXPages Day2015 実践 XPages on Bluemix
XPages Day2015 実践 XPages on Bluemix賢次 海老原
 
Notes festa 2015 iot時代におけるnotes domino
Notes festa 2015 iot時代におけるnotes dominoNotes festa 2015 iot時代におけるnotes domino
Notes festa 2015 iot時代におけるnotes domino賢次 海老原
 
XPagesのパフォーマンス・チューニング
XPagesのパフォーマンス・チューニングXPagesのパフォーマンス・チューニング
XPagesのパフォーマンス・チューニング賢次 海老原
 
IBM Dominoとモダンアーキテクチャ
IBM DominoとモダンアーキテクチャIBM Dominoとモダンアーキテクチャ
IBM Dominoとモダンアーキテクチャ賢次 海老原
 
POI4XPagesを使ったword-excelへの簡単エクスポート
POI4XPagesを使ったword-excelへの簡単エクスポートPOI4XPagesを使ったword-excelへの簡単エクスポート
POI4XPagesを使ったword-excelへの簡単エクスポート賢次 海老原
 
JavaScriptおよびXPages Vote技術解説
JavaScriptおよびXPages Vote技術解説JavaScriptおよびXPages Vote技術解説
JavaScriptおよびXPages Vote技術解説賢次 海老原
 
Q a9 for ics(lotus) developers
Q a9 for ics(lotus) developersQ a9 for ics(lotus) developers
Q a9 for ics(lotus) developers賢次 海老原
 
XPages開発におけるGit/GitHubの利用
XPages開発におけるGit/GitHubの利用XPages開発におけるGit/GitHubの利用
XPages開発におけるGit/GitHubの利用賢次 海老原
 
XPages Day 2013 [B-3] XPages開発を始める Notes技術者のためのWeb技術概論
XPages Day 2013 [B-3] XPages開発を始める Notes技術者のためのWeb技術概論XPages Day 2013 [B-3] XPages開発を始める Notes技術者のためのWeb技術概論
XPages Day 2013 [B-3] XPages開発を始める Notes技術者のためのWeb技術概論賢次 海老原
 

More from 賢次 海老原 (9)

XPages Day2015 実践 XPages on Bluemix
XPages Day2015 実践 XPages on BluemixXPages Day2015 実践 XPages on Bluemix
XPages Day2015 実践 XPages on Bluemix
 
Notes festa 2015 iot時代におけるnotes domino
Notes festa 2015 iot時代におけるnotes dominoNotes festa 2015 iot時代におけるnotes domino
Notes festa 2015 iot時代におけるnotes domino
 
XPagesのパフォーマンス・チューニング
XPagesのパフォーマンス・チューニングXPagesのパフォーマンス・チューニング
XPagesのパフォーマンス・チューニング
 
IBM Dominoとモダンアーキテクチャ
IBM DominoとモダンアーキテクチャIBM Dominoとモダンアーキテクチャ
IBM Dominoとモダンアーキテクチャ
 
POI4XPagesを使ったword-excelへの簡単エクスポート
POI4XPagesを使ったword-excelへの簡単エクスポートPOI4XPagesを使ったword-excelへの簡単エクスポート
POI4XPagesを使ったword-excelへの簡単エクスポート
 
JavaScriptおよびXPages Vote技術解説
JavaScriptおよびXPages Vote技術解説JavaScriptおよびXPages Vote技術解説
JavaScriptおよびXPages Vote技術解説
 
Q a9 for ics(lotus) developers
Q a9 for ics(lotus) developersQ a9 for ics(lotus) developers
Q a9 for ics(lotus) developers
 
XPages開発におけるGit/GitHubの利用
XPages開発におけるGit/GitHubの利用XPages開発におけるGit/GitHubの利用
XPages開発におけるGit/GitHubの利用
 
XPages Day 2013 [B-3] XPages開発を始める Notes技術者のためのWeb技術概論
XPages Day 2013 [B-3] XPages開発を始める Notes技術者のためのWeb技術概論XPages Day 2013 [B-3] XPages開発を始める Notes技術者のためのWeb技術概論
XPages Day 2013 [B-3] XPages開発を始める Notes技術者のためのWeb技術概論
 

Recently uploaded

デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 

Recently uploaded (9)

デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 

Domino & REST

Editor's Notes

  1. 皆さん、こんにちは。 これからは IBM Domino & REST という内容でお話しさせていただきます、 リコーITソリューションズの海老原と申します。よろしくお願い致します。 まずは簡単に自己紹介させてください。 私はWebアプリ開発に10年以上携わっており、それに関する経験はそれなりにあると思っています。 その知識をNotes、Xpagesに活かすべく、活動しております。 そんなこんなで、こういったところはお話させていただく機会も多く、IBM Championsに任命されています。 よろしくお願い致します。
  2. 今回はお手元に資料はないのですが、このスライドを公開しております。 “Xpagesで行こう”というブログを書いていますので、これで検索していただいき、このページダウンロードできるようになっています。 ですので、スライドの内容を書き写す必要は無いですので、ぜひ私の方を向いていただいてお話をきいていただければと思います。
  3. 今回の内容と関連するサイトを紹介しています。 後日、振り返りをされるときに、ダウンロードしたこのスライドをご参考になさってください。
  4. 本日お話する内容です。 まず、RESTとは、なぜRESTなのか、ということを踏まえた後に DominoでRESTを実現するにはどうするのか、ということで XpagesのRESTコントロールの紹介をします。 また、事例紹介として RESTを使った事例、あとはRESTとはちょっと違うのですが、応用としてこんなDominoの使い方があります、という紹介をさせていただきます。
  5. まずは、RESTとは、からです。 RESTというのは、ITの業界ではトレンドの1つとなっているので、 ご存じの方もいらっしゃるかと思いますが、お付き合いください。 初めてきいた、言葉は聞いたことある、という方は、ぜひ今日RESTとは何か、ということだけでも身につけていただければと思います。 それではまず、RESTとは、ということですが→
  6. RESTとは1口で説明すると、アーキテクチャ思想、ガイドラインといってもいいですが、その1つです。 こう言うと、ちょっと堅苦しい言い方になってますが、要は仕様、ということですね。 RESTは、クラウドのサービス、社内システム間の連携や、BtoB、BtoCなど多くのシステム間、サービス間連携で利用されています。 もう少し詳しく見ていきましょう。
  7. RESTは、HTTPで通信します。Webでインターフェースを提供する WebAPIの仕様ということです。 よって、ブラウザと同じようにURLで呼び出しますので、サーバー側にはWebサービスが必要になります。 Dominoの場合は XPages がそれになりますね。 通常ブラウザでホームページを見るためには、ブラウザでURLを指定し、サーバーはそのリクエストに応じてHTMLや画像ファイルを返してくるわけですが、 RESTは、クライアントのプログラムからURLを指定し、HTMLではなく、プログラムが処理するためのデータがかえってくる、というイメージです。 ではそのデータというのは、どういったものか、ということですが->
  8. やり取りするデータの種類にこれでなければならない、という規定はありません。 しかし、デファクトスタンダードというべきものがあり、それがJSONと呼ばれるテキストデータです。
  9. JSONはデータの構造を表現する、テキストのデータです。ですので、テキストエディタでも表示できます。 JavaScriptでそのままプログラム内でオブジェクトとして扱えるのが特徴です。 詳しい解説は、資料のはじめの方にある参考資料のサイトをご覧頂きたいと思いますが、非常にシンプルでプログラムで利用しやすいため、多くのシステムやサービスで採用されています。
  10. ここまでの説明を図にしてみました。 先ほどお話しように、通常、ブラウザでホームページを表示する時には、URLを指定してページを呼び出し、 Webサーバーは、それに応じてHTMLを返します。 一方RESTは、同じHTTPを使いますが、やり取りするデータがJSONなどHTMLとは別のデータだということになります。 もう一つ重要な要素として、メソッドというものがあります。→
  11. 先ほどURLを指定して呼び出す、リクエストする、という話をしました。 ブラウザでHTMLを表示するときには意識しないのですが、リクエストするときの呼び出す型、動詞と言い換えても良いのですが、それを付与することになっています。 RESTでは、サーバーはこのメソッドに従った処理をすることが求められています。 具体的にどういったメソッドがあるか見てみます。
  12. メソッドの種類はいくつか有りますが、代表的なものとして、GET,POST,PUT,DELETEがあります。 それぞれ、リソースの取得、作成または追加、更新、削除、という意味があります。 ここでピンと来たかもしれませんが、このメソッドでCRUDが表現できるということです。 例えば、同じURLでも GET でリクエストが来たら、文書の情報を渡す、POSTで来たら文書を新規作成する といった処理を行うように、サーバー側でプログラミングしてあげる必要がある、ということです。 RESTについての説明は以上ですが、完全なREST、RESTfulと言われる より詳しい内容については、冒頭の参考資料のサイトやRESTで検索してみてください。
  13. ではなぜRESTがよく使われるのか、私がRESTを勧めるのか、その理由をお話します。
  14. → まず、ビジネスロジックが一元化され、メンテナンス性が向上 する、ということですが、次のスライドで説明します。 →次に、いろいろなシステム・サービスとリアルタイムで連携しやすくなる ということです。 システム間のデータの連携には、夜間バッチによるCSVファイルなどでの連携の例が多いと思いますが、だいたい1日単位でズレが生じます。 システムで必要なときに別なシステムに直接アクセスしてデータを取得できることで、リアルタイム性が増します。 →また、モバイルアプリなど独自のUIが提供できる ということが上げられます。 従来のDomino/Notesを例に上げると、フォームを使ったNotes DBやXPagesだと、そのDBのデータを利用するには、NotesDBやXPagesのサイトからしかアクセスできません。 RESTでインターフェースを提供することで、スマホのアプリなど、さまざまなUIからアクセスすることができます。 こういったのメリットは、RESTではない仕組みでも実現しようと思えばできますが、REST最大のメリットは、→シンプル、たということです。先の説明で行ったように、通信方式は、よくあるHTTPを使いますし、やり取りするデータもテキスト形式でシンプルなJSONなので、いろいろなシステムに組み込みやすいです。 さて、初めのビジネスロジックが一元化され、メンテナンス性が向上する、というメリットに関しては、システムを設計する際に、技術者がその構成を考える必要があります。
  15. Notesのフォームもそうですが、XPagesでも、それをそのまま作った場合、情報の取得や作成、更新といった処理の入り口が限られてしまいます。 たとえば、XPagesで施設予約のWebアプリを作成したとします。ユーザーはブラウザでWebページから予約を入力できるようになりました。 その後、別なシステム例えばスケジューラーのようなシステムから、施設予約を連動したいと要望が上がりました。
  16. その時、それ用のインターフェースは無いわけですから、CSVファイルとそれを取り込むエージェントを作るとしましょう。 そうすると、入力値のチェックであるとか、プログラムでセットするフィールドなどある場合、XPagesと同じようなプログラムをエージェントにする必要があります。 エージェントからXPagesのロジックは呼べないですからね。 そうすると、同じビジネスロジックが2箇所に存在することになり、バージョンアップは煩雑になりますし、バグの発生確率も上がり、更新に工数がかかるようになってしまいます。
  17. RESTで経由でビジネスロジックを処理するようにすることで、XPagesでも別システムからでも同じ処理を経由することができるようになり、システムはシンプルになり、変更に強いシステムになります。 昨今、ビジネスを取り巻く状況や環境の変化が激しい中、情報システムも変化について行けるように、このような変更や拡張に強い仕組みが求められています。 もし、これからNotesを使ったシステムを作成したり、改築したりする場合、こういったことを取り入れる必要があると思います。
  18. さて、ここまで一般的なRESTの話をしてきましたが、具体的にDominoでどう実現するのか、ということをお話したいと思います。
  19. Domino9.0以上では、設定だけでビューや文書をJSONで返す機能があります。 ノーコーディングでRESTが実現できるので、非常に手軽なのが特徴です。 これで事足りることも多いですが、 ビジネスロジックを組み込むことが難しいことと、JSONをカスタマイズできないこと、など柔軟なサービスを提供することができません。 ここでは、XPagesのRESTコントロールを使う方法をご紹介します。
  20. ちなみに、XPagesでWebアプリを作成したことがある方は、どのくらいいらっしゃいますか? ・・・今日は時間の都合でXpagesを使ったことある前提で、話を進めますが、わからないことがあったら、今日の最後に「井戸端会」を予定しているので、そこできいていただければと思います。 RESTコントロールとは、XPagesで REST API が簡単に実装できるコントロールです。 Domino 9.0 以降は、ビルドインされているので、何も準備することなく使うことができます。 8.5.2, 8.5.3 の場合は、Extension Libraryをインストールするか、8.5.3の場合には Upgrade Packを入れてください。 Extension Libraryのインストール方法は、冒頭の参考サイトをご参照ください。 ここから、このコントロールの詳しい使い方に入りますが、今回は時間が短いこともあるので、簡単に進めます。 詳しくは、この資料や、私のブログの方をご参照ください。
  21. XPagesのコントロールですので、空のXPagesに右のコントロールの一覧から、RESTサービスをドラッグ&ドロップします。 この辺は簡単ですね。
  22. 次に、PathInfoというプロパティで、URLを決めます。
  23. 次に、リクエストが来た時のサーバー側の処理を書きます。 serviceというプロパティで、customRestServiceを選択します。 ここを触ると判るのですが、他にも viewJsonService や documentJsonService などが有ります。 これらは、前に説明した「Dominoデータサービス」と同じように、設定のみでviewやdocumentを返す事ができるものですが、ここでは説明を省略します。
  24. 以降は、クライアントから、サーバーへの値の渡し方、サーバーからクライアントへの値の渡し方について、資料では説明しています。 詳しい説明は、今回は省きますが、概要だけ説明すると、 GETリクエストの場合は、リクエストのURLのパラメータで送ります。
  25. サーバーからクライアントに返す方法は、doGetの処理の最後に、テキストを return すればよいです。 ここでは、JSON文字列を返すことにしますので、JavaScriptのオブジェクトを作成して、toJson()メソッドでJSON文字列に変換して返しています。
  26. POSTのデータは、リクエスト ボディ ー つまり本体にデータが入ります。 データの形式は、JSONもありますし、HTMLでフォームに入力した値の場合も有ります。 ここでは、JSONの受け取り方を説明します。
  27. JSONを受け取るには、requestContentTypeに JSON の指定を行い、requestVar にプログラム内で参照する任意の名前の変数名を指定します。 そうすると、doPost や doPut の処理の中で、その変数にJSONをオブジェクト化したものが入っていますので、それを利用できます。
  28. ここで注意ですが、 Dominoは既定では、GET,POST以外のリクエストを受け付けることはできません。 インターネットサイト文書を作成し、必要なメソッドを設定して、サーバー設定文書でそれを有効にする必要があります。
  29. 最後に事例紹介したいと思いますが、 実はまだあまり例は多くないので、RESTやそれに関連する技術を用いた例をご紹介したいと思います。
  30. これは、XPagesで作られたWebアプリケーションで、設備予約と管理を行うものです。PCのブラウザでドラッグ&ドロップで予約の登録や変更が行えます。
  31. これをスマートフォン、スマートウォッチで参照し、 スマートフォンの方は、アプリの中にWebブラウザの画面がそのまま出しています。 モバイルブラウザではなく、アプリにすることで新規登録の通知を受け取ったり、スマートウォッチとの連動ができるようになっています。 ウォッチの方は、画面も性能も限られるので、今日の予定の一覧と、予定の追加だけができます。 次に仕組みを簡単に説明します。
  32. XPagesのDBは、Bluemix on Xpagesで動作しています。 Bluemixとは、アプリケーション・プラットフォームをクラウド上で提供されているものです。 XPagesで簡単に説明すると、Dominoサーバーがすでに用意されていて、そこに作ったDBをアップロードすると、すぐにインターネットに公開できるXPagesのサイトが作られる。 ただ、今回のWebアプリはBluemixだからといって特別なことはなく、通常のDominoでも同じように動作します。 XPagesに緑色の枠の各機能がRESTのインターフェースです。これをスマホから呼んでいます。実はブラウザで表示される画面からもこのRESTを使用しています。 話が長くなってしまいましたが、もう1つだけ。 Google cloud messaging は、androidの端末に通知を送信するための、Googleのサービスです。これもRESTで送信の指示を送ることができます。XPagesから他のオープンなRESTサービスも利用できる、ということですね。
  33. とあるお客様で、業務日誌をつけたい、というお話があり、よくよくきいてみると、グループ毎に記載する項目を変更したい、 という難しいものでした。
  34. これは、グループ毎に設定をもたせるようにし、そこではレイアウトや
  35. 入力する項目やそのタイプなどを設定できるようにしました。
  36. このように、他のシステムでは使われているオープンな仕様や仕組みを、 現在のDominoでは取り入れやすくなっています。 Dominoはそういったものを取り込むことによって、いままで撮りためているデータをより有効活用できるようになります。 皆様の組織でも、ご検討されてみてはいかがでしょうか? ご相談が有りましたら、この後の懇談会や別の機会のこの研究会等のテーマにするなどできると思います。 以上です。ありがとうございました。