カスタムコントロール内でDocumentデータソースのフィールドを動的に定義する方法

カスタムコントロールをより汎用的なパーツ化したい

共通パーツ化の目的でカスタムコントロールを作成することが多いと思います。

今回のブログは、カスタムコントロール内で文書フィールドをハードコードせず、カスタムコントロールを呼び出し側のXPAGEがプロパティ定義でフィールド指定してやる方法です。

この方法を使うと、カスタムコントロール内で複雑なロジックを持ったフィールド、例えば

  • 社内Emailアドレスのみを許可する入力チェックを行うフィールドの汎用化
  • リピートコントロール内で動的にフィールドを定義してスコープ変数に格納する

といった方法が可能になります。

自分の場合はリッチテキストフィールドに対して常に素のJSONデータのみを格納するように振る舞うフィールド定義をしたいケースがあり実装した経緯がありました。その際、作成したカスタムコントロールは呼び出し側が指定したフィールド名に対して動的にデータバインドを行うようになるのが今回の主旨です、その名もダイナミック データバインディング!(勝手に呼んでますw)

毎度のごとく、トピックがニッチなので(笑)百聞は一見に如かず、カスタムコントロールのコードを見てみます。

まず、カスタムコントロールの前準備として今回の例では「fieldName (String値)」というプロパティ定義をしています。
dynamic_data_binding01

以下がサンプルコードです。

[xml highlight="5"]
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">

<xp:inputText id="customEmailFld"
value="${javascript:'#{document1.' + compositeData.fieldName + '}';}">
<xp:this.validators>
<xp:validateConstraint
message="Emailが無効です。 Emailは'****@ktrick.***'の形式でなければいけません。">
<xp:this.regex><![CDATA[^[A-Za-z0-9._%-]*@ktrick.[A-Za-z]{2,4}]]></xp:this.regex>
</xp:validateConstraint>
</xp:this.validators>
</xp:inputText>

</xp:view>
[/xml]

重要な点はハイライトされている5行目に尽きます。
valueの値に対して、"${javascript:'#{document1.' + compositeData.fieldName + '}';}" と複雑な記述になっています。
まず着目してほしいのが、'#{document1.' + compositeData.fieldName + '}'の部分は文字列生成をしているということです。
もし直接データバインドをした場合、value="#{document1.Email}" となるところをあえてSSJS経由で渡してやることでこのように動的に記述することを可能にしています。

最後にこちらが呼び出し元のXPageです。
[xml highlight="4,5"]
<!--
<xp:inputText value="#{document1.Email}" id="email1"></xp:inputText>
-->
<xc:ccDynamicDataSource fieldName="Email">
</xc:ccDynamicDataSource>
[/xml]

鋭い人は「document1」がハードコードでは?と気づいたと思います。
前述のとおり'#{document1.' + compositeData.fieldName + '}'の部分は文字列を生成しているだけなのでfieldNameプロパティに「document1.Email」を指定し、'#{' + compositeData.fieldName + '}' としても動作します。

種明かしをするとなんだ~、と以外と簡単なのですが場合によってとても重宝する記述方法なので覚えておいてもらえればと思います。

参考

http://stackoverflow.com/questions/9913331/dynamic-data-binding


Notes/Domino ソリューション 2017

【2017/5/17-19】Notes/Dominoソリューション2017:Aveedoのご紹介

「Notes/Domino ソリューション 2017」と題して2017年5月17-19日の3日間、東名阪の3拠点でNotes/Domino一色のイベントが開催されます。

弊社からも既存NSFアプリをウィザード操作でカンタンWEB化できるソリューション「Aveedo」をご紹介させて頂きます。

弊社を合わせまして、以下の6社による共催となります。

  • 有限会社アクセル(OnTime Group Calendar Direct Shop)
  • ケートリック株式会社
  • チームスタジオジャパン株式会社
  • 株式会社ライブネス
  • リコージャパン株式会社
  • 日本アイ・ビー・エム株式会社

(五十音順)

Notes/Dominoを使い倒すための様々なソリューションを一挙に知ることが出来るこちらのイベントに是非ご参加ください。

皆様とお会いできることを楽しみにしています。

 

 

