IBM-Connect-2016

IBM Connect 2016 XPAGES 最新動向 Part 3 - XPAGESトラブルシューティング

前回2回に渡りIBM Championがスピーカーを務めるセッションにフォーカスを当てたレポートブログを紹介してきました。

今回はPaul Withers氏の「"Marty, You're Just Not Thinking Fourth Dimensionally": Troubleshooting XPages」のセッションに参加した内容を振り返りたいと思います。
このセッションではStackoverflowで寄せられた質問などをもとにXPAGESでの間違ったアプローチの紹介やトラブルシューティングの方法などノウハウ情報を満載の内容となっていました。

また、このセッションではXPAGESの基礎知識を持っていることが前提になっており「XPAGESを既に使っている人は挙手してください」と質問すると会場のほぼすべての人が手を挙げていたのも印象的でした。 そして前列に座ったIBM Champion達が突っ込みを入れながらさらに話がディープに進んで行くのもIBM Connectのセッションならではの光景です。

documentidプロパティでは常に式言語(EL)を使うこと

このセッション内の数あるトピックの中でも全てのXPAGES開発者が知っておくべきノウハウであり、知らずにやってしまいがちな落とし穴であると思ったのがこの「documentidプロパティなどでは常に式言語(EL)を使う」ということでしたので、私自身でテストしたサンプルコードを交えてこのトピックを掘り下げて紹介したいと思います。

※ちなみに式言語(EL)とは${...}もしくは#{...}で始まるコードの事で#{javascript:...}ではないことと区別しています。

Stackoverflowのこちらのリンク「Why does this code write out TWO documents?」でPaul氏が自ら回答している内容にも絡んでいるのですが、Paul氏が指摘するには、式言語(EL)を使わなければページロード時にdocumentidのプロパティ計算ロジックが4回も呼ばれてしまうと指摘しています。

まずはこちらに用意したサンプルコードを見てください。

Domino文書データソースを定義する箇所でdocumentIdプロパティに対して値の計算をしています。
UNIDを引っ張ってきたいのでViewを取得して文書を取得してそのUNIDを返すというロジックになります。

如何でしょうか? 皆さんもこれに似たロジックを書いた経験はないでしょうか?
このサンプルには1つの致命的な問題と2つの推奨されないコードが含まれています。

1つ目の致命的な問題とはbeforePageLoadにてviewScopeの変数をセットしデータソース内でそのviewScope変数を利用しているという箇所です。
これはデータソースのほうが先にプロセスが走りその後にbeforePageLoadのプロセスが走るため5行目のviewScope.selectedPageが意図したとおりに設定されずサーバーエラーを起こしてしまいます。

そこでひとまず問題を解決するために以下のようにコードを書き換えます。

beforePageLoadでのviewScopeの利用をやめ、8行目にビューの値をハードコードで渡してやりました。これでとりあえずサーバーエラーは回避され、見かけ上は意図したとおりにブラウザでこのコードを表示されるでしょう。

推奨されないコード その1

しかし、このコードにはまだ推奨されないコードが含まれており、試しにブラウザでこのコードを表示してみるとAdministratorのコンソールに以下のような出力があることが確認できます。

HTTP JVM: doc found
HTTP JVM: doc found
HTTP JVM: doc found
HTTP JVM: doc found

このように、documentIdの値の計算の処理が4回も呼び出されています。これこそが今回Paul氏が指摘する問題の箇所になります。
Paul氏によると4回も呼び出される理由は以下のようになります。

式言語(EL) 【${...}もしくは#{...}】を使わなかった場合、documentIdのようなプロパティを

  • Panel内に追加した場合、beforePageLoadの後に2回呼び出される
  • XPage内に追加した場合、beforePageLoadの前に2回呼び出される。(このときbeforePageLoadで追加したscope変数は使えない)
  • 常にrender response時に2回呼び出される

ということで、上記サンプルの場合4回呼び出されるということになります。
そこで回避策として式言語(EL)を利用することでこの問題は回避されます。

式言語(EL)の「動的に計算」を使用
式言語(EL)の「動的に計算」を使用

以下に1回のみ呼び出される式言語(EL)を利用したサンプルコードを追加します。

このコードをadministratorコンソールで確認すると

HTTP JVM: doc found

のように1回しか呼び出されていないことが確認できます。

また、式言語(EL)で「動的に計算」を利用しているため、beforePageLoadで設定されたscope変数が利用できていることにも注目してください。
documentId="#{viewScope.docId}"
の箇所が
documentId="#{javascript:viewScope.docId}"
では意図した動作になりません。

推奨されないコード その2

Domino文書のデータソースを定義する際にignoreRequestParams="true"を明示的に定義してやらないとURLパラメータのdocumentIdで指定された値が常に優先されるため、このようなロジックを書くときはignoreRequestParams="true"を明示的に定義してやるべきです。

