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