xe:jsonRpcServiceに関して日本語で解説がほとんど見当たらなかったのでブログに書いてみます。→「リモートサービス」をXPagesにドラッグしてやることで作成することが出来るコントロールです。JSON-RPCでも使い道がいまいちよく分からないDomino技術者の方も多いと思います。分かっていない内の1人だった自分が今回、jsonRpcServiceについて調べてみました。jsonRpcServiceはRPCの名が入っている通り、クライアントとサーバー間でリモート処理を実行したりするんだろう、と推測できます(RPC=リモートプロシージャコールの略)。JSON-RPCはそれ自体が新しい規格であり、そのデータの受け渡しにJSONを利用したプロトコル(現行バージョンは2.0)ということです。実際にはJSON-RPCでは以下の様なデータがやり取りされます。1}とてもシンプルで軽量なプロトコルというのも納得ですね。XPagesのjsonRpcServiceコントロールも同様に、できる限り軽量な構成になるようにデザインされており、クライアント・サーバー間で呼び出されたデータのみを送信し、返信されたデータのみを受信するといった軽量な処理が行えるコントロール、ということです。正直なところ、XPagesには部分更新イベントという便利な機能があるので、結果だけを見ると同等な実装が出来てしまうと思います。jsonRpcServiceが必要になるのか?恐らくリモート処理がとても軽量に作られているということが一番の特徴だと思います。株価の値を刻一刻と自動更新するようなアプリケーションを作りたいといった場合、XPagesの部分更新イベントを一分おきに発生させるというのはちょっと大掛かりな気がするのでもっと軽量な処理で実装したい、といったケースで役に立つのではないでしょうか。使ったとってもシンプルなサンプルはこんな感じです。</xp:button></xp:view>6~10行目でJSON-RPCの関数を定義しています。ここではgetUserName()。処理内容はサーバーサイドJavascriptで記述できます。13行目にボタンを配置してonclickイベントでクライアントJavascriptを書いていますが、service.getUserName();とすることでJSON-RPCのリモート関数を呼び出しを行っています。このようにxe:jsonRpcServiceでリモート関数を定義すると自動でクライアントJavascipt関数が用意されているというところが肝ですね。上記のサンプルでは関数の引数は使っていませんが、もちろん引数を持たせることも可能です。引数を持たせて足し算の計算をさせたサンプルがこちらです。</xp:button></xp:view>ハイライトしている7,9,10,18行目を見て頂くとわかると思います。Firebugを使って確認してみます。上記のXPagesをFirefoxで読込み、Firebugを起動、「Net」のタブを開いておきます。「足し算」ボタンを押した時に追加される通信データを確認します。以下の画像がその時のFirebugの表示結果です。軽っ!実際にどのようなデータがやりとりされたのかもFirebugで確認してみます。いうようなプロトコル情報も省略されており本当に必要な情報のみがPostされています。つぎにResponseデータ。}やはり必要な結果のみがResponseデータとして返ってきています。部分更新で行いましたが、Postデータ、Responseデータ共にこれほど軽量な処理をさせることは出来ませんでした。XPagesの部分更新では”計算結果フィールド”のみを部分更新させるといった場合でも<span>タグ付きで値が返ってきたりと、クライアント側でのデータ再加工を行いたいというような場合、値だけを返すjsonRpcServiceのほうがプログラミングが楽になりそうです。以下のサンプルコードをみてください。質問と一緒に公開されたコードです。ハイライトされた9,10,20行目を見て頂くと、このコードの作成者はjsonRpcServiceのリモート関数を使ってXPagesで読み込んでいる文書を保存、返り値にTrueを返す、という処理を行いたいのだろうと推測できます。このコードは意図した動きをしません。いうのは解決が出来ない情報になってしまいます。同様にXPages上に存在するdocument1というデータソースも取り扱うことができません。引数を使って明示的にJSONデータに含めないといけないということです。このように、jsonRpcServiceはXPagesで読み込んでいるデータソース文書を保存したりする処理には向いていないように思います。(出来ないことはないはずです)jsonRpcServiceはデータの読み出し専用が得策?このstackoverflowの回答者も言っていることですが、上記の理由からjsonRpcServiceはデータの読み出し専用として利用することが最良であるかもしれません。以下、jsonRpcServiceを利用したらいいかもしれないシチュエーションとして会社の株価を定期的に自動更新するようなプログラム新しいユーザーを登録する際にすでに同じユーザー名、Emailがないかどうかを問い合わせるプログラムサーバーからのレスポンスデータをクライアントサイドJavascriptで操作、加工したい場合などに適していると思われます。いかがでしたでしょうか?jsonRpcSerivceの特徴を把握してXPages開発の選択肢の1つとして覚えておいてもらえればと思います。アプリ開発などをしたりします。XPagesの仕事をしているとテンションが通常の1.25倍ぐらい高くなります。コーポレーションより、ビジネスパートナーとして認定されています。Log会社概要お問い合せ。