こんな事例が沢山

今回はこのブログを書くにあたってPaul氏の指摘を深堀して実証実験を行ってみましたが、実際にPaul氏のセッションではこれに似た内容がいくつもスライドとデモで紹介され、どれもがものすごいスピードで紹介されるためはっきり言ってついていくのがやっとな状態のかなりレベルの高い内容となっていました。

1年を通してStackoverflowでいくつもの質問に対して回答をしているPaul氏ならではのノウハウの詰まったセッションであっただけに、今回のセッションに参加できただけでもIBM Connectに来た甲斐があったと思える、そんなセッションでした。

なお、こちらのセッションのスライドは既に公開されており、こちらより確認できます。
http://www.idonotes.com/IdoNotes/IdoConnect2013.nsf/dx/1279a-marty-youre-just-not-thinking-fourth-dimensionally-troubleshooting-xpages-2016.htm
Chris Millerさんのサイトでその他のセッションを含めLotusphere 2013からのセッションがタイトル別にまとめられています。既に2016年のセッションもいくつか登録されているようなので確認してみてください。


IBM-Connect-2016

IBM Connect 2016の濃い一週間が始まります。

今年も開催地はフロリダ オーランド、でもホテルが違う

毎年この時期に開催されるIBMビジネスカンファレンス「IBM Connect 2016」に今年も参加するためトータル17時間のフライトを経てアメリカ、フロリダ州 オーランドへやってきました。

自分は参加者として訪れるのは去年に続き2年目になります。 2006年から2013年までの7年間はIBM ConnectがLotusphereと呼ばれていたころから、実はカンファレンスの運営側の人間としてIBMベンダーとして働いていましたので合わせると9回目の参加ということになります。

そしてずっとIBM Connectが行われてきた会場が今年からDolphin Swan HotelからHilton Orlandoへと変更になりました。

ibm-connect-2016-hilton-orlando

敷地の大きさは今までのDolphin Swanよりも小さく感じますが、ホテルのランクとしてはHilton Orlandoのほうが少し上なのかな、と思います。(なんとなくですが・・・)

ビジネスパートナー向けセッションが1日、IBM Connectが3日

1月31日のイベントが正式に始まる前の日を使ってビジネスパートナー向けのセッションが1日用意されています。

そしてIBM Connect 2016自体は2月1日の基調講演(Open General Session)を皮切りに怒涛の如く3日間セッションが行われます。

注目のセッション

毎年、基調講演ではIBMの今年一年の方向性を示し様々な新しい発表が行われるため、今年はどのようなものが発表されるか楽しみです。

また、今年のセッションは開発者向けのセッションが多数用意されているように思います。

個人的にはIBM Verse APIやIBM Connections Cloud APIのなにか新しい情報が公開されるのではないかと期待しています。また近年勢いのあるnode.jsとDomino開発者を対象にしたセッションが行われたり、他のシステム、プラットフォームとの連携を加速させるセッションも多数用意されているため、新しいスキルやアイデアを習得する機会になることを期待しています。

参加予定のセッション

以下、自分が組んでみたセッションアジェンダです。


日曜日(BP Summit)

Coffee/Refreshments for IBM Business Partner Summit
09:00 午前 - 10:00 午前 - Hilton Orlando, Florida Foyer

IBM Connect Business Partner Opening General Session
10:00 午前 - 11:30 午前 - Hilton Orlando, Florida 4
Lou Sassano (IBM), Katrina Troughton (IBM)

The Path Ahead: The Enterprise Social Software & Digital Experience Roadmap
01:00 午後 - 02:00 午後 - Hilton Orlando, Florida 4
Carol Sormilic (IBM), GARY DOLSEN (IBM)

Making Money in the Cloud!
02:15 午後 - 03:15 午後 - Hilton Orlando, Florida 5
Ted Brufke (IBM), Glenn H. Newlove (IBM)

The XPages of Things: Integrate Bluemix with Your XPages Applications for a World of Possibilities
03:45 午後 - 04:45 午後 - Hilton Orlando, Lake Mizell AB
John Jardin (Ukuvuma Solutions)

Getting Technically Cozy with IBM Connections Cloud APIs and App Dev
05:00 午後 - 06:00 午後 - Hilton Orlando, Lake Highland AB
Patrick Li (AppFusions), David Simpson (AppFusions)

Solution EXPO Grand Opening Reception
06:00 午後 - 07:30 午後 - Hilton Orlando, Solution EXPO

Welcome Reception
07:00 午後 - 08:30 午後 - Hilton Orlando, The Promenade


月曜日

