2018年4月12日木曜日

第2回「のの会」に参加しました

4月11日は「のの会」に参加しました。

「のの会」についてはこちらからご確認いただくとして、今回の内容は、先月ラスベガスで開催された IBM Think で発表された Domino Apps on iPad 等のビデオ鑑賞(岡本さんが撮ってくださったもの)、あべさとるさんの@関数講座、それから私も一コマ頂戴して発表させていただきました。

ノーツのアプリを設計変更なしにiPadで動作する iPad版Notesクライアント「Domino Apps on iPad」がグリグリ動いている動画をいくつか見させていただき、興奮しました。早く触ってみたい!

あべさとるさんの@関数講座はシリーズ化されるかもしれませんが、今回(初回)は @Ifや@Random などについて紹介してくださいました。さすが目の付け所が素人じゃないです...

そして私は...


Notes を長く使っていると、データベース(NSFファイル)の容量制限の壁にぶつかることがあります。
これまでの Notes/Domino の歴史の中で、その制限を回避するための機能追加はいくつもありました。
それらを3つに分類して紹介しています。

Notes の初心者から、なんでもご存知のエキスパートまで、意外と知らない機能や忘れてる機能があるのではないでしょうか。

2018年2月10日土曜日

@Transform と @Nothing をビューで使う場合、念のため @Trim を忘れずに

トラブルシュートしていたときに遭遇したことについて情報共有したいと思います。

1つのフィールド(フィールド名 "MailAddress")に複数のメールアドレスを記入できるのですが、そこにインターネットメールアドレスを含んでいるかどうかを調べようとしていました。

インターネットメールアドレスは "@" 記号を含んでおり、Notes メールアドレスには含まないという前提です。

次の式を用意しました。
@Transform( MailAddress; "x"; @If( @Contains( x; "@" ); x; @Nothing ) )

説明すると、MailAddress アイテムのリスト要素の1つを変数 x に代入し、変数 x が "@" 記号を含めば値を保持し、そうでなければ値を除去する(要素を減らす)、ということをリストの要素の数だけ繰り返します。

例えば、MailAddress アイテムに次の2つアドレスが入っていたとします。
"hoge taro/acme" : "hoge.jiro@acme.com"

この時、式は "@" 記号を含まない "hoge taro/acme" を除去しますので、返ってくる値は通常 1 つのアドレス "hoge.jiro@acme.com" になります。

@Nothing は リスト要素を返さない、つまり要素を1つ減らすのです。


そう、ビューでなければ。


ビューの列に先ほどの式を設定したところ、要素が減るものと、要素の数は減らず値がなくなるものの2パターン現れました。先の MailAddress アイテムの場合、1つのアドレス(要素)を返すものと、空っぽの要素+1つのアドレス(要素)を返すものがあったのです。
要素数が1になった値     "hoge.jiro@acme.com"
要素数が2のままの値     "" : "hoge.jiro@acme.com"

これと同様のことはビューの選択式でも確認しており、@Transform と @Nothing を使った次の式を記述すると期待した結果にならないことがありました。
SELECT @Elements( @Transform( MailAddress; "x"; @If( @Contains( x; "@" ); x; @Nothing ) ) ) > 0


このように @Nothing が要素を減らさない場合があることがわかりました。
また、ビューを Shift + F9 で再構築すると結果が変化する場合もありました。

なお、これらは Notes 9.0.1 に FP9 を適用した環境で確認しました。

もしこのような現象が確認できた場合、次の式のように @Trim を組み合わせて回避しましょう。
SELECT @Elements( @Trim( @Transform( MailAddress; "x"; @If( @Contains( x; "@" ); x; @Nothing ) ) ) ) > 0

2017年12月16日土曜日

全文検索の不具合を解消してみた

昨日(2017年12月15日)の「テクてくLotus 技術者夜会」に参加させていただきました。

昨年に引き続き、今年も12月は「ライトニングトーク」でした。

ライトニングトークには、普段から各種イベントで発表しているIBM Champion や日本IBM社員の方々に加え、いつも参加しているだけのメンバーも参加できるとあって、僭越ながら私も発表させていただきました。

もしご興味ありましたら、下のスライドをご覧ください。



内容ですが...

もう20年近く運用しているDBでフォームを作り直した。その後特定の条件で全文検索すると不具合がでることがわかり、メーカーサポートへ問合せましたが解決せず、いろいろやってなんとか自己解決できた。

といった自慢話成功事例です。

今年は(昨年の反省もあって)発表当日の朝に資料を送付するという完璧な準備のおかげか、主催者の御代さんに評価していただき、記念品「ぷらRoBoHon」までいただいちゃいました。


