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

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

2017年1月25日水曜日

IBM Watson Work ServicesでGraphQLを使ってみよう

皆さん、こんにちは。
いよいよ来月は、IBM Connect 2017が開催されます。気が付いたら1か月切ってたんですね。
準備を始めないと!


さて、今回もIBM Watson Workspaceについてのお話です。
第2回目の今日は、IBM Watson Work Servicesについてです。


前回も書いたように、まだ(2017年1月25日現在)、Preview版となっています。
その関係なのか、IBM Watson Workspaceを利用できるユーザであれば、だれでもIBM Watson Work Servicesを利用することができるようになっています。

そして、それを利用するためのドキュメントも用意されています。


IBM Watson Work Servicesを使うと何ができるのか?は、
ヘルプによると、
With Watson Work Services, you get a platform that delivers cognitive services that understand conversations and context.
These services are built to be consumed in other business tools such as social networks, voice and video, email, and more.


IBM Watson Work Servicesを使用すると、会話やそのコンテキストを理解するコグニティブサービスを提供してもらえます。

これらのサービスは、ソーシャルネットワーク、音声、ビデオ、e-mailなど、他のビジネスツールで利用できるように構築されています。
IBM Watson Work Services ドキュメントより抜粋(和訳は筆者)


では、そのIBM Watson Work Servicesとは?
ヘルプによると、
A set of cognitive collaboration services that you can use to inject new transformative capabilities into existing business applications or to create new apps that you build on top of the platform, accelerating your development time while adding a powerful cognitive differentiation from competitors.

既存のビジネスアプリに新たな変換機能を組み込んだり、
競合他社との間に、強力なコグニティブな差別化を追加しながら、
プラットフォーム上の新しいアプリの開発時間を短縮したりできる
コグニティブコラボレーションサービスのセットです。
IBM Watson Work Services ドキュメントより抜粋(和訳は筆者)

とあります。すみません、こっちの訳はホントに適当です(Google翻訳の結果を見ても意味が分からなかった…)。


この辺りは、あまり拘らずにドキュメントを見ていただいた方がいいでしょう(汗)

ちなみに、
IBM Watson Work Services Tour
のビデオで、IBM Watson Work Servicesのドキュメントをもとに説明が行われていますので、これから勉強したい。という方は必ず見ておきましょう(4分29秒と短いです)。



そして、ビデオを見てから、一通り、ヘルプを読んだら(理解できなくても、目を通すことをお勧めします!)、
こちらのリンク先にあるスライドを読みましょう。
Introduction to IBM Watson Work Services Development

IBM Watson Work Servicesの開発についての基礎情報が書かれています。
開発環境の準備(Eclipseを使うといいよ。と書いてあります)についてや、IBM Bluemix上で動かすためのサンプルコードについても載っていたりします。



上のビデオの中やスライドの中でもIBM Watson Work Servicesのプラットフォームについて述べていますが、図が出ています。
IBM Watson Work Services Platform

前回の記事でも少し述べましたが、上の図にあるように、APIは「REST API」「Webhook API」「GraphQL API」の3種類が用意されています。


これらのうち、GraphQLについては、デモツールが用意されています。

自分(IBM Watson Work Servicesにログインしているユーザ)の情報を取得するというコードを実行したのが下図です。
GraphQLの実行結果
リクエストパラメータを作成して、実行すると、結果がJSON形式のデータで返ってきます。
それだとREST APIと同じじゃないか!?と思われるかもしれません。

はい。その通りです。
GraphQLはREST APIの悪いところや苦手なところを改修するために作成されたもののようで、
使い方はあまり変わりません(細かく言えば違うのですが、ここでは触れません)。

大きな違いとしてはREST APIの場合、返ってくる結果の項目は、REST APIで用意している全項目とその値ですが、
GraphQLの場合、リクエストパラメータで指定した項目だけが返ってきます。
GraphQLの実行サンプルをもう一つ見てください。
GraphQLの実行結果2

さきほど実行したものとほぼ同じですが、リクエストパラメータに「created」「updated」「photoUrl」を追加しています。
そのため、実行結果にもその3つの項目と値が返ってきています。

