当ブログに掲載しているサンプルは、すべて利用者の自己責任という形でお願いします。
ただし、明らかな不具合がある場合、ご連絡いただければ、訂正記事を出します。
また、こちらのサンプルは、別のサイト等への公開、転載は一切禁止しています。
どうしてもと言う場合は、筆者にあらかじめご連絡ください。

テクてく Lotus 技術者 Slack に参加しよう!

2015年1月29日木曜日

クロージングセッションにて・・・

みなさん、こんにちは。
ついに最終日を迎えてしまいました。
この記事を書き始めている時点で、残るはクロージングセッションのみです。
毎年、サボっていたので、今回はしっかりと参加してきます。
IBM Championの集合写真もあるらしいので、なおさらです。
 →無事に参加できて、集合写真に加わることができました!!

さて、本日はセッション数が少なくなっており、また参加者も1/4くらい?帰ってしまったようです(もっと残ってるかな???)

私はといえば、疲れがたまってきており、少々辛い状態になっています。
んー、帰国日が金曜日で良かったです。週末のうちに治してしまわないと。


参加したセッションは、「App Throwdown Winner's Circle」と「IBM Verse Partner Enablement Session」と「Ask the Developper」です。

最初のセッションは、Business Partnetのアプリケーション紹介で、rivaという会社のCRMとNotes/Domino連携、Trilog GroupのDarwinoというモバイル連携のレプリカインフォメーションソフト、S2Kという会社のConnections拡張等が紹介されました。

個人的に気になったのは、Darwinoですね(Notes/Domino関連にしか興味がないとか言わないでください・・・)。
下図に示したようにモバイルデバイスにノーツDBのレプリカのようなものを作って、自動連携ができるような感じでした。
まさか、モバイル端末にノーツDBは作れないでしょうから、どのようにデータを格納しているのか気になるところです。
想像としては、RESTやDXL等を使って、XML形式でデータを作成して格納しているのではないか?という話をしていました。
Darwino

ちなみに、デモでは、モバイルアプリでPlane Mode(機内モード)にした状態でメッセージをPOSTして相手にはまだ届いてないよ。として、Plane Modeを解除したら、即時に連携して、相手にメッセージが届くというものをやっていました。

モバイルにXML形式で格納するというのは、盲点だったので、今後のアプリ開発の参考になるかな?と思っています。

その後の、IBM VerseのセッションはBP向けということでコンフィデンシャルな内容が多分にあったのと、機能については特に目新しいものはありませんでしたので、割愛いたします。

そして、Ask the Developper。
毎年期待しているのですが、 今年はここでダウン・・・
ほぼ聴けてないです。最初の質問者が「ロードマップを示せ!」というのは分かったのですが、やたらと長話をするので、困ったものです。
その他の質問者も前置きが長いんですよね。MCの方が「シンプルな質問をしてください。できれば、Yes/Noでこたえられるものにしてください!」と言っているにもかかわらず、あーだこーだと質問をしています。
何なんでしょう・・・


その他、空き時間に再度、Meet the Developperの部屋に行って質問をしてきました。
業務上、メールのデータ構成に興味があったので、そのあたりの質問をしてきました。
さすがにこちらの内容は非公開にさせていただきます(汗)←じゃぁ書くなって?ごもっとも。


最後はクロージングセッションです。
例年ですと、ゲストの話をして、来年はいついつに開催するよ!というアナウンスがあるのですが・・・
なんと・・・ありませんでした。
どうも、まだ来年については未定のようです。
来月以降に発表するようですので、どんなイベントになるのかを考えながらお待ちください。


なお、IBM Championが集合した写真はこちらです。
無事に昨年のリベンジができましたとさ。
2015年度のIBM Championsが集まっての集合写真

今回のレポートはこれで終了です。
明日は早朝に出国して、日本に帰国します。
本来なら反省レポートがあるのですが、来年の開催が決まっていませんので、今回は書きません。


では、詳細なレポート(宿題)の発表は、2月25日のテクてくロータス技術者夜会で行いますので、またその時にお会いしましょう。

2015年1月28日水曜日

折り返し地点まで来ました!

日本のみなさん、こんにちは。本日もオーランドからお届けします。
オーランドの天気は晴れ!ただ、今日は風がとても強いため、外でのんびりとはいかないのが残念です。
スワンとドルフィンの間にある池?湖?川?

さて、IBM ConnectED 2015も2日目にして、すでに折り返し地点です。
やはり、1日少ないと、あっという間に終わってしまいそうで、切ないですね。

本日、最初のセッションは、「IBM Domino App Dev Futures」ということでアプリケーション開発の今後の新機能についての話でした。
IBM Domino App Dev Fetures

アプリ開発の新機能ということで、ノーツの新しい機能とかの話もあるかなぁ?と思っていたのですが、さすがにこれ以上、Notesに新しい機能を追加するのは難しいようで、すべてXPages関連の話でした。


最初は恒例の過去1年の振り返りです。IE11のサポートやCKEditorのバージョンアップ等、セッションを聴いている最中は「いや、そういうの、ほんといいから。新しいことを教えてよ!」という感じになるのですが、こうしてブログ記事にすると、「あぁ、そういえば、そんなことあったなぁ」と振り返ることができるので、やっぱり必要ですね(笑)
どんな内容でもいつ役に立つかわかりませんから、セッション内容および講師に文句を言ってはいけません♪