これに気をよくしたのか、これからもTips的なことを投稿していこうかという気になっています(笑)

2017年5月14日日曜日

Excelで作成したグラフをリッチテキストへ貼りつける

Excel を使いグラフを作成して Notes のリッチテキストへ貼りつけるエージェントを作ってみた。

Excel データは次のような単純なもので、保存されているファイルを使う。
リッチテキストへ貼りつけるグラフは、次のような折れ線。タイトルを追加する

グラフのサイズを指定したいので、既存のシートに埋め込みグラフを追加する。
※新規にグラフシートを追加する場合、サイズの指定がよくわからない(常に最大?)

クリップボードへコピーした埋め込みグラフを新規文書のリッチテキストエリアへ貼りつける。

"Main" フォームには "Body"という名前のリッチテキストフィールドがある。

コードは以下のとおり。
Set xlApp = CreateObject("Excel.Application")
Set xlbook = xlApp.Workbooks.Open( "D:\kakaku.xlsx" ) 'Excelファイルを開く
Set xlsheet = xlbook.Worksheets(1)
xlApp.Visible = False 'Excelを非表示にする

'グラフを追加
Set xlchart = xlsheet.ChartObjects().Add( 10, 20, 500, 300 ) '追加する位置(左, 上, 幅, 高さ)
With xlchart.chart '追加したグラフ
 .SetSourceData xlsheet.UsedRange '範囲はシート内の全て
 .HasTitle = True 'タイトルを追加
 .ChartTitle.Text = "レギュラーガソリン価格"
 .ChartType = 4 'xlLine (折れ線)
 .ChartArea.Copy 'クリップボードへコピー
End With

'新規文書をUIで開き本文へ貼り付け
Set uidoc = ws.Composedocument("", "", "Main",,, True) '新規文書をMainフォームで開く
With uidoc
 .Gotofield "Body" 'Bodyフィールドへ移動
 .Paste 'グラフを貼り付け
 .Save '保存
 .Close True 'フォームを閉じる
End With

'Excelを終了
xlApp.DisplayAlerts = False
xlApp.quit
確認した環境:Notes 9.0.1 + Windows 10 + Excel 2016

2017年3月8日水曜日

Connections "Pink" ってなんだろう

サンフランシスコで開催された Connect 2017 で発表された "Pink" って何だろうと思っていたら、日本時間の今朝(というか昨日の深夜)に開催された Open Mic Webcast で "Pink" がテーマだったようで、早速公開されたプレゼンテーションを見てみました。

資料はこちらからダウンロードできます。

Open Mic Webcast: Think Pink - The Future of IBM Connections - 07 March 2017 [presentation attached]


これを読む前は

"Pink" って Connections の次期バージョンのコードネームなの?

と思っていたのですが、どうやら特定のバージョンを指した名称ではないようで、この先の展望というかロードマップ的なものを指して "Pink" と呼んでいる、という印象を持ちました。

結局のところよくわかりません。

とまあ、"Pink" についてはこれ以上深読みせずに、今後 Connections がどう変わっていくのかを見てみました。

まず非常に興味深かったのは、これまでの WebSphere + DBMS 等で構成していた Connections ですが、"Pink" では node.js や MongoDB といったオープン技術を採用し、なおかつ既存のコードをあらたに書き起こしたコードで完全に置き換えるらしいこと。

めっちゃ大胆ですね。

我々が利用している Connections Cloud もそのうち Pink に染まっていくのでしょうけど、データの移行作業も発生するだろうからシステムが長時間止まらないか、パフォーマンスは悪くならないか、オープン技術ってセキュリティホールの情報もオープンじゃないの?大丈夫??などと心配になってしまいます。

システム構成は大きく変わりそうですが、エンドユーザーの見た目や使い勝手も大きく変わりそうです。

今回の資料で個人的に気になったのは、

  • IBM Verse の「Important to Me」が Connections にも現れ、人の他にコミュニティーが追加できる
  • ファイル「同期」が拡張され、同期の対象にフォルダーが加わる
  • コミュニティー・デザインの拡張
  • そのデザインを新たなコミュニティーにコピーできる

の3点です。改善を要望していたものや、こうなればいいなと感じていた部分が実装されそうなのです。

Conncetions の「Important to Me」って「フォロー」とどう違うのでしょうか...やはりよくわかりません。

ところで、クラウド・サービスを使っていて思うことは、リリースされた新機能を使い始めるタイミングが皆同じため、エンドユーザーからの質問に管理者もサポートメンバーも回答できずに時間がかかったり、エンドユーザー向けのマニュアルをあらかじめ作ることができないことが辛いのです。

