投稿

2014の投稿を表示しています

本日で仕事納めです

みなさん、こんばんは。
本日(2014年12月26日)で、弊社は仕事納めとなります。

従いまして、私のブログ投稿も今年はこれが最後となります。
例年ですと、年越しブログは書かないのか!とか、新年一発目の記事はいつ書くんだ!と揶揄されますが、今年はそういうことを言われる前にお休みを宣言してしまうという魂胆です(笑)

今年は久しぶりに記事数を増やすことができました。
XPagesだけでなく、SametimeやIBM Verseについての記事を書くなど、新しいことが着々と進んでいて、それをウォッチで来たからだと思います(嘘だな・・・)。

それでも、年間50本も書いていないので、少ないとは思っています。
読んでくれている方がいるから書くわけですので、そういった方々のためにももう少し更新頻度を上げた方が良いかな?と。

また、累積アクセス数がもうすぐで50万に達するというところまで来ています(ホントはこの記事を書くまでに達してほしかったのですが・・・)。

ということで、来年はなんとか週一のペースまで持っていければいいな。と感じています。


それと、ブログはそこそこ認知していただけるようになったと感じていますので、別のことにも挑戦していきたいと考えています。
それが何になるのかは全くわかりませんが、違った形でみなさんと接することができれば良いですね。



さて、それでは来年も当ブログをよろしくお願いします。




ホントに、年越しブログは書かないからね!お休みしますから!

クリスマスとXPages

イメージ
おはようございます。クリスマスです。
ホントなら楽しい夕べのはずだったのですが、誰かさんの無茶ぶりにより、クリスマスにXPagesのブログを書くことになりました(え?自業自得だろ?そうなんですがね・・・)。

しかし、発想力が貧弱なこの私にそんな洒落たものは書けません。
ひたすら考えました・・・

そして、「XPagesはJavaScriptがかけるんだから、世の中にあるどなたかが作成したJavaScriptのプログラムも動くに違いない!いや動く!」という想いから、
JavaScriptでクリスマス関連のことをやっているサイトを探しました(笑)


あるもんですね。見つけましたよ。JavaScriptでクリスマス。
actywayというサイトにクリスマスに使いたい!雪のパーティクルをチラチラ降らす JavaScript を作ってみよー : actywayという記事がありました。

しっかりとJavaScriptをダウンロードできるようにしてくださっています。素晴らしいですね。
今回は「snowparticle.3.js」をダウンロードしました。

では、早速XPagesに組み込んでみましょう。
せっかくなので、新規にノーツDBを作成します。
そして、「xmas」という名前でXPageを作成します。

雪が降るので背景は白色以外にしておきます(黒とか濃紺にしておくといいかも)。

ダウンロードした「snowparticle.3.js」をメモ帳で開いて全部コピーします。
そうしたら、「onClientLoad」イベントのクライアントJSとして貼り付けます。

これで完成です。なんとまぁ簡単ですね。

そうして動かしてみたものがこいつです。


背景の画像はフリーのものを探してきて設定してみました。
動画はFirefoxで動かしたものにしていますが、IE11、chromeでも動くことを確認しています。



いかがでしょう?XPagesはこのようにJavaScriptを動かすことができます。
JavaScriptならいくらでもサンプルがありますので、いいなと思うものがあったら再利用してみましょう(著作権がある場合もあるので、そこは確認してくださいね)。

では、今日はこの辺で。
メリークリスマス。




特定の文字の出現回数を数えるには?

イメージ
おはようございます。
12月も下旬になり、もうすぐクリスマスですね。あ、その前に明日は「天皇誕生日」で休日です。
こっちもお祝いしましょうね(私は何もしないのですが・・・)
さて、クリスマスというと
https://twitter.com/guylocke/status/540505164482752512
で書いたように、XPages関連のブログを書きますということになってますが・・・
今日、この時点で全くのノーアイディアです。
さて、かけるんでしょうか・・・かけたら褒めてくれていいですよ(笑)


では、今日も本題に入る前に、

をクリックしてくださいね。


上に書いたようにXPagesネタがまるっきり思いついていませんので、今日もLotusScriptネタです。

今日は今までに紹介した関数を使って、違う事をやってみます。
文字列中に、特定の文字が何回出現したのかを数えてみるというものです。

PHPだと「substr_count」という関数があるようで、簡単に取得できますがLotusScriptや@関数にはこのような機能を備えたものはありません。
他の方法を考えましょう。

考えたけど分かりません・・・ここはGoogle先生に聞いてみましょう。
「特定の文字を数える」で検索したところ、
Excelでの方法が出てきました。