【 東京開催について 】
開催日時: 2017年5月17日(水) 13:10~17:00(受付:12:30~)
開催場所: IBMイノベーション・センター東京都中央区日本橋箱崎町19-21(日本IBM箱崎事業所内)
お申込みURLhttp://www.nds2017.jp/top.nsf/pages/tokyo

【 大阪開催について 】
開催日時: 2017年5月18日(木) 13:10~17:00(受付:12:30~)
開催場所: 日本IBM大阪事業所大阪府大阪市西区靱本町1-10-10
お申込みURLhttp://www.nds2017.jp/top.nsf/pages/osaka

【 名古屋開催について 】
開催日時: 2017年5月19日(金) 13:10~17:00(受付:12:30~)
開催場所: 日本IBM名古屋事業所愛知県名古屋市中区錦3-1-1 十六銀行名古屋ビル
お申込みURLhttp://www.nds2017.jp/top.nsf/pages/nagoya


【2017/4/21 (金) 】テクテクLotusセッション:Aveedoのご紹介 - IBM Notes/Domino Modernization の実現を支援する海外ソリューション

Aveedo - IBM Notes/Domino Modernization の実現を支援する海外ソリューションのご紹介

2017年4月21日、IBM箱崎本社で行われるテクてく Lotus 技術者夜会で弊社が日本総代理店を務める海外ソリューション「Aveedo」がご紹介されます。

今回のテクてく Lotus 技術者夜会ではIBM Connect 2017の基調講演で発表されたNotes/Domino Application Modanizationが勢ぞろいします!各社、代表やCTOを務める人物が直接25分のセッションで製品を紹介してくれるという濃密なイベントとなっています。
img_6469

既存NSFアプリをウィザード操作でカンタンWEB化できるソリューション「Aveedo」の開発元であるWe4ITからはCEO Stefan Sucker 氏 が直接、製品紹介をデモを交えて発表してくれます。(通訳は弊社から田付が担当します)

当日のアジェンダは以下のようになっています。

2017年4月21日(金)

  • 6:00PM – 6:25PM:  Panagenda – ApplicationInsights
  • 6:25PM – 6:50PM:  Sapho
  • 6:50PM – 7:00PM:  <休憩>
  • 7:00PM – 7:25PM:  We4IT – Aveedo
  • 7:25PM – 7:50PM:  Darwino
  • 7:50PM – 8:00PM:  Q&A
基調講演で発表されたApplication Modanizationのソリューションを一挙に知れるまたとないチャンスとなっていますので皆さん是非会場まで足を運んでみてください!
(なおリモート参加も可能です)

【 開催概要について 】
日時2017年4月21日 (金曜日)  18時から20時 (17時30分開場)
Aveedoセッション情報3コマ目 :  7:00PM – 7:25PM: We4IT – Aveedo
場所日本アイ・ビー・エム株式会社 IBMイノベーション・センター :会場へのアクセス

【詳細について】
テクテクLotus お申込みサイト: 

IBM Connectons PINKとDominoの未来

2017年2月21日から23日まで開催されたIBM Connect 2017が終わり日本に帰国しました。

これから何回かに分けてIBM Connect 2017のフィードバックブログを書いていきたいと思います。

IBM Connections PINK

ibm-connection-pink

IBM Connect 2017基調講演で初めてIBM Connections PINKの存在が発表されました。

また20日に行われたIBM Connect 2017 HackathonのイントロダクションとしてIBMのJason Roy Gary氏によるIBM Connections PINKのテクノロジーに関しての説明がありました。

それによるとIBM Connections PINKは今までのIBM Connectionsと全く違うテクノロジー、哲学をもって再構築されており、従来のIBM Connectionsと全く異なる設計を持つことになります。

具体的なところでは、

・マイクロサービスベースのアーキテクチャ
・ad-hoc利用するアプリ連携をサポ―ト
・JSONベースのモダンAPI

graphQL
・Modern CI-CD
・StrongLoop / IBM API Connect (node.js/express)
・SWIFT / GO
React.js
MongoDB
Redis
・Nginx
・Docker

というテクノロジーやコンセプトに基づいて開発されています。
上記にあるようにデータベースはSQLですらなくなりMongoDBを利用するようです。