このGraphQLを使うと、IBM Watson Workspace上に新しいスペースを作ったり、スペースにメッセージを投稿したり、会話の情報を取得したりすることもできます。



IBM Watson Workspaceでチャットを楽しんで機能を理解した後に、このGraphQLのツール(GraphiQLと呼ぶようです)を使って、IBM Watson Work Servicesの機能を理解してみるとわかりやすいでしょう。

どのようなコードがかけるかは、IBM Watson Work Servicesのドキュメントにサンプルとともに書いてありますので、それらを実行して試してみるとよく理解できますよ。



次回ですが、GraphQLをツールではなく、プログラムで実行する方法について探ってみたいと思います(でっきるかなぁ???)



それでは今日はこの辺で・・・





Notes/Dominoで困ったことがあれば、弊社にお問い合わせください。
IBM Championの私が承ります!
お問い合わせはこちらから→Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

2017年1月24日火曜日

IBM Watson Workspaceを使ってみよう。

皆さん、こんにちは。
当ブログも今年でなんと10年目に突入します。10年って・・・Notes/Dominoだけでそんなに続けられるってどうよ!?ってなもんです。


0.はじめに

当ブログはNotes/Dominoについて書いているのですが、たまには違う話を書いてみよう。
ということで、
今回は「IBM Watson Workspace」とそのAPIである「IBM Watson Work Services」について書いてみます。

ただ、とても1回では書ききれないので、何回かに分けて書いていこうと思います。
何回になるかは全く分かりません。

なお、これから書くの記事についての内容は、すべて個人的に調べたものであり、結果については保証するものではありません(英語の文献しかないんだもの)。
鵜呑みにせず、自分自身で動かして、そして試して結論を出してください。

では行ってみましょう!


1.IBM Watson Workspaceとは?

IBM Watson Workspaceとは、多人数で利用するチャットのようなサービスです。
ですが、それだけではなく、 色々な機能を包含してます。
詳しくは、2016年11月に行われたテクてくLotus技術者夜会での資料に書いてありましたので、抜粋します。
さまざまなデバイスから永続性のあるワークスペースへのアクセスを可能とし、効率的なチーム内の”会話”環境を実現

・直感的で使いやすいモバイルおよびWebアクセスを提供
・チーム内での会話とコンテンツの共有
・コグニティブよって会話の進行を強力に支援

URLは、
https://workspace.ibm.com
です。
ただし、まだPreview版ということで、限られた人しか利用できません(招待制になっています)。
招待してほしい場合は、IBM IDを取得して、その取得に利用したメールアドレスをすでにIBM Watson Workspaceを利用している人に教えて招待してもらってください(あ、私でもいいのか(笑))。

下の画像がIBM Watson Workspaceを起動したものです。
IBM Watson Workspaceの画面

Webブラウザもしくはスマホのアプリ(Android、iOSともにあります)のいずれかで利用できます。
ログインするにはIBM IDが必要になります。
なお、利用できるブラウザはFirefoxもしくはChromeになります(IE11だとサポートしてませんという旨のメッセージが表示されます)
※Operaでも動きました。


画面左側がスペースの一覧になります。
都合上、一つしか見せていませんが、自分が参加しているスペースの一覧が表示されることになります。
こちらのスペースは、自分で作成することができ、そこにメンバーを追加することでメンバー間でチャットや情報の共有を行うことができます。Preview版の現時点では、好き放題スペースを作れそうです(笑)。

画面右側が会話と呼ばれる場所です。
ここにメンバーが書き込んだ情報が表示されます。
誰が書き込んだのかがすぐにわかるようにアイコンで表示されています。
書き込むことができるのは、文字の他に、ファイルや貼り付け画像(クリップボード経由)です。


その他にも色々機能はありますが、ここではその説明は割愛させていただきます。


2.IBM Watson Work Servicesとは?

IBM Watson Work Servicesとは、IBM Watson Workspaceを拡張するためのもので、APIが提供されています。
詳しい説明は、こちらも先ほど紹介した資料の中に説明がありましたので、抜粋します。
プラットフォームサービスでできること

スペースの作成、人のコンテキスト
-メンバーシップ
-会話

会話への貢献
-メッセージとアノテーション

会話の監視
-イベント通知

コグニティブサービスの利用
-会話のモーメント
-要約の作成
-必要なアクションの検知