どうやら、SUBSTITUTEという関数を使って、検索したい文字を""に変換して、変換前後の文字列長の差でカウントしているようです。
ふむふむ、なるほど・・・

SUBSTITUTEなどという関数はLotusScriptにはありませんね。しかし、同じような機能を持つ関数はありますね。
@関数なら@ReplaceSubString関数や、@Replace関数、
LotusScriptならReplace関数ですね。


今回はLotusScriptで実現してみようと思うので、Replace関数を使ってやってみましょう。
Sub Click(Source As Button) Dim inData As String Dim outData As String Dim inLen As Long Dim outLen As Long Dim srchStr As …

空き時間情報を検索してみる

イメージ
おはようございます。

今年はホントにXPagesの話題が多かったですね。
でも、LotusScriptの話題も欲しいよね?ということで、久しぶりにLotusScriptの話題です。

本題に入る前に、
をクリックしましょう。


今日は空き時間情報の検索についてです。
カレンダーにスケジュールを登録していて、他の人と予定が重なっていないかどうかを調べるのにいくつか方法が考えられます。
例えば・・・
確認したい人のスケジュールを自分のカレンダーに表示させてみる会議招集を作成して、出席可能な時間の検索を行ってみる直接本人に聞いてみる(^^; 等でしょうか。

どれを使ってもいいのですが、LotusScriptでも実現できるので、やってみましょう。

検索に必要な情報は次の3つ+αです。
検索したい時刻の範囲検索したい人のユーザー名空き時間と認定する時間返してほしい空き時間の数(1つで良いのか、複数なのか)
まぁ、4つ目は戻り値を単数にするのか複数にするのかということなので、厳密にいうと必要な情報ではありません。なので、3つ+αとしてます。

1.はNotesDateRangeオブジェクトに開始時刻と終了時刻をセットします。
2.は空き時間を検索したい人のユーザー名を配列にセットします(グループ名でも良いそうです)。
3.は指定した時刻の範囲の中で、空き時間として検知したい時間の分数をセットします(30分なら30
1時間なら60)。

ということで、サンプルです。
Sub Click(Source As Button) On Error Goto ErrProc Dim session As New NotesSession Dim chkDateTime As NotesDateRange Dim needTime As Integer Dim names(1 To 2) As String Dim freeTime As Variant '空き時間を検索する開始/終了時刻 Set chkDateTime = session.CreateDateRange() Set chkDateTime.StartDateTime = New NotesDateTim…

2015年度のIBM Champions for ICSに任命されましたよ!

こんにちは。まだまだ現実逃避中です。12月はいけませんね。

さて、すでに多くの方がTwitterやFacebook、ブログ等で発信しているように
2015年度のIBM Champions for ICSが発表されました。
Announcing the 2015 Class of IBM Champions for ICS!


僭越ながら、私もまたまた再任させていただくことができました。
今回は全世界で96名と昨年よりも10%程増えました。日本からは私を含めて6名の方が選出されました。
ちなみに・・・どなたが選出されたのかは
2015 IBM Champions for ICS
を参照願います。


昨年の所信表明3年目のIBM Championに任命していただきました。では、いろんなことを言ってましたが、どうだったんでしょうか?

ブログへのコメントはまだまだ少ないですが、それでも以前に比べたら、着実に増えてきています。
今後も定期的に記事を投稿することができれば、コメントも増えてくるものと思いますので、それを励みに頑張っていきます。

また、テクてくのコミュニティ編ですが、前回(2014年10月)は、今回IBM Championに選出された阿部さんのお力も大きいですが、参加者同士が活発な議論ができて、大盛況でした(機会を作ってまた開催したいと考えてます)。
コミュニティを活発にすることで、Notes/Dominoの良さを伝えていただければと思っていますので、今後も継続していきます(まぁ、日本IBM様が任せてくれればのお話ですが・・・(笑))。




さて、チームスタジオの加藤様は来年はIBM Championに自薦しないとの所信表明をされましたが、私は来年も自薦しようかな?と思っています。
自分自身、コミュニティへの貢献がまだ足りていないかな?と感じているのが正直なところです。
自薦するためには、自分自身で活動ができたと認識できることが必要です。
ですので、2015年度もIBM Championの一人として、Notes/Dominoコミュニティへの貢献を続けていきます。

なにとぞ、よろしくお願いします。

もちろん、この記事を読んでいるあなたがIBM Championになってもいいんですよ。というか、なりましょうよ!



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

userBeanを使ってみよう

イメージ
こんにちは。12月の記事は投稿したのに(←いつから月一になった!?とかいうツッコミはいりません)、なんとまた記事を投稿します!

師走で忙しいはずなのですが、ほぼ現実逃避状態なので、問題なしです!(え?問題あり?まぁまぁ)

とにかく・・・今日も記事に入る前にをクリックしてくださいね。


さて、では今日の話題へと移りましょう。
ずいぶん前の記事になりますが、XPagesでノーツアプリケーションのアクセス権をチェックしてみよう!というのを書きました。
XPagesでNotesDBに対するアクセス権を取得するにはどうすれば良いの?というものです。

このときは、SSJSのNotesDatabaseクラスのgetCurrentAccessLevelやqueryAccessPrivilegesを使って取得するという方法を紹介していました。

この記事に対してはいくつか有難いコメントをいただいていまして、その中に「Kazunori Tatsuki」さまから「Domino 9.0.1 もしくはExtension LibraryにあるuserBeanを使うと更に便利にACL周りの情報が取得できますね。」という情報を提供していただきました。

これは、詳細を調べて皆様にお届けしないと!ということで調べてみました。


Notes/DominoでXPagesを利用する場合、「Extension Library」という拡張モジュール群があります。
こちらをDominoサーバーにインストールすると、各種情報へのアクセスを提供する手段として、「Managed Bean」というものが利用できるようになります。

この「Bean」にはいくつかの種類があるようで、今回説明する「userBean」もその一種です。
これはSSJSもしくはEL(XPages データソース解説 - アクセス方法を参照)からアクセスすることができます。

記述方法は至って簡単。
userBean.プロパティ名称
とするだけ。
例えば、「userBean.commonName」と書きます。
計算結果フィールドコントロールに表示させたい場合、「値」プロパティに「式言語(EL)」として書くか、「JavaScript(サーバーサイド)」として書くかの違いだけです。いずれも記述方法は同じです。


とても簡単ですね。
ということで、作成したサンプルが…

XAgentとは?

イメージ
こんにちは。12月です。師走です。後1ヶ月で2014年も終わりです。
今年はもう少し記事の提供ができるかなぁと踏んでいたのですが、なかなか思うようにはいかないもので・・・
情報を入手するのは「タダ」かもしれないけど、情報を提供するのは「タダ」ではありません。
ということですね。

さて、では12月一発目の記事と行きましょう。
これをクリックしてからね。


先月行われたXPagesDay 2014。私が担当したセッションの中で、別サイトのJSONデータを取得するためにはいくつかの方法がありますよ。という話をさせていただきました。
今回はその中でも「XAgent」について取り上げてみます。


そもそもXAgentとは何か?
詳しい説明は、こちらのサイトで解説されていますので、読んでみてください。英語ですがねー。
XAgents - Web Agents XPages style


XPages登場以前の、Domino Webアプリの場合、「?OpenAgent」というURLパラメータを付けてWebページを開くことで指定したエージェントを実行させることができました。
このエージェントの中にPrint文を記述することでページにHTML等を表示させることができます。
ここで、「Content-Type:」を出力するようにしておくと、HTMLではなく、XMLやJSONをページに表示させることができます。

これをXPagesでもやってみようというのがXAgentなのです。

なぜ、XAgentなのかというと、
XMLやJSONデータを取得する場合に限らず、他のWebサイトの情報を取得する場合、別ドメインのものは拒否されてしまいます。
これは、クロスサイトスクリプティングを防止するためです(こちらについては、CORSというキーワードで検索してください)。

?OpenAgentやXAgentを使うと、サーバ上でデータを取得することになるので、「別ドメイン」という事にはならなくなり、それを再利用する形にすることで回避するという訳です。



では、実際にXAgentの実装方法を確認していきましょう。

まず、適当な名前のXPageを作成します(ここでは「XAgent」としておきます)。
作成したら「すべてのプロパティ」にある「rendered」を"false"に変更します。
こうする…

XPagesDayはどうでしたか?

こんばんは。2日間にわたって開催されたXPagesDay 2014。いかがでしたか?
基本情報から上級テクニック、そして今後のリリースについてまでいろいろな情報が飛び出しました。
すでにXPagesを始めている方も、これから始めようという方にもご満足いただけたのではないでしょうか。

私のセッションでは昨年に引き続きDominoデータアクセスサービス及びRESTについて話をさせていただきました。

セッション資料をslideshareに公開しましたので、参照していただければ幸いです。
ちなみに、こちらですね。
XPagesDay2014 [B-3] XPagesでRESTを使ってみたら、こんなんだったPartⅡ from Masahiko Miyo


また、昨年の資料はこちらの記事に書いてありますので、併せてご参照ください。
XPagesDay2013開催中!



IBMの佐藤様のセッションでも言われていましたが、XPagesはまだまだ進化します。
私もその進化についていけるように、常に学習していきます。
皆さんも、どんどん学習してXPagesを楽しみましょう!


では、今日はこの辺で・・・

XPagesDay2014!!!

イメージ
こんにちは。久しぶりの投稿です。なんと1ヶ月以上、空きました。
わっはっは。サボっていたわけではありませんよ。

なぜか!?

それは、あの一大コミュニティイベントであるXPagesDayが今年もやってくるからです!!!
3年連続となる今年もWebセッションとなります。


僭越ながら、私もまたまたセッションを担当させていただくことになりました。
そのため、ブログへの投稿ができない状態でした・・・

ちなみにセッションの申し込みはこちらからできますので、まだという方は是非お申し込みください。

日付はなんと、今週の2014年11月18日、19日。あれ?もう明日じゃないですか!?
忘れてた!という方は急ごう!!


なお、私は11月19日の
【B-3】XPagesでRESTを使ってみたらこんなんだった PartII
を 担当します。


なお、告知がこんな日になったのは、資料が出来上がらなくて、本番当日、ヤバいどうしよう・・・という状態だったということに他なりません・・・



では、当日Web上でお会いしましょう!

アーカイブの設定内容を取得する

イメージ
皆さん、こんにちは。10月に入りましたが大型台風が続々やってきています。
注意してくださいね。台風のときはなるべく出歩かないように。できることなら在宅勤務にしましょう(私の願いでもあったりします・・・)。


さて、今日も張り切っていきましょう。
とその前に・・・をクリックしてくださいね。



ではでは。
今日は久しぶりのLotusScriptです。
そして、いまだにアクセスが多い「アーカイブ」についてです。



メールのアーカイブをするのがほとんどだと思いますが、どんな設定になっているかを確認する方法が分かりにくいですよね。
通常、ノーツDBのプロパティから「アーカイブの設定」というボタンをクリックして(下図)、専用の画面上で確認します。

特殊な画面なので、他の方法では取得できないかな?と思っていたのですが、調べてみたらプロフィール文書の集合体でできていたことがわかりました。
であれば、LotusScriptで取得することができるのではないか?という事でサンプルを作ってみました。
Sub Click(Source As Button) Dim session As New NotesSession Dim db As NotesDatabase Dim pdoc As NotesDocument Dim proDoc As NotesDocument Dim i As Integer Dim proNum As Integer Dim proName As Variant Set db = session.GetDatabase( "Dominoサーバー名", "メールファイル名" ) Set pdoc = db.GetProfileDocument( "archive profile" ) proNum = Ubound( pdoc.GetItemValue( "ArchivePrivatePolicyList" ) ) proName = pdoc.GetItemValue…

XPagesで複数DBの内容を一つのビューとして表示させてみる

イメージ
秋分の日を迎え、日が短くなり、いよいよ秋本番となってきました。
秋と言えば、スポーツの秋、食欲の秋、読書の秋、等々いろいろありますが、やっぱり「Notes/Dominoの秋」でしょう(笑)。

ということで今日もブログ記事を更新です。
早速本題に・・・と行きたいのですが、恒例のボタンクリックをしてくださいね。



では本題に入りましょう。今日もXPagesについてです。


XPages化にあたっての問題点?
先週の9月16日にノーツコンソーシアムのXPages研究会がありました。
その中で既存のノーツDBをXPages化するにあたって、質問がありました。
「複数のノーツDBに情報がわかれて登録されている。そのため、毎回毎回それぞれのDBを閲覧しないといけない。XPages化するにあたって一つのビューから複数のノーツDBの情報を参照することができないだろうか?」
というものです。

参加者たちは、複数のデータソースが定義できるんだから実現できるんじゃないかな?
と怪しげです。

これが解決すれば、XPagesの導入の手助けになるのであれば、是非解決したいところです。
さらには、こちらのスキルのレベルアップにもなります。
という事で私が独自に調べてみました。


考えてみよう
まず、複数のノーツDBの情報を表示するということなので、新規にノーツDBを作成してその中で表示させることにしました。


次にノーツDBの情報を表示するとなっていますが、ここではビューの情報が表示されれば良いでしょう。
ということで、ビューコントロール(9.0.xだと「表示」コントロールという名称です)が使えるかな?と思いましたが、以下の理由でやめました。
複数のノーツDBの定義方法が不明(そもそもできるのかどうかも不明)複数のノーツDBが同じビュー名、さらに同じ構造(列情報)になっているか不明
アプリケーションを作成するのに、決まった方法はないので、ビューコントロールに固執する必要はないだろうということで、別の方法で解決することにしました。

とりあえず、表示させたいノーツDBのビューをデータソースとして定義してみることにしました。
データソースは「Dominoビュー」とすれば良いはずです。

そして、複数のデータソースを連結するのと、ビューの内容を表示するということで、「繰り返しコントロール」を使うことにしました。
先に…

XPagesで添付したイメージを画面に表示させる

イメージ
最近、ブログの投稿がされてない!と怒られました。はっはっは・・・
でもね・・・記事を書かせたい(私のモチベーションを上げる)と思うのであれば、コメントくださいね。
役に立ったのか立ってないかだけで構いませんので、 書いてください。匿名でいいんです。
このブログはNotes/Dominoを使っていただいている皆様のために書いています。

ですが、有益な情報なのか、そうでないのかを決めるのは読んでいただいている皆様です。
ぜひ、他の利用者へのフィードバックとしてコメントをください。


想いを吐露したので、少しすっきりしました。ということで?今日もブログを更新しましょう。





XPagesについて質問があったので、それを解決する方法について書いてみます。
NotesアプリケーションをWeb化したことがある人からすると、「なんだよ、こんなの知ってるよ」という内容かもしれませんがお付き合いください。


質問内容は・・・
XPagesアプリケーションで文書に画像ファイルを添付した。
文書を開いた時にその画像ファイルをイメージとして表示させるにはどうすれば良いか?
このイメージは文書のタイトルと同等の扱いとしたい。なので、画像は文書内の目立つ場所に独立して表示させたい。
というものでした。
ノーツクライアントのアプリケーションの場合、クリップボード経由で画像ファイルを貼り付けられたので簡単に実現できますが、XPagesやWebアプリの場合はどうなんでしょう?(下図はノーツクライアントで画像ファイルを貼り付けてみたところ)

考えてみた
Webアプリケーションの場合も考えると大変なので(めんどくさい・・・)、XPagesで実現する方法を考えてみました。
リッチテキストがあるならば、XPagesからもイメージの貼り付けはできますが、これだとその場所にしか表示できません。となると「目立つ場所に独立して表示させたい。」という要件を満たしません。
となると、やはり添付ファイルで実現するのが良いでしょう。


やってみよう
まずは添付ファイルをアップロードできるようにします。
こちらについてはXPagesで添付ファイルの処理をする(アップロード) に記事を書いていますので、そちらを参照願います。
それでは、実際に表示する方法についてみていきましょう。
画像ファイルをイメージとして表示するので、「イメージコントロール」を利用しま…

XPagesでワークスペースを表現してみよう

イメージ
みなさん、こんにちは。
秋の気配がしたかと思ったのですが、まだまだ暑いですね。気温の上下に影響されて体の調子を悪くしないように気を付けましょう。

さて、今日も始める前にボタンをクリックしてくださいね。



今日の話題はXPagesでワークスペースを表現してみよう!です。

1.ワークスペースのおさらい
Notesクライアントの機能の一つに「ワークスペース」というものがあります。
Notesアプリケーションをアイコン形式で表示するあれですね。
そんなワークスペースですが、Notesクライアントでしか使えないという弱点があります。
最近では、Notes Browser Plug-inがありますが、あれはWebブラウザ上でNotesクライアントのBasic版を動かしているようなものなので、Notesクライアントで動いていると判断して良いでしょう。

このワークスペースがWebブラウザ上でも使えたら嬉しいですよね。
ということで・・・またまたOpenNTF.orgから探してきました。あるもんなんですね。こちらのXPages HomePageがそうです。

こちらのアプリケーションは2012年12月が最後の更新となっていますが、Notes/Domino 9.0でも動作しました。
また、純粋なXPagesアプリケーションとして作られているので、余計なものをインストールしたりする必要がないのも特徴です。


2.ダウンロードしよう
では、さっそくダウンロードしてみましょう。
プロジェクトページにある「Downloads/Releases」のタブを開いて、「Release 3.0」をクリックします。すると、「XPages Applications Homepage.zip」というファイルがあるので、それをクリックします。
ダウンロードできたら、適当なフォルダに解凍します。下図がzipを解凍した状態です。
この中にはNotesテンプレート、利用手引書等が入っています。
※この辺りは、OpenNTF.orgのプロジェクトはどれも同じですのでわかりやすいですね。


3.使ってみよう
使い方は簡単です。
zipファイルの中にある「Workspace.ntf」をDominoサーバにコピー&署名して、このテンプレートを元にDominoサーバ上にNotesアプリケーション(~.nsf)を作成するだけです。
作成したら、…