そして、今後の予定の話になりました。
私が聞き取れたものは、
  • XPagesでのjQueryの正式サポート
  • XPagesでのレスポンシブデザイン用のコントロールの追加
  • リレーショナルデータソースのサポート(JDBCのことかな?)
  • フィールドの暗号化と署名用のクラスおよび関数の追加

です。他にもあったようですが、理解力不足は否めません。

jQueryはもともとXPagesに組み込むことができていましたが、正式サポートするというには驚きました。そんなに簡単にサポートできるものなのかしら???
レスポンシブデザインはウィザードが用意されていて、 それに従っていけば、簡単にレスポンシブデザインのページが作れるというものでした。

デモをしていましたが、アプリケーションレイアウトコントロールのウィザードよりもわかりやすかった感じがします(個人の感想ですので、全員にその効果を保証するものではありません(笑))
レスポンシブウェブデザインを補助するためのウィザード

JDBCはもともとXPages Extension Libraryにもあったはずなので、それがNotes/Dominoに組み込まれたものという感じでしょうか。


そして、XPagesでのフィールド暗号化についてです。
昨日のブログでも触れていましたが、どのような感じになるのかがわかりませんでしたが、なんとデモを見せてくれました。
XPagesでのフィールドの暗号化のデモ

ちょっと画面ではわかりにくいですが、ブラウザでのXPagesアプリで新規文書を作成しているところです。
真ん中のフィールドが赤枠で囲まれているのがわかりますでしょうか?
ノーツクライアントで「フィールドを暗号化」した際に表示される入力の枠が赤くなっているのと同じものです。
ここで入力した内容は保存時に暗号化されるようになっています。
保存する前に誰のキーで暗号するのかを選択しています。

これで文書を保存すると、他のユーザが開いた場合に、「文書の復号に失敗しました。」というメッセージが表示されて、そのフィールドだけ空白表示になります。
デモでは、Webブラウザで入力した文書をノーツクライアントで開き、実際にフィールドの内容が見えないというデモをしてくれました。
暗号キーは、ノーツのIDファイルを使うのですが、XPagesそれもWebブラウザでは、利用できませんので、どうしたかというと、ID Vaultから拾ってくるということをしていました。
なるほどねぇ。ID Vaultにはそういう使い方もあるのね。
これは、開発者といえども、ID Vaultの仕組みは知っておいた方が良いですね!ぜひ勉強しましょう。
設定方法は当ブログでも紹介していますので、過去記事を参照してください。

このID Vaultから拾ってくるという方法ですが、実際にはノーツのクラス(NotesSession、NotesDatabase、NotesDocumentクラス)にそれぞれメソッドが追加されていたり、クラスそのものが追加されています。
フィールド暗号化にかかわる新しいクラスと関数

なお、XPagesで暗号キーを指定されなかったユーザが文書を表示した場合に、どういう挙動になるのかについてはデモをしてもらえませんでした。
質問しようかとも考えたのですが、回答を理解できるかどうかわからん・・・と迷っているうちに終わってしまいました。
そうしたら、日本IBMの佐藤様が、関係者に話を聴いてくださいました。感謝感激です!!
※こうしてフォローしてくれるので無茶ぶりにこたえなきゃ!って思うんですよね!

結論としては、復号にもID Vaultを利用できるようになっていて、そのユーザがログインしたときに判定しているとのことです。
キーを持っていない場合は、そのフィールドは空白で表示されて、エラーメッセージは「エラーメッセージ」コントロールを使うことでそこに表示させることができるとのことです。

あとは、実際に自分の手で組んでみるのが良いでしょう。
使えるようになったら、是非検証してみたいです。その時はもっと詳細に分るでしょうから、期待しないでお待ちください!!


その他、BlueMixでXPagesアプリが動かせるようになるよ!とのアナウンスもありました。
on Premisとの連携がどこまでできるのかは現時点では全く不明ですが、Notes/Domino技術者もBlueMixに関われる日は近いです。今からチェックしておきましょう!
BlueMixについては、木村さんがブログで記事をたくさん書いていますから予習しましょう!!!



セッション以外では、昨日も触れたノーツ25周年についてです。
OGSで紹介するだけなんて・・・と思っていたら、ノーツのアイコンを模したホワイトチョコレートがのっかったショートケーキが大量に出ていました。
参加者は自由に食べることができて、みなさんご満悦だったようです。
下の写真は、でかいケーキに喜ぶIBM Championの二人です(笑)
ノーツ25周年記念のケーキに喜ぶチャンピオンの2人

また、写真撮影コーナーもありましたので、今年もはっちゃけてきました。
係りの人の言うがままになってしまった某チャンピオン

ちょっと仕事してる風には見えませんが、イベントの中の一つですので、こういったものに参加するのも敢えて「仕事のうち!」と断言してしまいましょう。

この後は、またセッションがあり、夜はホテルドルフィンでパーティがあります。
そこでの様子は私のtwitter、facebook等でお伝えしたいと思います。


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









2015年1月27日火曜日

OGSなのかなぁ・・・

こんにちは、オーランド時刻で22:10です。
さすがに滞在三日目ともなると、みんなグロッキーになってきています。

