当ブログに掲載しているサンプルは、すべて利用者の自己責任という形でお願いします。
ただし、明らかな不具合がある場合、ご連絡いただければ、訂正記事を出します。
また、こちらのサンプルは、別のサイト等への公開、転載は一切禁止しています。
どうしてもと言う場合は、筆者にあらかじめご連絡ください。
記事そのもののリンクについてはご自由に行っていただいてよいです。

テクてく Lotus 技術者 Slack に参加しよう!

2016年8月26日金曜日

XPages研究会のハンズオンをまとめましたよ(1)

みなさん、こんにちは。
8月も終わりに差し掛かっているというのに暑い日が続いています。

さて、私はノーツコンソーシアムという団体に参加しています。
さらに、その中のXPages研究会(月一開催、コンソーシアム会員のみ参加可能)に参加しています。
今年のテーマは、「Bluemixとの連携(twillio, node-red関連)をやってみたい」(あわよくば、業務で使えるアプリを開発したい)です。

4-6月はIBM BluemixやNode-REDについての学習や、IBM BluemixにXPageアプリをデプロイする方法について学習しました。
7-8月は、実際にアプリケーションを作ってみようということで、ソルクシーズ 吉田さんの記事(こちら)をもとにして、全部をIBM Bluemix上で実現してみよう!ということをやってみました。

吉田さんの記事ではNode-REDもDominoもオンプレミス環境にあるのですが、それを全部IBM Bluemix上に移植してみようということです。


実は、私の説明が悪かったため、参加者の皆さん、「何をどうすればいいのよ???」という状態だったようで、反省を兼ねて、実装方法をまとめることにしました。


今回やろうとしていることを図に示すとこんな感じかな?
TwitterのデータをNode-REDを経由して、XPages NoSQL Databaseに格納
TwitterのつぶやきデータをNode-REDを経由して、XPages NoSQL Databaseに格納します。
そのXPages NoSQL Databaseに格納された文書をXPages on BluemixのアプリでWebブラウザから参照する。
といった感じです。


では、実際の方法を見ていきましょう。
※実際のXPages研究会での実装手順に基づいているため、順番は最適化されていませんのでご了承ください。

0.前提条件

  • IBM Bluemixアカウントを所持している
  • IBM Domino Designer 9.0.1 FP6をインストール済み
  • XPages Extension Library Release 15以上がインストール済み
  • IBM Domino DesignerのプリファレンスでIBM Bluemixの設定が完了している

IBM Bluemix上にアプリを作成するので、アカウントは作っておくことが必要になります。
また、XPagesアプリケーションを作成するので、IBM Domino Designerが必要になります。さらに、Bluemixへアプリケーションをデプロイするためには、XPages Extension Libraryをインストールしておく必要があります。


1.Node-REDアプリを作成

  • Bluemixのダッシュボードから「Cloud Foundryアプリ」にある[アプリの作成]をクリックする
Cloud Foundryアプリの作成
  • 「どのような種類のアプリを作成しますか?」を聞かれるので、[Web]をクリックする
  • 「どのように開始しますか?」を聞かれるので、[ボイラープレートの参照]をクリックする
  • 画面下に「ボイラープレートの参照」が表示されるので[ボイラープレートの参照]をクリックする
  • ボイラープレートの一覧が表示されるので、[Node-RED Starter コミュニティー]をクリックする
  • Node-RED Starter コミュニティの作成画面になるので、[名前]にアプリケーションの名前を入力する(*1)

  • [作成]をクリックする(*2)
  • アプリケーションのステージングが完了するのを待つ
  • 「アプリは実行中です。http://~」の表示になったら、[http://~]のリンクをクリックする
  • Node-REDの初期画面が表示されるので、[Go to your Node-RED flow editor]をクリックする
*1 任意で良いが、Bluemix全体でユニークである必要があるので、自分のものと分かり易いような名前をつけること
*2 名前以外の項目はデフォルトのままで良い

このままNode-REDのアプリ作成に突入したいところですが、Twitterから取得したデータをBluemix上のXPages NoSQL Databaseに格納するので、そのサービスを作っておく必要があります。

2.XPages NoSQL Databaseサービスを作成

  • IBM Bluemixのダッシュボードに戻り、「サービス & API」にある[サービスまたは API の使用]をクリックする
  • サービスの一覧画面になるので、画面一番下にある[Bluemix Labs Catalog]をクリックする 
  • IBM Bluemix Labs Catalogの一覧画面になるので、「データおよび分析」にある[XPages NoSQL Database]をクリックする
  • XPages NoSQL Databaseの作成画面になるので、そのまま[作成]をクリックする
  • IBM XPages NoSQL Database Serviceの画面になるので[LAUNCH]をクリックする
  • IBM XPages NoSQL Database Service Dashboardの画面になるので、[Download ID]をクリックする
  • Notes User IDがダウンロードされるので保管しておくこと(*3)
  • Node-REDで使用するユーザを登録するので「Web End Users」にある[Manage Web End Users]をクリックする
  • ユーザ名の一覧が表示されるので、[Create Web End User]をクリックする
  • FirstName、LastName、Passwordを入力したら[Create]をクリックする
  • ユーザーが作成されて一覧に表示される

*3 パスワードは「Password」欄に書いてある([Show]をクリックすると表示される)


XPages NoSQL Databaseの実体は、Notes DB(****.nsf)です。Bluemix上に作成されるのでアクセスするには専用のNotes User IDが必要であるということです。


3.Notes DBを修正する

  • ダウンロードしたBluemix用のNotes User IDを使ってDomino Designerを開く(*4)
  • IBM XPages NoSQL Database Service Dashboardの画面にある「Active DBs」の「DB Path」を参考にしてNotes DBを開く
  • フォームを作成する(フォーム名は任意ですが、ここでは「fmTwitter」としておきます)
  • フォームに日付フィールドとテキストフィールドを作成する(フィールド名は、それぞれ「created_dt」「body」としておきます)
  • フォームを保存する
  • 作成したフォームの文書だけを表示するビューを作成する(ビュー名は任意ですが、ここでは「vwTwitter」としておきます)
  • ビューの列情報は任意で作成してよい
  • Notes DBのACLにIBM XPages NoSQL Database Service Dashboardの画面で作成したユーザをエントリしておく(*5)

*4 ロケーション文書を作成して、Bluemix用のDomino Serverに接続できるようにしておくこと
*5 アクセス権は[編集者]にしておくこと


これで、Twitterのデータを格納するためのNotes DBが出来上がりました。
いよいよ、Node-REDアプリを作成します。

4.Node-REDのフローを作成する

  • Node-REDのコーディング画面にもどり、ノードを作成する
※ノードの作成方法については、前述した吉田さんの記事を参照してください。
  • 作成したら[Deploy]をクリックする


これでTwitterから何かつぶやけば、XPages NoSQL DatabaseにNotes文書として格納されます。
つぶやいてから、文書として格納されるまでに時間がかかります(私の場合、1分以上かかってました)。

あとはXPagesアプリを作って参照できるようにするのですが、今日はここまでとします。
続きはまた今度。


0 件のコメント: