こんにちは。米原です。

今回はイベントのご案内です。

ノーツコンソーシアムの大型イベントが2024/02/16(金)に開催されます!

ノーツコンソーシアムは、HCL Notes/Domino 日本最大のユーザーコミュニティです。
もちろん弊社ケートリックもコミュニティに参加しています!

 

ノーツコンソーシアム FESTA 2024

開催日時:2024年2月16日(金):14:30~17:45 (受付開始:14:15~)
開催会場:アキバプラザ(東京千代田区)6F セミナールーム3
参加費:無料、事前申込不要

・ノーツコンソーシアム会長挨拶・基調講演
・研究会発表
・HCLジャパン Notes/Domino 35周年とV14など
などなど色々ないい話が聞けるはずです!
弊社のメンバーも発表予定ですよ。

詳しくはこちらを

https://www.notescons.gr.jp/home.nsf/event.xsp?action=openDocument&documentId=E327A212EDD66A6B49258A6A002F4B1E

ノーツコンソーシアム 30周年記念イベント

開催日時:2024年2月16日(金):18:00~20:00 (受付開始:17:45~)
開催会場:アキバプラザ(東京千代田区)5F レセプションホールAB
参加費:無料、事前申込制

ノーツコンソーシアム30周年、Notes/Domino35周年となり、皆様でお祝いするイベントとなります。
皆さんで集まってお祝いしましょう!

こちらは事前申込が必要ですのでご注意を!!
お申込みはこちらから イベントの詳細もご確認できます。

https://30anniversary.notescons.gr.jp/

 

それでは、現地でお会いできることを楽しみにしております!

XPagesリッチテキストコントロールのカスタマイズ

XPagesのリッチテキストコントロール カスタマイズ

Notes/Dominoエンジニア XPages担当の米原です。

まだまだ現役でXpagesの開発を行っています!
最近行き詰まったところがありましたで備忘としてブログに残すことにしました。

リッチテキストの入力高さを固定(縦スクロール付き)方法

リッチテキストを画面に配置したのですが、文字を入力して改行していくと、
自動で入力枠が縦に広がり結構縦に長くなり1画面の領域を結構占領してしまいます。
どうにか縦の幅を狭くしたいと思いました。

入力をするとどんどん広がって他の項目が見えなくなったりします。

Dojo属性を追加することによりCKEditorのConfig値を変更しました。
autoGrow_maxHeight:縦幅の広がった際の最大値

こんな感じで最大枠を指定できます。長くなる場合は縦のスクロールバーが機能します。

ツールバーを消す方法

今回の場合上のツールバーも不要なので消したいと思います。

同じように、今度は nameに toolbar 、valueに [[]]  これで上のツールバーは消えます。

この様にしてすっきりしました!
ここで「tootbar」 の「value」 に表示したいアイコンを選択することも可能です。

詳しくはこちらを参照してください↓
https://www.ktrick.com/xpages-richtext-ckeditor-toolbar-customize/

設定値などは、こちらを参考にしました。
https://docs-old.ckeditor.com/ckeditor_api/symbols/CKEDITOR.config.html

また色々と試したいと思います!


DominoV9→DominoV12 バージョンアップでXpagesエラーが発生した件

こんにちは。Xpages担当の米原です。

本日はXpagesでDominoV9からDominoV12にバージョンアップした際にハマったエラーの回避方法についてのお話です。

V9のサポート期日が迫っていまして、V12に更新されるお客さんが増えてきています。
そう、NotesDominoはどんどん進化してその都度便利な機能が追加されています!
V9で終わりではないですよ!!!

リリース情報その1

リリース情報その2

安心してNotes Domino 使い続けましょう。

さてさて本題に戻りまして

今回発生した問題はこちらの機能です。

  1. ボタン押下でダイアログを表示
  2. ダイアログ内で処理を実行(入力フィールドの値などセット)
  3. ダイアログ内で更新したものをダイアログを閉じるときのイベント(onHide)で部分更新

    OKボタンで更新するのは、OKボタンのイベントに処理を追加で可能なのですが、
    「x」ボタンが押された時にも反映したい場合があり、そのためにonHideイベントに部分更新のIDをセットしそのエリアを更新するように使用していました。

ここで、最後の「×」やOKでダイアログを閉じる際に、onHideが機能するのですが、
何とエラーになってしまってます。。
V9では大丈夫だったのに、V12ではこの使い方はダメなようです。