私もかなりグロッキーなので(実際、昨夜はほぼ寝ていません・・・初めてだよ、こんなこと)、内容はあまり頭に入っていません。

さて、本日のオーランドは雨で始まりました。割と激しく降ったので、今日は一日雨かなぁ・・・と落ち込んでいたのですが、オーランドには強烈な晴れ男/女がいたようで、10:00過ぎにはすっかり止んで澄んだ青空になっていました。
素晴らしい!
晴れたオーランドの空

本日はオープニングゼネラルセッション、いわゆるOGSが開催されるということで、いよいよIBM ConnectED 2015が始まるぜ!と、そして、聴講場所も日本IBMの臼井様が特等席を日本メンバーのために確保していただき、これはテンション上がるぜ!!

と思っていたのですが・・・
突然、始まってしまいました。
例年であれば、アーティストが数曲、演奏してくれて、さらに盛り上げてくれるのですが、なんとそれがありませんでした。
私は、普段洋楽は聴かないのですが、生演奏はさすがに胸に響くものがあるので、結構楽しみにしていただけにちょっとげんなりしました。

ともあれ、Jeff Schick氏の登場で基調講演は始まりました。
最初にアジェンダを発表した後、ノーツ25周年おめでとー!となったのですが、
私は日本で有志とすでにノーツ25周年パーティを終わらせていたので、ここでも「え?今更?昨年の12月に終わらせたよ!」と、さらにげんなりしてしまいました(笑)

そして、IBM Verseのデモが始まりました。
昨年のIBM Connect 2014では一枚の写真だけ。そして、7月のweb castでは数枚のスライドだけ。という状態で、果たして、本当に動くのかしら???とドキドキしながら見ていました。

結果は・・・
素晴らしい!普通に動いているじゃないですか!しかも、Webブラウザだけではなく、携帯端末(たぶん、iPhoneでしょう)でも、デモをしてくれました。
まさか、こんな短い期間でこれだけのものが出来上がったのは本当に感動しました。
顔写真にマウスカーソルをあてると・・・

顔写真アイコンにマウスカーソルをあてると、その人に対してのアクションアイコンや簡易ビジネスカードのようなものが表示されます。リリース時にもこの形なのか、もっと詳細情報を出せるようになるのかは不明ですが、なかなか期待が持てそうです。

モバイル端末でのIBM Verse

こちらは携帯端末での画面です。
カレンダーですが、きれいにデザインされています。

その他、IBM Connections Nextの画面も一部表示されました。IBM Verseに合わせたようなデザインになっています。というよりもIBM Verseがデザインを合わせたんでしょうね、きっと(笑)

Connections Nextのホーム画面?

画面最下部にあるスケジュールはIBM Verseと同じものを使っていると話していました。

他には、IBM Verseのトライアル権をIBM ConnectED 2015来場者全員にあげるよ!という嬉しい通知もありました。
これは早いところ使ってみたいです。
※後で、日本IBMの人と一緒に担当者の方にお話をお伺いしたところ、2月以降に連絡をしてくれるよとのことでした。なお、いくつかの制限事項があるようで、好き放題に使えるというわけではなさそうです。

OGSのその他の内容については、IBM Championの方がブログで書いたり、現地の参加者が「#IBMConnectED」というハッシュタグ付きで呟いていますので、そちらを探して読んでみてください。こちらにいる雰囲気を味わいながら、情報収集をすることができます(笑)


午後のセッションでは、「IBM Domino - 2015 and Beyond」というものに参加してきました。
今年に予定していることが聴けるはずですので、何が出てくるかなぁ?と行ったところ、
1時間のうち、45分は昨年(2014年)の振り返りという・・・えぇ、後悔と反省は必要です!

で、肝心の今年の予定ですが・・・
  • メールヘッダでRFC2231をサポートする
  • NIF(ノーツDBのビュー情報)をNSFから分離して外出しにする
  • MSのWinmail.dat形式をサポートする
  • XPagesでのフィールドの暗号化および署名をサポートする
というものでした。実は私は全部関係しているものなので、嬉しいやら大変やらという思いです。
全部、検証しなきゃいけないのか・・・んー、時間が・・・


また、セッションを聴かない時間がありましたので、テクてくで無茶ぶられたIBM Verseの宿題について、「独りで」IBMのデモコーナー(ラボではない)に突撃取材を敢行してきました。
聞いた内容は以下の通りです。
  • 代理アクセスの可否
  • ネームピッカーの有無及び漢字対応
  • 社外のe-mailゆーざとやり取りした場合の顔写真アイコンの扱い
  • 個人アドレス帳の有無

他にもいくつかあったのですが、ガラスハートの私は、拙い英語でこれ以上、質問するのを躊躇い、後日ラボにて再挑戦すると心に決めたのでした。
っていうか、DJXなんてこっちの誰が知ってるのさ!?
IBMの方は、一生懸命聴いてくださり、私の話した内容をさらに英訳してくれました(笑)まだまだ勉強が必要です。

なお、回答については敢えてここでは載せません。
2月度のテクてくロータス技術者夜会で発表とさせていただきます(テクてくでの宿題ですからね~。知りたかったらテクてくに来てくださいっ!)

ちなみに、取材中の私が撮影されていましたので、写真をアップ。
しどろもどろな英語で質問中