Opening General Session Part I: Turn Moments into Momentum
08:00 午前 - 09:00 午前 - Hilton Orlando, Orlando Ballroom
Jeff Schick (IBM), Clive Lightfoot (RURAL AFRICAN VENTURES INVESTMENTS LTD), James Weru (http://www.trutrade.net/), Vinith Misra (IBM), Peter Cardon (Marshall School of Business), Brianna Mayer (University of Southern California), Jamie Winger (University of Arizona)

Opening General Session Part II: The Engaged Enterprise Comes to Life
10:00 午前 - 11:15 午前 - Hilton Orlando, Orlando Ballroom
Rob Enright (IBM), Sarah Gibbons (IBM), GARY DOLSEN (IBM), Jeff Schick (IBM), Chris Crummey (IBM), Christine Kraemer (Deutsche Lufthansa AG), John Henderson (Texas Children's Hospital)

What the App? : A Modernization Strategy for Your Business Applications
11:30 午前 - 12:30 午後 - Hilton Orlando, Orange G
John Head (PSC Group, LLC), Mat Newman (IBM)

IBM Verse AppDev and Extensibility
02:00 午後 - 03:00 午後 - Hilton Orlando, Florida 6-7
Yun Zhi Lin (IBM)

Optimus XPages: An Explosion of Techniques and Best Practices
03:30 午後 - 04:30 午後 - Hilton Orlando, Orange F
John Jardin (Ukuvuma Solutions)

Outside The Box: Integrating with Non-Domino Apps Using XPages and Java
04:45 午後 - 05:45 午後 - Hilton Orlando, Lake Eola A
Julian Robichaux (panagenda), Kathy Brown (PSC Group LLC)


火曜日

Design Thinking for Application Development
08:00 午前 - 09:00 午前 - Hilton Orlando, Florida 6-7
Joseph A. Russo (IBM)

IBM Domino App.Next - Broadening Your Horizons with Bluemix
09:15 午前 - 10:15 午前 - Hilton Orlando, Orange F
Pete Janzen (IBM), Martin Donnelly (IBM)

node.js for Domino Developers
10:30 午前 - 11:00 午前 - Hilton Orlando, Solution EXPO Theater
Matt White (LDC Via)

Deploying, Securing, Customizing and Extending the IBM Connections Mobile App
01:15 午後 - 02:15 午後 - Hilton Orlando, Lake Mizell AB
Rusty Godwin (IBM), Jack O'Donnell (IBM)

Carnival Sailing Safer Seas with Domino
02:30 午後 - 03:30 午後 - Hilton Orlando, Florida 5
Hunter Medney (IBM), Walter Carvalho (Carnival Corp)

Extending the XPages Extension Library
04:00 午後 - 05:00 午後 - Hilton Orlando, Orange G
Padraic Edwards (IBM), Brian Gleeson (IBM)

Break Out of the Box - Integrate Existing Domino Data with Modern Websites
05:00 午後 - 05:30 午後 - Hilton Orlando, Solution EXPO Theater
Karl-Henry Martinsson (Deep South Insurance)

Deep Dive: Building Apps with IBM Connections Cloud APIs
05:15 午後 - 06:15 午後 - Hilton Orlando, Orange G
Patrick Li (AppFusions), David Simpson (AppFusions)


水曜日

#UserBLAST 2016
08:00 午前 - 09:00 午前 - Hilton Orlando, Lake Eola B
Mat Newman (IBM)

Building Responsive Applications Using XPages
09:15 午前 - 10:15 午前 - Hilton Orlando, Orange F
Brian Gleeson (IBM)

Real-time Video Chat XPage Application Using Websocket and WebRTC Technologies
10:45 午前 - 11:45 午前 - Hilton Orlando, Orange G
Csaba Kiss (Los Alamos National Laboratory)

GURUpalooza!
12:45 午後 - 01:45 午後 - Hilton Orlando, Florida 4
Amanda Bauman (IBM), Mat Newman (IBM)

ASK the Developers and Product Managers
02:00 午後 - 03:00 午後 - Hilton Orlando, Florida 4
Heidi Ambler (IBM), Brian Chaput (IBM), Carol Sormilic (IBM), John Woods (IBM)

Closing General Session: Discover your Inner Artist
03:30 午後 - 04:30 午後 - Hilton Orlando, Orlando Ballroom
Liz Urheim (IBM)

 

時差ボケとの闘い・・・

今年も例外なく、初日の夜は早くに起きてしまいました。 そこでこのブログを朝から書き始めたのですが、書き終わるころにはすっかり夜も明けていました。

IBM Connect 2016 BP Summitの朝
IBM Connect 2016 BP Summitの朝
すっかり夜の明けたHilton Orlando ホテルより
すっかり夜の明けたHilton Orlando ホテルより

イベント開催の間は時差ボケと戦いながらセッションを受け、慣れるころには帰国というタフな日々が続きますが、現地レポートとして時間をみつけてこちらのブログを投稿していきたいと思います。