また、Jason Roy Gary氏がIBM Connect 2017の最終日のセッション「Ask to the developer」で解答していた際のある言葉が印象的でした。

「IBM Connections PINKでは我々はソフトウェアをあなた達のために作るのをやめました。あなた達と作るのです」

様々なセッションを通じ、彼のあの言葉の裏付けとなっているテクノロジーがgraphQLであり、Dockerであり、LiveGridでありMicroserviceであることを今回学ぶことが出来ました。

正直なところ、Docker、MicroserviceやLiveGridなどの正確な内容を把握できておらずまだまだ勉強が必要なのですが、今後IBMからこれらのテクノロジーに関しての多くの情報が発信されていくのだろうと期待しています。

Dominoはどうなるの?

マイクロサービスで様々なアプリがつながるようになりまさに「あなた達と作る」環境が整備されていくなか、これらのテクノロジーにDominoは取り残されていくのでしょうか?

自分がIBM Connect 2017に参加してイメージしたDominoでは、Dominoもマイクロサービスの一つとなり様々なサービスと疎結合していく未来の姿です。

そのためにOpenNTFで現在進められているプロジェクトにSmartNSFというものがあります。

smartnsf
こちらのプロジェクトはOpenNTFのチェアマンであるChristian Gudemann氏によって進められていますが、このSmartNSFを使うことによって簡単にDominoのデータをMicroservice化して活用することが出来ることを目指しています。

OpenNTFといえばオープンソースだから容易に手を出しにくいと考えがちですが、いままでのOpenNTFの活動から考えて、SmartNTFの方向性はよっぽど間違わない限りゆくゆくはDominoのFeature Packに取り込まれていくのだろうと考えています。実際はまだスタートしたばかりのプロジェクトなのでこの考えは時期尚早かもしれませんがDominoの未来を語る上で今一番期待してもいいのではないかと思います。

 


IBM Connect 2017 ハッカソン

IBM Connect 2017がサンフランシスコで開催

IBM Connect 2017が本日2月21日からいよいよ始まります。例年より一か月ほど遅い開催であることに合わせて大きく変わったことに、今年から会場がフロリダ オーランドからカリフォルニア サンフランシスコに変更になりました。

今回の会場はアップルやGoogleがイベントを行う場所としても有名で、かのスティーブジョブスがiPhoneを発表した例の会場でもあるとききテンションが上がらずにはいられません。

IBM Connect 2017 ハッカソンに参戦

さて、そんなIBM Connect 2017の前哨戦として、20日(月)の1日をつかい「IBM Connect ハッカソン」が今年初めてOpenNTFとIBMの協力で開催され、日本からも以下の人たちが参加してきました。

IBM 佐藤さん
東京海上日動システムズ 田村さん
エフ 御代さん (IBM Champion 2017)
ソルクシーズ 吉田さん (IBM Champion 2017)
エームサービス 小野さん (IBM Champion 2017)
ケートリック 田付 (IBM Champion 2017)

ハッカソンでは今回、チームの代表がそれぞれハッカソンで取り組む議題を発表しそれぞれ参加者が参加したいチームに分かれるという形式になります。 ただ日本からは英語でのコミュニケーションが難しいこともあり日本チームで行うということを事前に伝えての参加になりました。

そこで我々が今回のハッカソンで取り組んだ内容が以下のようになります。

IBM Connect 2017 Hackathon Japan Team

IBM Connect 2017 Hackathon Japan Team application flow

内容としては、

左側のSensorTagというセンサーデバイスから照度センサーを使い、部屋が暗くなったなどの異常を検知するとまずXPages on BluemixのNSFに通知を知らせる文書が作成されるます。この部分でのバックエンドロジックを担うのはNode-Red(画面真ん中)になります。

次に、Service Engineerが通知文書(XPages)を確認し、問題をTechnical Expertsに通知するための「OPEN」ボタンを一覧ビューからクリックします。

すると、通知を知らせるアクションの1つとしてBluemix IoT Foundationを介してBB-8に色で視覚的に知らせる(赤色)というアクションを行います。

それと同時にWatson WorkspaceのTechnical Expertsチーム スペースに通知する投稿します。