夜は、「Business Partner Reception at ConnectED 2015」がありましたが、どこぞでノーツ25周年のTシャツがもらえるよ!との情報を日本IBMの方が仕入れたようで、これはぜひ入手せねば!と十数名で乗り込んでいきました。

どうも、各国のIBM ChampionおよびSocial Biz Gのメンバーが独自に作ったもののようで、ゲームに参加して勝ったらあげるよ。という感じでした。
私は日本IBMの佐藤様とIBM Championの田付様との3人で1チームになり(3人1チームがルールだったのです)、各種ゲームに挑みました(ジグソーパズルは他のチームが苦戦していたので、無理やり助っ人に入り(笑)ましたが、惜しくも敗れてしまいました。
その後、Mat Newmanが出題するノーツオタククイズの5問勝負に挑みましたが、こちらも惜しくも敗れてしまいました・・・
クイズはこんなの。
1.Lotus travelerの登場以前にモバイルでメールを受け取るアプリがあったが、そのアプリの名前は?
2.ノーツ 4.6のバージョン情報に表示されている人の名前は?
3.ノーツ5.0のイースターエッグで「i am superman」と入力した後、Notesのどの文字をクリックすると、イースターエッグが発動する?
4.Irisが設立された日付はいつ?
等々

こんなもん、誰がわかるんでしょうか?
わかったあなたはワールドワイドクラスのノーツオタクです(笑)


しかし、どうしてもTシャツをあきらめきれない私たちは無理やりお願いして?無事にゲットできました(笑)
Tシャツを着てご満悦


そして、Tシャツをゲットできなかったメンバーを追いかけてBP Recepition会場へと行き、みなさんと談笑した後、ホテルへと戻ってきました。

明日も8:00からセッションがあります。
こちらの内容もできる限りお伝えできればと思いますので、今日はこの辺で終わりとします・・・


2015年1月26日月曜日

今日はプレセッションなので・・・

みなさん、こんにちは。
オーランド滞在二日目が終了しました。現地時刻で0:25です。
もう寝ないといけないのに(明日は8:00からOGSです。起きれるかなぁ・・・)、まだブログを書いていませんでした。

敬愛している某チャンピオンが「飲まずにはいられない!付き合ってください!」と懇願していたので、さすがに断るわけにはいきませんでしたので、こんな時間になってしまった次第です。
という言い訳は、みなさんには関係ないですね(笑)


さて、滞在二日目の話についてです。
チャンピオンであるチームスタジオの加藤さんがすでにIBM ConnectED 前哨戦始まる でも書かれているように、本日は「Leadership Alliance」というものに参加してきました。
こちらのセッション内容については、非公開にするようにとのお達しがありましたので、私も書くことはできませんので、ご了承ください。
IBM Championになると、こういう特別なセッションにも呼んでもらえるんですね。なかなかない機会ですので、これを一つの目標としてIBM Championを目指していただくのもよいでしょう。

KeyNote Sessionに参加した後、IBM Championの義務(???)として「IBM Champions “Meet & Greet”」というセッションに参加することになっていたので、参加してきました。
"Meet & Greet"ということなので、各国のチャンピオンたちと話ができるかなぁ?と期待していたのですが(昨年も同様の集まりがあり、そこではしっかりと恥をかいてきたので、少しは挽回せねば!と力んでいました(笑))・・・
IBM Championたちがチーム分けされて、そこであらかじめ決められていたテーマに従って、簡易ディスカッションをさせられました。と言っても、思ったことを付箋紙に書いて、ボードに貼るだけという
なんかどっかでやったなぁ・・・そうそう、テクてく 2014年10月度コミュニティー編でやったワールドカフェ形式のディスカッションをさらに簡易的にしたものに近かったです。
これをIBM Championたちでやるのは勿体なくないか???と思ったのですが、まだそれ程喋れない私にとっては、なんとなく参加した感は得られました(笑)
加藤さんは田付さんなどの英語が達者な人たちにとってはちょっと退屈だったかも???


さて、その後はLeadership Allianceに参加した人だけが参加できるランチ会場でランチを食べてきました。
ここにも各国のチャンピオンたちが当然集まりますので、そこで数名のチャンピオンと談話をすることができましたので、良かったです。



午後からはマスタークラスのセッションがありました。
実際にはWelcomeパーティもやっていませんので、プレセッションになります。
さすがConnectED 2015。休む暇を与えてくれません。まさに苦行です(笑)

この午後のプレセッションですが、IBMの方と各国のIBM Championの方がペアになって講師をやっていました。最後のMat Newmanのセッションはさすがに違いましたが、その前の3つは確かそうだったと記憶しています。
昨年まではこんなセッションはなかったと思っているので、この辺もちょっと変わったのかな?というところです。
IBM Verseのセッションもあったのですが、概念やベータ版の動作についての話程度で、詳細は明日以降に持ち越しかなぁ???という感じでした(実は私が聞き逃しただけ?)。

また、「IBM Domino Applications on Cloud」というセッションでは、on Premis、IaaS、PaaS、SaaSの違いをピザの注文の仕方?にたとえて話していたのが笑えました。
ピザにたとえた図

左から、on Premis、IaaS、PaaS、SaaSだそうです。
外国人の考えることは私には理解できません(笑)。それとも、この例えって有名なの?
ちなみに、実際には下の図のような形らしいです。

クラウドサービスの図





そしてMat Newmanのセッション「#UserBlast 2015」ですが、相変わらずの人気でした。
面白かったのは「全文検索ネタ」です。
60,000文書6.0GBのメールDBから「one two three」という文字を含むという検索を行うのにどれくらいの時間がかかるのかを実演してくれました。
実際に1秒もかかっていません(コンマ1秒とかそういう感じです)。
その後、文書の中にあった添付ファイルを開いて、検索結果が正しいことを証明してくれました。
全文索引のやり方



ということで、本日のセッションはなんとか終了しました(実は時差ボケでほとんど聴いていませんでしたが・・・でも、プレセッションだから許して)

そして、Welcome Receptionへと移り、そこで日本から来たみなさんと楽しく食事をしました。
その様子は私のfacebookに写真付きで投稿してありますので、そちらをご覧ください。



といったところで本当に寝ないと、それこそ明日のOGSで失態を犯してしまいそうなので、今日はこの辺で終わります。

では・・・

2015年1月25日日曜日

ホリデーインに気を付けて!

日本のみなさん、こんにちは。
この書き出しで始まるということは・・・
はい。3年連続でやってきました、アメリカ合衆国はフロリダ州オーランドです。

IBM Champion for ICSでいられることができたので、今年も渡米許可を上司に頂き、IBM ConnectED 2015にやってこれたということです。

今年は残念ながら、日本IBM様のツアーはありませんでしたので、IBM Championの加藤さん、田付さん、阿部さん、そして日本IBM様の鴨志田さんと一緒に成田空港からこちらへとやってきました。

今回は成田空港 -> テキサス州ダラス/フォート・ワース国際空港 -> オーランド国際空港
という形での旅でした(オーランドまでの直行便がないため、このような形にしています)。
成田からの飛行機の出発時刻が11:30で、そこから11時間(!)かけて、ダラスまでたどり着きました。ダラスでは飛行機の乗り継ぎがなんと1.5時間しかありません。
しかも、到着ロビーと出発ロビーの間は15分くらいかかります。

さらに、米国への入国手続き(ダラス空港はとても大きい空港で、入国審査に時間がかかることが予想されていました。事実、一昨年はこれだけで1時間以上かかっていたのです(汗))や、荷物の受け渡しがあるため、実は「間に合わないのではないか!?」という微妙な焦りがメンバーにはありました。

ところが、降りてみたら、思っていたよりも待っている人が少ない・・・あれ?これはラッキーだぞ!
と勢いよく進んでいったら、入国審査の場所に係員がいません。???
受付の方がいて、「ESTAで登録している人は、先に進んでいーよー」と(いうようなことを)言っています。
みんな、???という顔をしながら先に進むと、入国審査用の端末があるじゃないですか。
それも、10台以上!!!

そうです。端末を使って、パスポートを読み取り、さらに指紋採取、顔写真の撮影をしたらそれで終わり!という。
えーっ・・・すごいなぁ。世の中進んだなぁ。というのが実感できました(笑)

しかし・・・その先へ進み、機内に預けた荷物を受け取ると(乗り継ぎの飛行機には自分で預けます)、そこで簡易的な入国審査が・・・
んー・・・意味あるのか???
とにもかくにも、ダラスでの乗り継ぎはスムーズに進み、1時間ちょっと過ぎたところで出発ロビーにたどり着くことができました。

そこからオーランドへは、2時間半です。11時間に比べると短く感じますが、日本国内で2時間半も飛行機に乗ることはないですよね?十分、長旅です(笑)。

そうはいっても、もう、この飛行機に乗ってしまえば、「ナッツリターン事件」でも起きない限り(!)、オーランドにたどり着かないということはありません。
ということで、無事にオーランドにたどり着くことができました。


じゃぁ、ホテルに行こうかということで、その後、ConnectED 2015のレジストレーションを済ませたいので、ホテルに荷物を置いてすぐにホテルスワンに向かおう!となりました。

今回、我々が予約したのは「Holiday Inn Orlando - Lake Buena Vista」というホテルです。
いえ・・・その「はず」でした。
そこへと向かうタクシーの中で事件は起こりました。

この「Holiday Inn Orlando」ですが、前述の「Holiday Inn Orlando - Lake Buena Vista」のほかに「Holiday Inn Resort Orlando - Lake Buena Vista」という似た名前のホテルがあったのです!!!
ここまで書けば、察しの良いみなさんにはお判りでしょうが、
メンバー内で別々のホテルを予約していたという事態が発生していたことがわかったのです!!!

加藤さんと阿部さんは「Holiday Inn Resort Orlando - Lake Buena Vista」に、田付さんと私は「Holiday Inn Orlando - Lake Buena Vista」に宿泊予約をしていたのです(IBMの鴨志田さんは、また別のホテルでした)。

さすがに、今からホテルを変えるわけにもいかず・・・
とりあえず、ConnectED 2015の会場であるホテルスワンで行動を共にしようということで落ち着いたのでした。

複数人でホテルを予約する場合、ホテルの正式名称をよく確認しましょう。住所や電話番号まで確認しておくと、我々のような過ちを犯すことはなくなるでしょう(笑)。


さて、実際にオーランドに着いたのは、昼の1:00頃ですので、ConnectED 2015のレジストレーションは昨年のように焦ることなく、終了。
今年もIBM Championのリボンをつけてもらうことができました。
今回もバッグをいただくことができました。その他、セッション一覧の資料ももらえました。
さらに、IBM Championが参加できる(というか参加しろと言われている)Leadership Alliance 2015というカンファレンスがあるので、そちらの受付も済ませました。バッジが別々なんですね。
こちらにもIBM Championのリボンがついています。

ConnectED 2015の受付でもらえたもの

ということで、明日(25日)から28日までConnectED 2015が開催されます。
今回の目玉は何といっても、IBM Verseですね。
具体的な機能はどういうものなのかがわかれば嬉しいですね。

その他にも、今後のNotes/Dominoはどうなっていくのかといったセッションもありますので、そういったものにも目を向けていきたいと思っています。

例年より1日少ないためか、セッションが詰め込まれており、どれを聴けばいいのか悩ましいところではありますが、あまり期待せずに情報をお待ちください。



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

2015年1月22日木曜日

Erl関数の戻り値に注意

こんにちは。4日連続での更新のために記事を書いてます(なんか、違う・・・)。
でも、さすがに疲れたので、連続更新は今日でおしまいです。

とりあえず、このボタンをクリックしてから始めましょう。
にほんブログ村 IT技術ブログへ


さて・・・
今日はErl関数についてです。
デザイナヘルプには「カレントスクリプトプロシージャ内でカレントエラーが発生した箇所の行番号を返します。」と出ています。
LotusScriptのプログラムでエラーが発生したところの行数を返してくれるというものですね。

例えば、下のようなプログラムを作成したとします。
Sub Click(Source As Button)
    On Error Goto ErrProc
   
    Dim inp As String
    Dim ret As Integer
   
    inp = "aaa"
    ret = Cint( inp )
    Msgbox ret
   
    Exit Sub
   
ErrProc:
    Msgbox _
    "エラー行数:" & Cstr(Erl) & Chr$(10) & _
    "エラー番号:" & Cstr(Err) & Chr$(10) & _
    "エラー内容:" & Error, _
    0 + 16, "エラー処理"
    Exit Sub
End Sub

このプログラムを実行すると、エラーになり、下図のようなダイアログが表示されます。

エラーメッセージ

ここで、エラー行数は「8」と出ています。
つまり、
ret = Cint( inp )
がエラーになっているという事ですが、ソースコードを見ても、まさにその通りだという事が分かります("aaa"という文字列を数値に直しなさいという命令ですから、エラーになります)。


この8というのは、1行目の「Sub Click(Source As Button)」から数えて8行目としているのですが、
Notes/Domino 8.5以降のデザイナの場合、注意が必要になってきます。
LotusScriptをEclipseベースにしている場合です。
同じソースコードをLotusScriptライブラリに記述してみました。
LotusScriptライブラリにサンプルコードを書いてみた

このプログラムを実行すると、やはり「8」行目でエラーが発生していますよ。というダイアログが表示されるので、8行目を見てみると・・・あれ???
何も書いてない行ですね。

従来の場合、「(Options)」と「(Declarations)」と各自作関数は分かれて表示されていたのですが、Eclipse版の場合、まとめて表示させることができるようになっています。

そのため、Erl関数の戻り値とソースコード上の行数が不一致になってしまうことがあります。
これくらいの簡単なソースなら、関数だけを表示することで行数を特定することもできますが、
ライブラリが複雑になってくると、探すのが難しくなってきます。
(実際に、(Declarations)なんかは表示する内容がEclipse版と従来版とで異なる個所があります)

どうしても探さないといけないという場合は、
[ファイル][プリファレンス]で「EclipseベースのLotusScriptエディタを使用」のチェックを外してからLotusScriptライブラリを表示しましょう。
従来の形で表示されるので、Erl関数の戻り値の場所を的確に探せるようになります。
LotusScriptエディタの種類を変更する

エラーの箇所が分かったら、またチェックを入れれば、Eclipse版に戻すことも可能です。
ちょっと面倒ですが、覚えておいた方が良いでしょう。

私はこの技?を便利に使ってます。


ということで今日はこの辺で・・・
明日の投稿はありませんので悪しからず。






【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
単純なDBのカスタマイズから他アプリケーションとの連携までご要望にお応えします!
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

2015年1月21日水曜日

変数のデータ型を調べる

こんにちは。今朝(2015/01/21)は東京でもちょっとだけ雪が舞ってました。
私は寒いのが(暑いのも)苦手なので、雪は辛いです。ホント勘弁してほしいです。

そうは言っても天候ばかりはどうしようもありません。ここはおとなしく、「早く春が来ますように・・・」とお祈りするばかりです。

では、お祈りしつつ、今日も
にほんブログ村 IT技術ブログへ
をクリックしてください。



さて、今日の話題です。
昨日、Variant型の変数について記事を書いた(「Variant型データの初期値って?」参照)ので、それに関連したものです。

Variant型変数の初期値はEMPTYという特殊な値であるということは分かったことです。また、色々なデータ型になりうるというのも分かったかと思います。

では、実際にどんなデータ型になっているのかを調べる方法はあるのでしょうか?
それにはDatatype関数もしくはTypename関数で調べることはできます。
2つの関数の違いは戻り値が数値か文字列かどうかということです。

サンプルコードを載せるので具体的にみていきましょう。
Sub Click(Source As Button)
    Dim a As Integer
    Dim b As Double
    Dim c As String
    Dim d As Variant
   
    Msgbox _
    "変数aの値=[" & a & "] Datatype=[" & Datatype(a) & "] Typename=[" & Typename(a) & "]" & Chr$(10) & _
    "変数bの値=[" & b & "] Datatype=[" & Datatype(b) & "] Typename=[" & Typename(b) & "]" & Chr$(10) & _
    "変数cの値=[" & c & "] Datatype=[" & Datatype(c) & "] Typename=[" & Typename(c) & "]" & Chr$(10) & _
    "変数dの値=[" & d & "] Datatype=[" & Datatype(d) & "] Typename=[" & Typename(d) & "]", _
    0 + 64, "【DataTypeでデータ型を知る】"
   
    'Variant型の変数に文字列を代入したらどうなる?
    d = "aaa"
    Msgbox _
    "変数dの値=[" & d & "] Datatype=[" & Datatype(d) & "] Typename=[" & Typename(d) & "]", _
    0 + 64, "【変数d(Variant型)のデータ型を確認する】"
   
    'Variant型の変数に数値を代入したらどうなる?
    d = 1
    Msgbox _
    "変数dの値=[" & d & "] Datatype=[" & Datatype(d) & "] Typename=[" & Typename(d) & "]", _
    0 + 64, "【変数d(Variant型)のデータ型を確認する】"
End Sub

これを実行した結果が下の図です。
サンプルの実行結果

Integer、Double、String型の変数については、初期値の段階でそれぞれのデータ型を表す結果が返ってきています。
ですが、Variant型の変数についてはEMPTYという結果が返ってきています。
EMPTYはVariant型の変数だけがとりうる値だということはわかっていましたが、データ型の結果としても用いられるんですね。

さらに、Variant型の変数に文字列や数値を代入した後に実行したのが2番目と3番目のダイアログボックスです。
戻り値がSTRING、INTEGERとなっているのが分かりますね。
つまり、Variant型は代入されている値によってデータ型が変わるという事なのです。


プログラム内でVariant型に値を代入したのはいいけど、どんな風に取り扱われるのかわからないとか、データ型によって処理を変更したい(エラーチェックなんかも)という時に、この関数が使えるのではないでしょうか?



こういう使い方を覚えておくと、Variant型もより一層便利に使えるようになるのではないでしょうか。
では、今日はこの辺で・・・



【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
単純なDBのカスタマイズから他アプリケーションとの連携までご要望にお応えします!
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ


2015年1月20日火曜日

Variant型データの初期値って?

こんにちは。毎年1月は簡単な内容のものを記事にしています。
正月ボケ対策ですね。
読んでる皆さんは、検索エンジンから来ることが多いと思うので関係ないかもしれませんが、記事を書く立場からすると、やはり休み明けは簡単な記事の方が楽なのです。
ブログを長く続けるための自分なりの秘訣だと思っています。

では今日も記事に移る前に
にほんブログ村 IT技術ブログへ
をクリックしましょう。


さて、今日は冒頭でも書いたように簡単な話です。
LotusScriptでプログラムを書く際、データ型にVariant型を使うことは珍しくないでしょう。
便利ですからね。
ところで、このVariant型の初期値ってなんでしょうか?
String型なら""、Integer型なら0とかでしょうが、Variant型の場合って???
Null、Nothing、""、0、etc・・・いろいろ考えられますが。
実際にはEMPTYというデータだそうです。

本当にそうなのかどうかを確認するために、こんなプログラムを書いてみました。
Sub Click(Source As Button)
    On Error Goto ErrProc
   
    Dim ret As Variant
   
    'チェック1----- 変数定義直後で何もしていない
    If Isnull(ret) Then
        Msgbox "変数retは、Nullです", 0, "チェック1"
    End If
    If Isempty(ret) Then
        Msgbox "変数retは、EMPTYです", 0, "チェック1"
    End If
    'チェック1-----
   
    'チェック2----- Nullを代入してみる
    ret = Null
    If Isnull(ret) Then
        Msgbox "変数retは、Nullです", 0, "チェック2"
    End If
    If Isempty(ret) Then
        Msgbox "変数retは、EMPTYです", 0, "チェック2"
    End If
    'チェック2-----
   
    'チェック3----- ""を代入してみる
    ret = ""
    If Isnull(ret) Then
        Msgbox "変数retは、Nullです", 0, "チェック3"
    End If
    If Isempty(ret) Then
        Msgbox "変数retは、EMPTYです", 0, "チェック3"
    End If
    If ret = "" Then
        Msgbox "変数retは、スペースです", 0, "チェック3"
    End If
    'チェック3-----
   
    'チェック4----- Nothingをセットしてみる
    Set ret = Nothing
    If Isnull(ret) Then
        Msgbox "変数retは、Nullです", 0, "チェック4"
    End If
    If Isempty(ret) Then
        Msgbox "変数retは、EMPTYです", 0, "チェック4"
    End If
    If ret Is Nothing Then
        Msgbox "変数retは、Nothingです", 0, "チェック4"
    End If
    'チェック4-----
   
    'チェック5----- Emptyをセットしてみる
    ret = Empty
    If Isnull(ret) Then
        Msgbox "変数retは、Nullです", 0, "チェック5"
    End If
    If Isempty(ret) Then
        Msgbox "変数retは、EMPTYです", 0, "チェック5"
    End If
    'チェック5-----
   
    Exit Sub
   
ErrProc:
    Msgbox _
    "エラーNo " & Cstr(Err) & Chr$(10) & _
    "エラー内容 " & Error     & Chr$(10) & _
    "エラー行数 " & Cstr(Erl), _
    0 + 16, _
    "エラー"
    Exit Sub
End Sub

チェック1の実行結果で分かるように、初期値は確かにEmptyでした。
そして、Nullや""、Nothingもセットできることが分かります。
面白いのがチェック5です。
Emptyという値を代入することができるんですね。
しかし、「Option Declare」を記述して、変数の暗黙宣言を許可しない。とすると、Emptyは利用できなくなります(コンパイルエラーになります)。


やっぱりVariant型はちょっと変わった変数であるのでしょう。
よく利用するだけに取扱には注意しましょう。

というお話でした。
では、今日はこの辺で・・・







【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
単純なDBのカスタマイズから他アプリケーションとの連携までご要望にお応えします!
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ


2015年1月19日月曜日

ハッピーマンデーの計算をしてみる

みなさん、こんにちは。
2015年もすでに1月半ばを過ぎてしまいました。来週はIBM ConnectED 2015ですね。

今年はどんな情報が得られるのでしょうか?

さて、今年最初の話題はConnectEDと行きたいところですが・・・違う話です(笑)
では、話題に入る前に
にほんブログ村 IT技術ブログへ
をクリックしてくださいね。


それでは、本題へと。
ハッピーマンデーについて考えてみます。
先日、イケヤマくんもつぶやいていましたが、Notes/Dominoでは休日文書というものがドミノディレクトリにあり、それを更新することでクライアントの休日文書に反映させることができます。
昔は休日は特定の日付が設定されていましたが、最近では「ハッピーマンデー制度」が出来上がったことにより、休日が第n月曜日に設定されるものがあり、特定の日付ではなくなったものがあります。
2015年1月現在で制定されているのは次の4つです。
ハッピーマンデーとして制定されている休日

これらの日付は毎年変わるので、都度実際のカレンダーを見ながら設定しているという人も少なくないのではないでしょうか。
これが自動計算できればとても楽になりますね。ということで、LotusScriptで実現してみましょう。

では第n月曜日というのは何日になるのかを考えてみます。
考えるよりも実際のカレンダーを見てみましょう。こんなものを作成してみました。
第n月曜日が何日なのかが分かるようにしたカレンダー

このカレンダー表から
第2月曜日は 9~14日
第3月曜日は15~21日

を推移していることがわかります。

ただし、カレンダー表を見ても分かるように
第2月曜日の場合
1日が日曜日の場合、 9日
1日が月曜日の場合、 8日
1日が火曜日の場合、14日
1日が水曜日の場合、13日
1日が木曜日の場合、12日
1日が金曜日の場合、11日
1日が土曜日の場合、10日
といった形になり、単純に9~14日ではなく、+1すれば良いという訳にはなっていません。

では、どのように算出すれば良いのかを見ていきましょう。
まず、第n月曜日を算出するのにはどんな情報が必要かを考えます。
1日の曜日が分かれば算出できそうですので、Weekday()関数が使えそうです。
また、各年月の1日を算出する必要があるので、Year関数、Month関数、DateNumber関数も使います。

ここで、@Weekday()関数の戻り値に注目してみます。
日曜日が1、月曜日が2、・・・土曜日が7です。
また、第2月曜日の日付に着目すると、1日が火曜日の時が1番大きい値(14日)になります。
そこでこんな表を作成してみました。
1から7日までのWeekday関数の戻り値

これは、1日が何曜日なのかを基に1日から7日までの各日付のWeekday関数の戻り値を示したものです。
ここで6日の戻り値に着目してみると・・・なんとまぁ、1から順になっています。

ということは、各年月の6日のWeekday関数の戻り値は第x月曜日の日付を算出するのに適しているということが分かります。
実際に表を見てみると、「6日の曜日値」「第二月曜日の日付」を足すと、全部15になっています。

つまり、
15 - Weekday(年月の6日)
という計算式が成り立ちます。

LotusScriptで書いてみると、
Dim yyyy As Integer
Dim mm As Integer
Dim mon As Integer
yyyy = 2015
mm = 1
mon = 15 - Weekday( DateNumber( yyyy, mm, 6 ) )
Msgbox cstr(yyyy) & "年" & cstr(mm) & "月の第2月曜日は" & cstr(mon) & "日です。"

となります。

yyyyとmmは入力させても良いですし、求めたい休日の年月を基に自動計算させても良いでしょう。

これで、毎年カレンダー文書を更新しなくてもよくなります・・・でしょうか。
(実際には春分の日、秋分の日、振替休日等がありますから、毎年更新しないといけないのですが・・・)


たまにはこういう計算式を考えるのも楽しいでしょう。
ちなみに・・・本当は先週初めに書きたかったのですが、自分の中でまとまらなかったので、遅くなりました。
すみませんでした。


では、今日はこの辺で。




【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
単純なDBのカスタマイズから他アプリケーションとの連携までご要望にお応えします!
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