その点「ガイドツアー」には期待していて、くまなく新機能についてもガイドしてくれると助かるなあと。

それから "Pink" については今回の資料や Connect2017 に参加された IBM Champion やベンダー企業から発信される情報だけしか私はまだ見ることができていませんが、来週(2017年3月17日)開催のテクてく Lotus 技術者夜会では "Pink" のお話(特に開発者向けの内容)も聞けるようです。

動くデモが早く見たいですね。

2016年12月17日土曜日

テクてく技術者夜会のLTでお話したこと

昨日(2016年12月16日)のテクてくLotus技術者夜会に参加しました。


東京/大阪から沢山の講師の皆さんがライトニングトークされる中、僭越ながらお話させていただきました。

事前に資料を用意できなかったため、発表前にバタバタさせてしまい、申し訳ありませんでした。


お話した内容を整理して、少しわかりやすくするために例を追加したスライドを共有させていただきましたので、そのご連絡まで。

 


さて、このブログの更新も塩漬け状態が続いていますが、来年はもうちょっと更新したいと思っています。

これからもよろしくお願いいたします!

2015年4月17日金曜日

アプリのお引越しに Notes Redirect File (NRF) を使おう!

長い間使ってきたDominoサーバーも、「そろそろハードウェアの更新だなあ」とか「OSのサポート切れだよ...」といった後ろ向きな理由や、BCP対応としてクラウドの「SoftLayer」で稼働するDominoサーバーへ移行するといった前向きな理由で、サーバー間でアプリケーションを引越しすることがあります。


アプリケーション・サーバー間で引っ越しする場合、これまで、ユーザーには、ワークスペースに追加されているアイコンから「面倒な操作」をして、引っ越し先のサーバー上にあるアイコンを追加する、といったようなアナウンスを流して、ユーザー側で対応してもらっていました。


こうすると古いアイコンが削除されずに、ゴミとして残りがちなんですよね。


ところが、これからはユーザーへ「面倒な操作」のアナウンスをしなくても、ワークスペースからアイコンをダブルクリックしてもらうだけで、古いサーバー上のアイコンが削除され、新しいサーバー上のアイコンに置き換わってくれます!

しかも、アイコンの参照先が変わったことを、ユーザーがほとんど気づかないような工夫がされているのです。


それが Notes Redirect File (以下:NRF) です。
※NRF はNotes 8 で追加された機能です


ここからは、NRF を作成する、一つの例を示します。


Domino Administrator から、サーバー上の .nsf ファイルを削除しようとすると、表示される確認画面に
「マーカーを作成して、クライアントがこのデータベースへの参照情報を更新できるようにする」
というチェックボックスがあります。これにチェックを付けます。


この「マーカー」というのが.nrf という拡張子のファイルを指しているようです。

「クライアントを以下のサーバーにリダイレクト」にチェックを付けて、レプリカを置いているサーバーの名前を指定します。これで[OK]ボタンを押すと .nsf ファイルが削除され、かわりに .nrf ファイルが作成されます。

このとき、削除前のファイル名が "TestNRF.nsf" の場合、"TestNRF.nrf" のように、ファイル名が同じで拡張子が .nrf になります。


.nrf ファイルはメモ帳で開くことができます。
開くと次のような感じです。※RepID=やRef=の値は書き換えています

[NotesRedirectFile]
Type=Move
RepID=00000000:00000000
Title=NRFファイルのテスト
Ref=CN=hogehoge/O=org/C=jp!!TestNRF.nsf

では、サーバー上にnrfファイルが作成されたところで、Notesクライアントから開いてみます。


ワークスペースにあるアイコンをダブルクリックすると、いつもより開くのに時間がかかる感じがしますが、このときステータスバーには

「アプリケーション ≪DBTitle≫ (≪nrfファイル名≫) の新しいレプリカを検索中です。以前はサーバー ≪移動元サーバー名≫ 上にありましたが、古いレプリカが移動されたためです。」

と表示されていました。


そのうちアプリケーションが開きます。ワークスペースに戻ってアイコンに書かれたサーバー名を見ると、リダイレクト先サーバー名に置き換わっていました。レプリカが積み重なったりしておらず、古いサーバー名のアイコンは自動で削除されていました。


今回は、あらかじめ他のサーバーにレプリカを作成してあったので「データベースの削除」をしていますが、ヘルプによると、「データベースの移動」でもNRFを作成できるようです。


なお、httpタスクを稼働しているDominoサーバーの場合、ブラウザから削除前の .nsf ファイルを目指してくると 404 エラーになるようです。NRFは Notesクライアント専用のようです。

確認したバージョン: Notes 9.0.1 Standard, Domino 8.5.3