APIはREST API、Webhook API、GraphQL APIの3種類が用意されていて、ドキュメントも整備され始めてきています(まだ完全ではありません)。
URLは
https://developer.watsonwork.ibm.com/
ですが、IBM Watson Workspaceに参加していないとドキュメントは閲覧できません。
しかも、閲覧できたとしても、すべて英語です!

しかし!大丈夫です。そんなに難しいことは書いていません。この私でも読んでなんとなく理解できました(わからないところはgoogle翻訳で・・・)。

このAPIを使うと、IBM Watson Workspaceの情報を取得したり、メッセージを書き込んだりすることもできるようになります。

ただチャットとして使うだけでなく、一つ上のステージで利用することができるようになる(はずな)のです!
これは覚えないわけにはいかないでしょう!
しかも「REST API」が含まれていますからね、フフフ。



3.これからの進め方


さて、私のブログでは、上記2つのうち、IBM Watson Work Servicesに特化して話を進めていきます(IBM Watson Workspaceの方は普通に使っていればだんだん覚えていくでしょうから)。
そしてREST APIがあるよと言っておきながら、そこはあまり触れず(もう、覚えてるし、このブログでも何度も書いているから…)、他の2つのAPIにフォーカスしていきます。


まず、次回はIBM Watson Work Servicesで使われるGraphQLについて少し書いてみようかと思います。
どんな感じで進んでいくのかまったくわかりませんが、書いていきます。




それでは今日はこの辺で・・・





Notes/Dominoで困ったことがあれば、弊社にお問い合わせください。
IBM Championの私が承ります!
お問い合わせはこちらから→Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

2017年1月23日月曜日

コントロールがラベルコントロールに関連付けられているか調べるには?

皆さん、こんにちは。もう1月も10日も残っていません。早いです。早すぎます。
まだ何もしてません・・・

ということで、新年一発目の話題に入りましょう。
ここ数年、一発目は簡単な話題から入っていますので、今年もその慣例に従っていきます。


今日はXPagesの話題です。

あまり使うことはないような気もしますが、「へぇ」という関数があったので、その紹介をします。
その名も「getLabelFor」関数です。

グローバル関数と呼ばれるもので、SSJSでの利用が可能になっています。
機能としては「UI コンポーネントに関連付けられたラベルの基本オブジェクトを取得します。」となっています。

どういうことかというと、
ラベルコントロールを配置すると、「ターゲットコントロールの選択」というプロパティがあります(ソースで見ると、forというパラメータです)。
ラベルコントロールに「ターゲットコントロール」を設定

ここに値が設定されていれば、そのコントロールを引数にしてgetLabelFor関数を実行すると、このラベルコントロールが取得できるというものです。

では、実際のコードを見てみましょう。
var compnentName = getComponent( "select_ComboBox1" ).getValue();
if ( compnentName == null || compnentName == "" ) return "";
var ret;
try {
    return getLabelFor( getComponent(compnentName) ).getValue();
} catch(e) {
    return "No label";
}


汎用的にするために、コントロールの名前の一覧をコンボボックスに設定しています。
それが「select_ComboBox1」の値です。
getLabelFor関数の引数はコントロールのオブジェクトなので、
getComponent(compnentName)で指定した名前のコントロールを取得して、それを引数にしています。
関数の結果もコントロールのオブジェクトです。

今回のサンプルでは、ラベルコントロールにはどのような値が設定されているのかを表示するようにするために、getValue()で値を取得して、それを返しています。
指定したコントロールにターゲットが設定されていない場合は、getLabelFor関数がエラーを返すので、catchで「No label」を返すようにしています。

実行結果がこちらです。


動画でも見てみましょう。
video

どうでしょう?
コントロールの名前を変更するたびに、そのコントロールをターゲットにしたラベルコントロールの値が表示されていますね。

本番環境では使い道はなさそうですが、本番環境にリリースする前のテストツールとして考えるとよいのではないでしょうか?

何か良い用途が思いついたら、コメントで残してください。

それでは今日はこの辺で…









Notes/Dominoで困ったことがあれば、弊社にお問い合わせください。
IBM Championの私が承ります!
お問い合わせはこちらから→Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