簡単なサンプルで確認したらこのようなものになります。

ダイアログ起動ボタン押下でダイアログ起動

「×」ボタン押下

エラー発生となります。

設計はこのようなものです

	<xe:dialog id="dlgTest" title="入力用ダイアログ">
		<xp:panel>
			ボタン押下で値がセットされ、×ボタンで値が更新します。<br/>
			<xp:button value="値をセット" id="button5">
				<xp:eventHandler event="onclick" submit="true">
					<xp:this.action><![CDATA[#{javascript:getComponent("testText").setValue("値がセットされました。")}]]></xp:this.action>
				</xp:eventHandler>
			</xp:button>
			<xp:button value="値をクリア" id="button1">
				<xp:eventHandler event="onclick" submit="true">
					<xp:this.action><![CDATA[#{javascript:getComponent("testText").setValue("値がクリアされました")}]]></xp:this.action>
				</xp:eventHandler>
			</xp:button>
		</xp:panel>
		<xp:eventHandler event="onHide" submit="true" refreshMode="partial" refreshId="testPan" disableValidators="true">
		</xp:eventHandler>
	</xe:dialog>

色々と調べた所、、、

どうも部分更新のエラー処理がV10から変更されているようでその影響の様です。

こちらに情報がありました 参考URL

回避策として、

Xspプロパティに「xsp.error.disable.detection.set01=true」をセットすることで
V9.0.1でのエラー処理に戻すことが可能です。

それでは、Xspプロパティを更新した状態でもう一度実行すると

「値をセット」ボタン押下後に、「×」ボタン押下すると

「値がセットされました。」と文言が更新されました。期待通りの動作です。

似た様な現象が発生した場合は参考になればと思います。

それでは本日はここまでで。


XPagesで同じカスタムコントールを使用する場合のID被りへの対処法

Notes/Dominoエンジニア XPages担当の米原です。

今回もXPagesのお話です!

共通して使用しているカスタムコントロールを同ページで複数使用する必要がある場合、

例えばこんなパターン

<xp:panel>
	<xc:ccFormSample02>
		<xc:this.rendered><![CDATA[#{javascript:param.get("paramTEST") == "01"}]]></xc:this.rendered>
	</xc:ccFormSample02>
	<xc:ccFormSample02>
		<xc:this.rendered><![CDATA[#{javascript:param.get("paramTEST") == "02"}]]></xc:this.rendered>
	</xc:ccFormSample02>
</xp:panel>

「ccFormSample02 」カスタムコントロールをURLパラメータの値で表示/非表示の切り替えを行っています。

↑ paramTEST=01 の場合
↑ paramTEST=02 の場合

今回は設計が複雑ではない簡単なカスタムコントロールを用意しましたが、実際運用される場合はもっと複雑

で複数配置を目的としたカスタムコントロールがあるかと思います。

例えばこのようなときが想像できます。

カスタムコントロールA(共通して使用したい。)

画面の表示をURLパラメータで切り替えている場合

画面Aでは「カスタムコントロールA」情報が重要になるので一番上に表示させたい。

画面Bでは「カスタムコントロースA」情報はあまり重要ではないので一番下に表示させたい。

そのような場合に同じカスタムコントロールを同画面に配置してURLパラメータで切り替えることで実装したりします。

表示・非表示切り替えで対応する場合に問題になるのが、IDの問題です!
今回は共有箇所のInputTestフィールドにIDを付与していてそのIDを元に値をセットしている場合があります。

<xp:tr>
	<xp:td styleClass="tblHead">
		<xp:label id="label2"
			for="orderNumber1">
			<xp:this.value><![CDATA[#{javascript:
var ret = "";
ret = "共通箇所"
return ret;}]]></xp:this.value>
		</xp:label>
	</xp:td>
	<xp:td>
		<xp:inputText id="test001"></xp:inputText>
	</xp:td>
</xp:tr>

id="test001" 箇所ですね。

例えば初期値に値をセットさせたい場合でこのように値をセットしている場合

	<xp:this.afterPageLoad><![CDATA[#{javascript:
getComponent("test001").setValue("test");
}]]></xp:this.afterPageLoad>

「 getComponent("test001").setValue("test"); 」このような方法で表示の値をセットすると、

結果的には

↑ paramTEST=01 の場合
↑ paramTEST=02 の場合

paramTEST=01 の場合 は初期値に 「test」がセットされていますが、 paramTEST=02 の場合 は値がセットされていません。

これはIDが被っているので最初に見つけた所のIDにセットされるようになります。

もう少し詳しく説明しますと、 getComponent("test001") .setValue("test") とすると、最初の id="test001"が取得されて、そちらに値がセットされてしまいます。

非表示の方法としてrenderをfalse にしたり、 style に display:none をして非表示にしたりしますが、 getComponent では非表示にしても取得されていまうので、そのような現象になってしまいます。

さてさて、どうしたものかな~と。。。。

そこで活躍するのが「loaded」です!

<xp:panel>
	<xc:ccFormSample02>
		<xc:this.loaded><![CDATA[${javascript:param.get("paramTEST") == "01"}]]></xc:this.loaded>
	</xc:ccFormSample02>
	<xc:ccFormSample02>
		<xc:this.loaded><![CDATA[${javascript:param.get("paramTEST") == "02"}]]></xc:this.loaded>
	</xc:ccFormSample02>
</xp:panel>

loaded は ページ作成時にコントロールを作成するかどうかですので、どちらかのカスタムコントールしか作成されなくなり、IDが被ることが無く期待した動作になるということになります。

loadedを使用した場合のparamTEST=02

無事期待する動作となりました。

今回のパターンでは 「rendered」では都合が悪く、「loaded」を使用しましたが、「loaded」は一度「false」にしてしまうと、ページ全体をロードしなおさないと表示の切り替えができません。「rendered」に関しましては、部分更新で表示/非表示の切り替えが可能となります。

両方使える場合では「 loaded 」が「false」の場合はカスタムコントロールを一切読み込まないので、余分にメモリを消費しないことや処理速度も 「rendered」 に比べて早いのではないかと考えられます。

用途に合わせて使うのがよろしいかと思います。

似た様なことでお困りの際はお試ししてください。

ではでは本日はこの辺で失礼いたします。


Domino DesignerでXPageを開いた際に開くのが遅い時の対応

Xpagesの設計をDesignerで開いた際に遅い件

Notes/Dominoエンジニア XPages担当の米原です

設計をDesigerで開いた際におそい~と思ったことはないでしょうか??

設計が少ない場合はそうでもないのですが、
より複雑になった場合、カスタムコントロールの数が多くなっていきだんだん遅くなりますよね。

回避策としまして

  • 冗長な処理をなくす
  • DBを分ける
  • PCのスペックを上げる。メモリ増幅 ^^;

などが考えられます。

ここでは取り上げる方法は、Desigerで設計を開いた際により早く開くことができるのと、
やりようによっては設計が見やすくもそうでなくもなります。

今回は1つのカスタムコントロールに5個のカスタムコントロールをセットしているもので試してみます。
これくらいなら特に遅くもならないのですが、実運用しているものでしたら、カスタムコントールの中に
カスタムコントロールはいっぱい入っているケースがあり、特にリピートコントロールは遅く成る要員の一つです

カスタムコントロール ccFormMain02

上図ではどのようなコントロールが配置されているとかがすぐわかるのでいいのはいいのですが

①のカスタムコントロールを開きまして、プロパティの設計定義を開きます。
そこに、XSPの形式で入力します。テスト的に下図のように設定します。

設定後に再度ccFormMain02を確認すると
test と表示されます。
ん、、、、見にくい

コメントは少し装飾しました。うんいい感じです

マークアップ式はこんな感じです↓

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:xc="http://www.ibm.com/xsp/custom"
    xmlns:xe="http://www.ibm.com/xsp/coreex">
	<div style="border: 2px solid #A9A9A9; padding: 3px; margin: 5px;">
		<h1>添付用のリッチテキスト</h1>
		<div>
			フォームA,Bで使用予定
		</div>
	</div>
</xp:view>

こんなふうに全て記入すると。。。

見やすくなりましたね、マークアップ箇所は基本のHTMLで記入するだけなのでお好みいに合わせて
カスタマイズできます。

ということで、見やすくなりました。めでたしめでたし!

あれれちょっと待った~表示が変わっただけなのでは、、、、

と思いきや、これで設計を開くときには今回のマークアップの設計定義を読み込むので
設計は格段に速く開くことが可能になります。

さすがに今回のサンプル的なのでは速さは体感できませんが、カスタムコントロールが増えて
複雑化してきたら結構ストレスがたまる位に起動が遅く成りますのでその際には体感できるかと思います。

それでは今回はここまでとします。


【11/26(金) 13時30分配信】HCL&ケートリック&ライブネス 共催ウェビナー~Microsoft 365連携したドミノアプリの活用事例~のご案内

11/26(金) 13時30分〜配信

HCL&ケートリック&ライブネス 共催ウェビナー

~Microsoft 365連携したドミノアプリの活用事例~

本セミナーでは、HCL、ライブネス、ケートリック3社による、各社製品紹介を含めた、ドミノとMS365の連携事例をご紹介いたします。

弊社ケートリックからは、ドミノ ローコード・プロコード開発環境 consentFlow による、

  • お客様活用事例
  • ワークフローアプリのAzureAD / MS Teams連携
  • 待望の機能!ノーツアプリ モダナイゼーション

をご紹介。

講演最後にはケートリック主催セミナーらしく、時間の許す参加者様とのゆる~い質疑応答の時間も用意しておりますので、是非ご参加ください。

- 日程: 2021年11月26日(金) 13:30 - 15:00
- 会場: Webセミナー
- 主催: ケートリック株式会社
- 費用: 無料(事前登録制)
- 詳細・お申し込み: ->
https://us02web.zoom.us/webinar/register/WN_-nenV5NcR86xTOpgh0UVnA


【セッション 1】
「待望の機能が充実!アプリ開発ツールconsentFlowの新機能紹介」

AzureADによるMS TeamsからのSSO認証、consentFlow APIによる既存データ連携、ノーツアプリWEB化等、consentFlowの新機能を事例を交えてご紹介

講師: ケートリック株式会社 代表取締役 田付和慶


【セッション 2】
「ベストなDominoの使い方」

MS365/Teamsと連携した情報ポータル『LIVENESS PORTAL』と会議室を効率良く使う方法のご紹介

講師:株式会社ライブネス 代表取締役 赤松康司


【セッション 3】
「Notes/Domino最新動向とお客様事例」

MS365を採用しつつ、Domino継続・活用したポイント

 講師:株式会社エイチシーエル・ジャパン                                           ビジネスパートナー&ブランドストラテジー 鴨志田 喜弘


【2021/2/19(金)】NCオープンセミナー&FESTA2021 - 弊社セッション「こんな業務アプリが作りたいを最短で実現 consentFlow」のご紹介

ノーツコンソーシアムより今年もオープンセミナー&FESTA 2021が開催されます。

今年は以下の日程で2日間に分けての完全オンライン開催となっております。

2021年2月18日(木曜日)13:00-17:30 - 研究会・HCLセッション
2021年2月19日(金曜日)13:00-17:30 - パートナー企業・HCLセッション

今年のテーマは

「加速するデジタルシフト with Domino」

2020年度の各研究会の成果報告はもとより、HCL様・パートナー企業様よりDX、ビジネス、技術 の視点から様々な興味深いセッションが用意されています。

弊社からも

2月19日(金)14:10 ~ 14:40

「こんな業務アプリが作りたい」を最短で実現 consentFlow

というタイトルでセッションをさせて頂きます。

今回、弊社開発の新製品「consentFlow」はオフィシャルでの初お披露目となります!

「consentFlow」は高機能な承認ワークフローエンジンを搭載したDominoで動作する業務アプリ構築システムです。

インストール不要のブラウザ上で動作する「承認ワークフローモデラ―」を使いフローチャートを描くように承認経路を簡単に作成すれば、後は心臓部である申請書画面の設計だけで高度な申請アプリケーションを素早く作成できるようになります。

基本的にはブラウザとDominoさえあれば利用開始することが可能です。

コロナ禍で加速するデジタルトランスフォーメーション、

  • 申請業務の電子化
  • 外出先からのスマホ承認
  • クラウド運用
  • MS Teams、Slack連携

など。

Dominoが本来持つ強力な管理機能と最新テクノロジーの融合による新たなユーザー体験を今回の弊社セッションでご紹介できるものと当日を楽しみにしております。

ご都合がよろしければ是非、以下のリンクからお申込みをお願いします。

https://www.notescons.gr.jp/home.nsf/content.xsp?k=OpenSeminar2021&w=12


Domino OAuth2 Provider Beta Release by KTrick

I would like to introduce our new solution called "Domino OAuth2 Provider (DOAP)".
We developed OAuth2 provider that can run on IBM Domino server.

Our Domino OAuth2 Provider (DOAP) brings true OAuth2 capability to your IBM Domino Servers.
Since we decided to provide DOAP community edition for Non-Commercial Use, everyone can download and use it.

Please visit our DOAP website and get the DOAP installer and free license.

https://doap.ktrick.com/

Once after you download our DOAP, please follow the tutorial about how to install DOAP: https://doap.ktrick.com/portfolio/tutorial/

 

Please try our "Domino OAuth2 Provider (DOAP)". Any feedback is really appreciated.

For more detail, you might want to check our FAQ page: https://doap.ktrick.com/faq/

 

Open Source Project "DOAP Sample Chat app with Domino"

To feel the power of OAuth2 capability with IBM Domino, we open-sourced node.js application called "DOAP Sample Chat app with Domino".

Please download/clone the code and check the instruction of how to run app from this link: https://doap.ktrick.com/portfolio/domino-nodejs-chat/

This sample chat application is written by Node.js, web-socket and OAuth module to communicate with Domino/DOAP.

After the user login to Domino via OAuth2, they can start chat immediately on the web based node.js application. The chat comments are also synchronized with discussion nsf in the background. To pull/push the comments from/to the documents of discussion nsf, this app uses to Domino Data Service(aka Domino REST service). Since DOAP OAuth accessToken is injected in the request body for every requests, IBM Domino authorizes to access the domino data as user permission which is configured in ACL of database.

Below is the demo movie, please turn on the caption of the movie to understand what's going on.


Notes/Domino Day 2017 最新情報

2017年9月19日(火)、御茶ノ水ソラシティカンファレンスセンターでIBMによるイベント「Notes/Domino Day 2017」が開催されましたので参加してきました。

IBM主催のイベントでNotes/Dominoの名前が入るのは何時ぶりなんでしょう? かの米国開催のイベント「Lotusphere」の名前を聞くような、そのタイトルだけでも心にぐっと来てしまう、今回はIBMの心意気を感じて仕方ありませんでした。日本IBMさん、グッジョブです!

そして、その基調講演ではプロダクト&デザイン, IBM Collaboration SolutionsのバイスプレジデントであるEd Brill氏が日本まで講演にやってきてくれました。


今回はこのイベントにふさわしい新たな新サービスの発表がIBMからありましたので最新情報と題してブログにしてみたいと思います。

IBM Domino Application on Cloud(DAC)

個人的には今回のイベントでの大きな発表の1つは「IBM Domino Application on Cloud」だと考えています。

IBM Domino Applications on Cloud
金色のDominoアイコン?!

「IBM Domino Application on Cloud(以下、DAC)」と言う名の通り、この新たなサービスではユーザーのNotesカスタムアプリ(NSF)をIBMが用意するクラウド環境Dominoで稼働させることができるようになります。

2017年10月にサービス開始なのでもうすぐですね!

実はIBMは3年ほど前からIBM Domino Applicationをクラウドで稼働できる環境を用意するという発表をしており、それに対して「XPages on Bluemix」こそがIBMが用意した回答であると自分は勝手に考えていたのですが嬉しい意味で裏切られました。

今回の発表で、ユーザーはより簡単に既存ノーツアプリをクラウドで稼働させることが出来るようになるはずです。そして煩わしいオンプレミスDominoの保守・運用、それにかかる経費の削減に寄与する強力な選択肢の一つになるはずだと期待できます。(XPages on Bluemixは運用都合上オンプレミスDominoからの脱却にはならないですからね)

「IBM Domino Application on Cloud」に関して発表された内容で覚えているものを箇条書きにしてみました。

  • 自社のCertIDを使って環境を構築
  • 既存のノーツアプリやカスタムテンプレートを用いたノーツアプリを作成することが可能
  • ノーツクライアント、ICAA,WEBからの利用が可能
  • 保存データの暗号化
  • メール配信やエージェント実行が可能
  • オンプレミス⇔クラウド間でDominoアプリを複製が可能
  • サーバーはユーザー側で触れるようにはならない(アプリはユーザー側で管理者権限を持たせて運用)
  • DominoサーバーアップグレードはIBMにより実施
  • データベースサイズは25GBまで
  • Dominoクラスタリグはオプション
  • DAOS有効化はオプション
  • Domino Access Serviceはオプション

技術的な話をすると、このDACですがDockerの技術を使って構築されているとのことです。(コンテナーにデプロイされたDominoサーバーがアプリケーションをホスト) このDominoのDocker機能はDomino as a Service(DaaS) として今後もしかするとユーザー側で構築が可能になるかもしれないですね。
Domino As A Service

またデータセンターは2017年10月の初期段階からIBMの東京データセンターで稼働するというのも見逃せません。
Tier 1 ロケーションとしてまず、US(アメリカ)、AP(日本)、EU(ドイツ・オランダ)が提供され、Tier 2ロケーションとしてオーストラリア、インド、中国と順次拡大していくようです。

DACのライセンスについて

DACのライセンス形態について発表があった内容ですが正直これらの内容は今後も色々と変更や追加が起きそうな予感。

  • DB毎月額課金
  • 1年以上の契約
  • BYOL(Bring Your Own License)モデル (Enterprise ServerやUtility ServerなどSS&S ライセンスが別途必要)
  • 最低10DBより利用が可能

まとめ

今回突如発表されたIBM Domino Application on Cloud」ですが、既にクラウドで利用可能なメール、カレンダーソリューションのVerseに加わりDominoのクラウドを加速させるための環境が整いつつあると感じさせます。 またXPages on Bluemixという選択肢もDACと組み合わせることで外部システム連携などアプリケーションの進化への可能性を広げることになるのではないかと期待してしまいます。

Notes/Dominoの競合製品で完全クラウドソリューションを売りにし、「まだオンプレミスでしか動かないNotes/Dominoアプリ」と言わせる機会を与えてしまっているとしたら、今後対等以上に渡り合っていけるようになったのではないかと思います。結果、XPages開発に対しても今よりスポットライトが当たることになると自分としてはさらにうれしいです(笑)


XPages on bluemixとIoTでBB-8を動かしてみた (2/2)

前回からの続き

こちらのブログは前回の「XPages on bluemixとIoTでBB-8を動かしてみた パート1」の続きです。

前回までで、WindowsでBLEを制御するための以下の手順がおわりました。

  • (1)WindowsでBLEを制御するために
  • (2)BluetoothのUUIDを取得

 

(3)GitHubからBB8-Bluemixプロジェクトを入手

BLE接続が出来ればNode.jsのBB-8サンプルコードがあるので、それにドローンの時のようにMQTTを組み込んでIoT対応してやればいいと考えていましたが、なんと既にBB8-Bluemixなるプロジェクトが存在することを発見。今回はありがたく使わせて頂くことにしました。

https://github.com/shamimshossain/bb8-bluemix

こちらからbb8-Bluemixプロジェクトをクローンするなりしてローカルに展開します。

次に、コマンドプロンプトを開き、プロジェクトフォルダのパスにChange Directoryした後、「npm install」を実行します。 依存関係で色々とワーニングが出ましたが自分の環境では実行自体は出来ましたのでそのまま進めます。

bluemix-xpages-bb8-08

インストールが完了したら、プロジェクトフォルダ内にある spheroDemo.js を開き3行目の引数にパート1で取得したBluetooth UUIDを指定します。MAC OSではBLEアドレスは20桁以上であるようですが、Windowsでは12桁のIDでした。

 

(4)BluemixでInternet of Things Platform Starterアプリを作成

  1. bluemix.netに自分のアカウントでログインします。
  2. カタログから「Internet of Things Platform Starter」を選択
    bluemix-xpages-bb8-01
  3. 名前とホスト名を任意の値にして作成をクリック
    bluemix-xpages-bb8-02

(5)IoT Foundationよりデバイスの追加を行う

  1. アプリケーションのステージングが完了したら、左メニューから「Internet of Things Platform」を選択します。
    bluemix-xpages-bb8-03
  2. デバイスの接続から「ダッシュボードを起動」をクリックします。
    bluemix-xpages-bb8-04
  3. IBM Watson IoT Platform画面が開いたら「デバイスの追加」をクリック
    bluemix-xpages-bb8-05
  4. デバイスの追加ウィザードが開くので「デバイス・タイプの作成」を選択。次へ
  5. 「デバイス・タイプの作成」 ‐ 「一般情報」ステップではデバイスの名前を「sphero」にして次へ
  6. 「デバイス・タイプの作成」 ‐ 「テンプレートの定義」ステップでは特になにも選択せず次へ
  7. 「デバイス・タイプの作成」 ‐ 「情報の送信」ステップでもなにもせず次へ
  8. 「デバイス・タイプの作成」 ‐ 「メタデータ(オプション)」ステップもなにもせず「作成」ボタンを押下
  9. 「デバイス・タイプの選択」でさきほど作成したデバイスタイプを選び次へ
  10. 「デバイス情報」ではデバイスIDを任意の名前に設定して次へ
  11. 「メタデータ」ではなにもせず次へ
  12. 「セキュリティー」もなにもせず次へ
  13. 「要約」で確認後、追加ボタンを押下
  14. デバイス資格情報が表示されるので、赤で囲んだ部分をメモしておきます。
    bluemix-xpages-bb8-06
  15. 次に「Internet of Things Platform Starter」のダッシュボードに戻り、apiKeyとapiTokenを確認しメモします。
    bluemix-xpages-bb8-07

(6)BB8-Bluemixプロジェクトの設定ファイルにIoT Foundation情報を設定する

(3)で展開したBB8-Bluemixのプロジェクトを開き、sphero-config.properties ファイルを開きます。
以下のようにファイルを編集します。

  • deviceid: IBM Watson IoT Platform で登録した BB-8 の Device ID
  • authtoken: IBM Watson IoT Platform に BB-8 を登録した際に割り当てられた認証トークン
  • apikey, apitoken: IBM Watson IoT Platform の資格情報に記載されたapiKeyとapiToken

(7)MQTTクライアントからIBM IoT Fundationに接続テスト

にこちらのbb8-bluemix プロジェクトの下部に記載されているNode-Redのコードで実行テストを行います。

  1. bb8-bluemix プロジェクトの下部にあるNode-Redのコードをコピーします。
  2. Bluemixで作成した「Internet of Things Platform Starter」アプリケーションからプロジェクトURLを開きNode-Redを起動させます。
  3. メニューからインポートを選択しコピーしたコードを貼り付けます。
    bluemix-xpages-bb8-09
  4. 青色の「IBM IoT App Out」ノードをダブルクリックして以下のように設定を行います。
    bluemix-xpages-bb8-10
    ・Device TypeはIoT Foundationで指定したspheroを指定。
    ・Device IdにIoT Foundationで追加したデバイスIDを指定。
  5. Node-Redの「Deploy」ボタンを押し保存します。

ここまで設定が完了したら、コマンドプロンプトからspheroDemo.js を実行してBB-8と繋いでおきます。次にNode-Redから「Change color to Red」などのノードをクリックして実行しBB-8を制御できるか試します。

(8)XPages on Bluemixのアプリを作成

ここでやっとXPAGESの話になります。

  1. BluemixのカタログからXPAGESランタイムを選択します。
  2. 任意の名前、ホスト名を入力しアプリケーションを作成します。
  3. XPagesアプリケーションを作成後、スターターコードをダウンロードします。

 

(9)加速度センサーによるBB-8の制御アプリをBluemixにデプロイ

BB-8を制御するXPagesアプリケーションをこちらからダウンロードしてください。

bluemix-xpages-bb8-download

ダウンロード: http://ktrick.com/download/xpages-bb8-tpl.zip

自身のXPAGESアプリケーションの設計をこちらのものに置換するか、XPages, スクリプトライブラリ、リソース、ファイル、スタイルシートの設計をコピーして使ってください。

次にスクリプトライブラリのsp_mqtt_bb8.js を開き以下の赤枠の値を置き換えます。

bluemix-xpages-bb8-13

情報はNode-Redの時と同様に資格情報を参照します。

  • deviceid: デバイスID
  • pubTopic: デバイスタイプがspheroでない場合は書き換えます
  • mqtt_host: 資格情報のmqtt_hostを指定
  • mqtt_s_port: 資格情報のmqtt_s_portを指定
  • org: 資格情報のorgを指定
  • apiKey: 資格情報のapiKeyを指定
  • apiToken: 資格情報のapiTokenを指定

設計置換後にBluemixにデプロイするとXPAGESアプリケーションのTOPページが以下のようなものに置き換わっていることが確認できます。

bluemix-xpages-bb8-12

(10)XPAGESで動作テスト

Node-Redでテストしたときと同様にspheroDemo.jsを実行しBB-8とIoT Foundationを接続しておきます。

次にXPAGESアプリをスマートフォンで開いてください。

今回のXPAGESアプリではHTML5+Javascriptによってスマホのモーションセンサーを感知し前後、左右にBB-8を制御することが出来るようになっています。

こんな感じで操作できます。 

動いた~♪
以上により、フォースはXPAGESとIoTで成り立っていたということが証明できました。