Technical ExpertsたちはWatson Workspaceから通知のリンクをクリックして詳細を確認できるとともに、Watson Workspaceで問題解決のためのコミュニケーションを開始することが出来ます。

そして問題が解決されると、再度、Service Engineerが「CLOSE」のアクションをクリックします。するとBB-8が緑色に代わり、Watson Workspaceにクローズの通知が行われます。

 

以下、自分が担当したロジックを重点的に紹介します。

 

OpenCode4Workspace Java SDKをXPages NSFに組み込み

hackathon04

チームでどのような構成で実装しようかとディスカッションを行っているとOpenNTFのチェアマンであるChristian Guedemann氏の提案で「OpenCode4Workspace Java SDK」を利用することを進められます。

https://github.com/OpenCode4Workspace/Watson-Work-Services-Java-SDK

コチラのSDKを使えばXPagesから直接Watson Workspaceへ様々なアクションを行うことができます。

以下のスクリーンショットはCode4Workspace Java SDKからXPAGESに組み込むためにJarファイルをExportする際のEclipseの画面になりますが、右側のメソッド群からWatson Workspaceへの様々な機能が実装されていることが確認できます。

 

IBM Connect 2017 Hackathon OpenCode4Workspace

 

結果、無事にNSF、XPagesに組み込むことが出来、OpenCode4Workspace Java SDKを使ってDomino XPagesとWatson Workspaceの連携をすることが来ました。

ソースコードは後程Githubに公開されますが、NTFでこちらにもアップロードできたらと思っています。

Hackathonに参加してみて

今回個人的にはハッカソンに参加するのが初めてであり、日本でも参加したことないのに海外でいきなり参加して大丈夫なのかという不安は大いにありましたが、9時から5時までフルに時間をつかって多くの方と開発を行うことはとても刺激的でした。

OpenCode4Workspace Java SDKを提案してくれたChristian Guedemann氏ですが、それもそのはず。このSDKを作った本人でした(笑)

このSDKの開発に携わっているPaul Withers氏とChristian Guedemann氏は自分にとっては猛者だらけのIBM Championの中でも群を抜いて尊敬する存在の人たちです。

今回、OpenCode4Workspace Java SDKを組み込むにあたりNSF内でのエラーが解決できずChristian Guedemann氏に相談した結果、即座に対応策を教えてくれました。そればかりかその後に想定される問題まで先回りして教えてくれる始末。(まだエラー画面もコードもなにも見せていないのに!)

そんな彼らと同じ部屋でハッカソンが出来たことは本当に有意義な時間となりました。

 

ただ、時差ボケでハッカソンには参加するもんじゃないですね(笑)

活動限界を迎えてホテルに戻ると同時に寝てしまいました・・・

ibm_connect_hackathon


XPagesDay 2016 本日開催! 弊社セッションは16時から

XPagesDay 2016 本日開催!

今日からXPagesDayの熱い2日間が幕を開けます!
XPagesDayとはXPages技術に関するテクニカルWEBセミナーであり、もちろん参加費無料です。

今年2016 年はXpagesDay2016と題して、11 月 21 日(月)、22 日(火)の二日間を計7セッションの濃い内容でお送りします。

 

セッション名「XPagesでJava開発するぞ!」

毎年ケートリックからも1セッション講師を務めさせて頂いておりますが、今年は私、田付とエンジニアの米原の2人で「XPagesでJava開発するぞ!」というタイトルでお送りいたします。今年は今までの弊社セッションの中でも一番ハイレベルな内容となりそうです。

おそらく、「Javaは難しそう」、「XPagesが学びたいのであってJavaには興味がない」、という方々も沢山おられると思います。

ただXPagesはJavaによって動いています。 IBMがXPagesの解説をする際に「JSFを基礎技術とした開発言語です」という話をしていたことを覚えている人もいると思います。

JSFとはJavaでWEBアプリケーション開発をする際のとっても強力な開発フレームワークであり多くのJavaエンジニアがJavaEE JSFをベースに開発を行っています。

そんなXPagesのルーツを知ること基礎技術を知ることXPagesへの理解を深めることに繋がります。

