Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Domino & REST

2,037 views

Published on

Notesコンソーシアム 九州地区研究会 2016 のセミナーで説明に使ったスライドです。
RESTとは、なぜRESTなのか、DominoでRESTを使うには?その事例などの紹介です。

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Domino & REST

  1. 1. IBM Domino & REST 2016年6月10日 Notesコンソーシアム 九州地区研究会 2016 6/9/2016 Ricoh IT Solutions Co.,Ltd. 1 海老原 賢次 リコーITソリューションズ株式会社 鹿児島事業所
  2. 2. 資料をslideshareで公開しています • Slideshareで公開していますので、後ほど振り返りでご利用くだ さい。 • http://www.slideshare.net/kenjiebihara71 または または 2016/6/9 Version: [0.1.0] Classification: Internal Owner: [EBIHARA Kenji] 2 XPagesで行こう! 検索 slideshare ebihara kenji 検索
  3. 3. 参考サイト • 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
  4. 4. 参考サイト • 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
  5. 5. 本日のお題 6/9/2016 Ricoh IT Solutions Co.,Ltd. 5 1. RESTとは 2. なぜRESTなのか 3.REST コントロール 4.事例紹介
  6. 6. 本日のお題 6/9/2016 Ricoh IT Solutions Co.,Ltd. 6 1. RESTとは 2. なぜRESTなのか 3.REST コントロール 4.事例紹介
  7. 7. RESTとは  システム間、またはシステムとクライ アント間との通信方法の アーキテクチャ思想の1つ。 6/9/2016 Ricoh IT Solutions Co.,Ltd. 7
  8. 8. RESTとは  ブラウザでHTMLページを表示するの と同じ、HTTPでデータをやり 取りする。(Web API)  呼び出しもURLで呼びだす。(リクエストす る)  よって、サーバー側にはWebサービス が必要。 6/9/2016 Ricoh IT Solutions Co.,Ltd. 8
  9. 9. RESTとは  やり取りするデータの種類に規定はな い  最もよく使われるのが、JSONと呼 ばれるテキストデータ。 – JSONの他にXMLが使われる場合もある。 6/9/2016 Ricoh IT Solutions Co.,Ltd. 9
  10. 10. JSONとは  データの構造を表現する、テキスト形式のデータ。 { // 中括弧でオブジェクトを表現 "lastName": "海老原", // 項目名:値の形で書く "firstName": "賢次", "age": 41, "skill": [ // 配列 "domino", "XPages", "C#", "java" ], "address": { // オブジェクトの入れ子 "address1": "鹿児島県鹿児島市吉野町", "address2": "xxx-xxx" } } 6/9/2016 Ricoh IT Solutions Co.,Ltd. 10
  11. 11. RESTとは 6/9/2016 11Ricoh IT Solutions Co.,Ltd. ブラウザ サーバー HTTP(リクエスト) HTTP(レスポンス) HTM L クライアント APP サーバー HTTP(リクエスト) HTTP(レスポンス) JSO N JSO N
  12. 12. RESTとは  HTTPで通信するときに、メソッド と言われる呼び出す型(動詞)を指定 する。 6/9/2016 Ricoh IT Solutions Co.,Ltd. 12
  13. 13. HTTPのメソッドとは  HTTPのリクエスト(呼び出し)するときに、呼び出しの 目的を指定することができる。  種類は、HTTPの規約で決まったものがある。 よく利用するメソッド • GET … リソースの取得(ブラウザでHTMLを開くときもこれ) • POST … リソースの作成、追加(*1) • PUT … リソースの更新(*1) • DELETE…リソースの削除 (*1:正確に表記すると、POSTは"べき等"でない、その他は"べき等"である、という条件が付きます。) これ以外にも、OPTIONS、HEAD、PATCHなどがある。 6/9/2016 Ricoh IT Solutions Co.,Ltd. 13
  14. 14. 本日のお題 6/9/2016 Ricoh IT Solutions Co.,Ltd. 14 1. RESTとは 2. なぜRESTなのか 3.REST コントロール 4.事例紹介
  15. 15. RESTのメリット 6/9/2016 Ricoh IT Solutions Co.,Ltd. 15 ビジネスロジックが一元化され、メンテナンス性が向上 いろいろなシステム・サービスとリアルタイムで連携しやすくなる。 シンプル。すぐに作れる。すぐ使える。 モバイルアプリなど独自のUIが提供できる。
  16. 16. REST…WebAPIを設計する  XPagesなどWebアプリケーションは、主にブラウザで情 報を閲覧したり、入力したりするのが目的。  でも、データの入り口が増えたら・・・? Domino Database XPages BL View BL…ビジネスロジック 6/9/2016 Ricoh IT Solutions Co.,Ltd. 16
  17. 17. REST…WebAPIを設計する  例えば、CSVファイルをエージェントで取り込むとした 場合、XPagesとエージェントで同じ処理を書かなくては ならない。→メンテナンス性低下。工数増。 Domino Database XPages BL View BL…ビジネスロジック エージェント BL 同じものを用意する必要がある CSVファイル 6/9/2016 Ricoh IT Solutions Co.,Ltd. 17
  18. 18. REST…WebAPIを設計する  RESTによるWebAPIを作成することで、ビジネスロジッ クを統一できる。 メンテナンス性が向上。工数減。 Domino Database XPages BL View BL…ビジネスロジック REST API 6/9/2016 Ricoh IT Solutions Co.,Ltd. 18
  19. 19. 本日のお題 6/9/2016 Ricoh IT Solutions Co.,Ltd. 19 1. RESTとは 2. なぜRESTなのか 3.REST コントロール 4.事例紹介
  20. 20. 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.
  21. 21. 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
  22. 22. RESTコントロールの使い方  はじめに、空のXPagesに"REST"サービスコントロールを ドラッグ&ドロップする。 6/9/2016 Ricoh IT Solutions Co.,Ltd. 22
  23. 23. 呼び出しの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
  24. 24. メソッド毎の処理を書きます  "service"で作成するRESTの種類を選択します。  ここでは、汎用的なREST APIが作れる "customRestService"を選択します。 6/9/2016 Ricoh IT Solutions Co.,Ltd. 24
  25. 25. メソッド毎の処理を記述する  doGet, doPost, doPut, doDeleteに、それぞれのメソッド で呼ばれた時のサーバーサイドスクリプトを記述します。  まずは、GETメソッドに対応するサービスをつくります。  ここでは、キーワードを指定してビューからそのキーに一 致した文書の一覧をJSONで返すことにします。 6/9/2016 25Ricoh IT Solutions Co.,Ltd.
  26. 26. 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() で取得する場合、自動的にデコードして元の 文字を返します。
  27. 27. レスポンスで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文字列に変換して返す
  28. 28. POSTのデータを受け取る  GETの場合は、値を渡すのが目的なので、受け取るパラ メータは少ないことが多いので、URLパラメータで十分。  POSTやPUT(新規登録、更新)の場合は、複数の多くの 項目を受け付ける必要がある。  POSTやPUTでは通常、リクエストBodyでフォームの値や JSONを受け取る必要がある。 6/9/2016 28Ricoh IT Solutions Co.,Ltd.
  29. 29. 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
  30. 30. Dominoの設定 6/9/2016 Ricoh IT Solutions Co.,Ltd. 31 Dominoで、GET,POST 以外のメソッドを受け取れるようにするには、「イ ンターネットサイト」設定文書を作成し、使うメソッドを許可する必要が あります。 サーバー設定文書 インターネットサイト文書
  31. 31. 本日のお題 6/9/2016 Ricoh IT Solutions Co.,Ltd. 32 1. RESTとは 2. なぜRESTなのか 3.REST コントロール 4.事例紹介
  32. 32. スマートフォン&スマートウォッチ連携 6/9/2016 Ricoh IT Solutions Co.,Ltd. 33
  33. 33. 施設予約アプリ  設備予約アプリ  http://equipmentreservation.mybluemix.net/EquipmentRes ervation.nsf/index.xsp 34
  34. 34. androidアプリ+スマートウォッチ 35
  35. 35. システム構成 36 XPages on 通知 通知 REST REST REST GCM XPages 通知 予約一覧取得 予約詳細情報取得 新規予約登録 予約変更 メッセージ送信 Google cloud messaging
  36. 36. Q&Aアプリ 6/9/2016 Ricoh IT Solutions Co.,Ltd. 37
  37. 37. Q&Aアプリ REST API計画  オープンなNotes関連の質問Webページ。九州地区Notes パートナー会技術部会で作成  http://qa.xpages.jp/  これにRESTでデータが取得できるよう、準備中 6/9/2016 38Ricoh IT Solutions Co.,Ltd.
  38. 38. 外部システムとの連携 6/9/2016 Ricoh IT Solutions Co.,Ltd. 39
  39. 39. • 大量の添付ファイル(100GB超)があるため、Dominoの 1DBのみでは管理が困難 • ファイルはSQL Serverにバイナリ・データとして格納 • Domino 8.5.1のためExtension Libraryは使用できなかった が、オープンソースのJavaライブラリを利用することで低 コストで実現。 6/9/2016 40Ricoh IT Solutions Co.,Ltd.
  40. 40. 事例 Version: 1.0.0 Classification: Internal Owner: EBIHARA Kenji09/06/2016 41 DB内にバイナリでファイルが UNIDをキーとして保存する SQL Server Domino アクセス・コントロール 書誌情報を格納 それぞれの長所を活かすとともに、 利用者にシームレスでリアルタイムなサービスを提供することが可能に! ファイルはWebサービスから 直接アップ&ダウンロード 他のシステムからも Webサービスを利用 ファイル 一覧情報JSON ファイルの一覧を取得して XPages内に表示 Webサービス DBサーバー
  41. 41. JSONの活用 6/9/2016 Ricoh IT Solutions Co.,Ltd. 42
  42. 42. 動的フォーム 入力画面(1) 2016/6/9 43 設定に合わせて表を表示
  43. 43. 動的フォーム 入力画面(2) 2016/6/9 44 追加ボタンを押すと、行追加のダイアログ ボックスが表示される 設定されたデータ型に応じて フォームが変わる
  44. 44. 動的フォーム 設定画面(1) 2016/6/9 45 テーブルのレイアウトを選択可能
  45. 45. 動的フォーム 設定画面(2) 2016/6/9 46 テーブル毎に10項目まで指定が可能 項目のタイプを選択可能 テーブルでの列幅を指 定 入力文字数の制限

×