そんな思いで今回のセッションを行いますので、少しでも興味がある方は是非参加してみてください。

 

【イベント、セッション概要について 】

セッション: XPagesでJava開発するぞ!(A-03)

日時:2016年11月21日(月) 16:00 – 16:45

場所:オンライン ウェビナー

【詳細・お申込みについて】

お申込み: 無料

イベントページ: http://xpagesday.com/


【2016/11/9 NCオープンセミナー】 今日から始める XPages アプリケーション開発!(オープンセミナー 2016 ハンズオン XPagesDay 出張セッション)

我らがXPagesDayがまたもノーツコンソーシアムイベントをハックします!

XPagesDayとはXPages技術に関するテクニカルWEBセミナーです。もちろん参加費無料。

今年2016 年はXpagesDay2016と題して、11 月 21 日(月)、22 日(火)の二日間を計7セッションの濃い内容でお送りします。

毎年ケートリックからも1セッション講師を務めさせて頂いておりますが、今年は私、田付とエンジニアの米原の2人で「XPagesでJava開発するぞ!」というタイトルで普段あまり聞けない内容のセッションをお送りする予定です。

 

そんな普段はウェビナーだけのXPagesDayですが、今年は(も)ノーツコンソーシアム様イベント「ノーツオープンセミナー2016」でセッションを1コマ奪取することに成功したようです!

XPagesDay 2015

「今日から始める XPages アプリケーション開発!」

今年のセッションタイトルはこちら ↑

このセッション、ハンズオンセッション! 2時間弱の濃いセッションです!

ハンズオンセッションなので参加者の皆様と一緒にXPages開発をその場で行っていきます。

 

さらに、

講師を務めるのが2015年までIBMチャンピオンであった (株)ソルクシーズ 吉田さん。

この吉田さんが今回のために用意したセッション資料が怒涛の127ページ!!!

 

さらにさらに、

その吉田さんの号令により集まるXPages開発の猛者たち!

私も僭越ながら補佐役としてこちらのイベントに参加させて頂きますが、その他にも名だたる猛者が脇を固めます。

XPages初心者の方をこれ以上にないほどに強力にバックアップしていきます。

XPages初級者向けのセッションですのでXPagesを業務で学ぶ必要がある方から、興味がある方までどしどしご参加ください。

 

参加費無料のノーツコンソーシアム オープンセミナ―への登録は以下のURLから行なってください。

【 イベント、セッション概要について 】

セッション: <H21> 今日から始める XPages アプリケーション開発!

日時:2016年11月9日(水) 10:00 – 11:45

場所:日本アイ・ビー・エム株式会社 本社事業所

【詳細・お申込みについて】

イベントページhttp://www.notescons.gr.jp/home.nsf/content.xsp?k=ncopen16&w=12


【2016/11/9 NCオープンセミナー】 既存ノーツアプリのWEB化でハマらないためのノウハウをご紹介します

いよいよ「ノーツコンソーシアム オープンセミナー」の開催が近づいてまいりました。

弊社からは

「開発者必見!ノーツアプリを効率的にWEB化するツールをご紹介!」

と題して講演をさせて頂きます。

開発者だけでなくノーツアプリのWEB化をすすめるご担当者に是非知って頂きたいWEB化のための解析、分析ツールをデモを交えてご紹介する予定です。

具体的には、以下のツールのご紹介を考えております。

  • Teamstudio Analyzerの監査機能
    XPAGES化の際のハマりどころを事前に洗い出す方法としてTeamstudio社の製品であるAnalyzerの監査機能を使った手法をご紹介。
  • Teamstudio Usage Auditor
    「そもそもこのNSFはWEB化が必要なほど使われているのか?」を利用頻度などの情報から事前に調べることが可能なツールのご紹介。 こちらもTeamstudio社の製品になります。

  • Teamstuio Adviser
    Teamstudio社から今年発表される製品をどこよりも早くご紹介。WEB化のための見積もり算出に使えるツールです。
  • We4IT ScanAlyzr
    We4IT社の製品であるWEB化見積もりツールのご紹介。 XPAGESによる開発工数の自動算出だけでなく、ノーツWEBアプリ作成ツール「Aveedo」でWEB化マイグレーションした際の開発工数の自動算出も行うツールになります。
  • We4IT Aveedo
    既存ノーツアプリをDominoデザイナー要らずでWEB化してしまうツールのご紹介です。お時間がゆるせば実際にサンプルのNSFアプリをAveedoを使い自動WEB化する手順をデモでお見せいたします。

 

さらに、様々なお客様のご依頼を頂き、NSFアプリのXPAGES化を行っている弊社だからこそお伝えすることができるノウハウを交えてご紹介する内容の濃いセッションになっております。

弊社が販売代理店契約をもつWe4IT社の製品だけではなくTeamstudio社の製品のご紹介など、参加者の方々へのメリットを優先でご紹介するセッションとなっているのも面白い試みだと思いますので是非ご参加ください!

 

イベント参加のご登録がまだの方は是非こちらのリンク下の「お申込みリンク」からご登録を行うことが出来ます。(参加費無料)

 【 開催概要について 】

弊社セッション: <S13> 開発者必見!ノーツアプリを効率的にWEB化するツールをご紹介!

日時2016年11月9日(水) 13:00 – 13:45

場所日本アイ・ビー・エム株式会社 本社事業所

セッション情報S13 -開発者必見!ノーツアプリを効率的にWEB化するツールをご紹介!

【詳細・お申込みについて】

イベントページhttp://www.notescons.gr.jp/home.nsf/content.xsp?k=ncopen16&w=12


2016/11/9ノーツコンソーシアム 弊社セッションのご紹介

「開発者必見!ノーツアプリを効率的にWEB化するツールをご紹介!」

ノーツコンソーシアム様主催による「ノーツコンソーシアムオープンセミナー」が、2016年11月9日(水)に開催されます!
弊社からは「開発者必見!ノーツアプリを効率的にWEB化するツールをご紹介!」と題して様々な開発ツール、開発支援ツールをご紹介させて頂きます。

また開発者だけではなく、既存のNSFアプリのWEB化、モバイル化、XPAGES化に問題を抱える担当者様に必見のWEB化解析ツールや見積もりツールをご紹介いたします。

ご興味があるかたは是非ご参加ください。

イベント参加はこちらのリンク下の「お申込みリンク」から行ってください。

【弊社セッション】

S13
開発者必見!ノーツアプリを効率的にWEB化するツールをご紹介!

11/9 13:00 - 13:45

大量のノーツアプリのWEB化に頭を抱えていませんか? アプリの利用頻度、コードの複雑さなどを分析、可視化するツールをご紹介。またXPAGES開発以外の様々なノーツアプリWEB化ツールをご紹介。

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

【 開催概要について 】

日時2016年11月9日(水)13:00 – 13:45

場所日本アイ・ビー・エム株式会社 本社事業所

セッション情報:S13 -開発者必見!ノーツアプリを効率的にWEB化するツールをご紹介!

【詳細・お申込みについて】

イベントページ http://www.notescons.gr.jp/home.nsf/content.xsp?k=ncopen16&w=12


【2016/10/21 (金) 】テクテクLotusセッション:DominoのWEBアプリ作成をもっと簡単に。DesignerいらずのWeb開発ツール「Aveedo」

DominoのWEBアプリ作成をもっと簡単に。DesignerいらずのWeb開発ツール「Aveedo」

様々な業務アプリをWEBで直感的に素早く作成できるドイツ生まれのソリューション「Aveedo」のご紹介です。
開発するアプリは自動でスマホ対応はもちろん、グラフ表示、Office・PDF出力、チャット、ワークフローなど便利な機能が満載です。
もう一つの目玉に既存NSFアプリをウィザード操作でカンタンWEB化する機能があり、素早く最新のWEBアプリに生まれ変わらせます。
セッションではAveedoで実際に作られたCRM、SFAなどの高度なアプリを織り交ぜてご紹介致します。
【 開催概要について 】
日時2016年10月21日 (金曜日) 18時から20時 (17時30分開場)
セッション情報セッション 2 : DominoのWEBアプリ作成をもっと簡単に。DesignerいらずのWeb開発ツール「Aveedo」
場所日本アイ・ビー・エム株式会社 IBMイノベーション・センター :会場へのアクセス