abOut.nsf

新旧かまわず、またお役立ち度にあまりこだわらずに、 拡張子がnsfであるNoSQLなデータベースファイルと、それを扱うコラボレーション製品に絡んでのあれこれを。

タグ:Notes

2022年6月に行われた「のの会(notes knows community) 第40回」での私のスライドです。@関数Talk としては第36回。


@Repeatの余談?

リストを対象にした @Unique の、逆をいくような関数はない? と始めたのに
@Repeat 自体は文字列を繰り返すだけの関数でリスト項目を増やす関数ではありません。
スライド P.7 で、それを実現するなら @For あたりを使った式になるのでは、と書きました。

その式を作ってみました。こんな感じかな。

@For( i := 1; i <= 10; i := i+1; tmp := @If( i=1; "abc"; tmp:"abc"));
tmp

正直なところ、 "abc" を10回繰り返したリスト という言葉のイメージに比してやや長い式だなあ、
と思います。。 

なお、@For についてのTalkは今夏(2023年)に行っており、後日の公開になると思います。


@Returnの余談

式の途中で使うのが本来の役割ということをお話ししました。
が、もちろん、式の最後で使っては「動かない」というわけではありません。
複数行ある式の最後が @Return で終わっている実例は何度も見たことがあり、
使う意味はあまりないけど、もちろん式そのものは @Return があってもなくても、
ちゃんと動作します。

2022年5月に行われた「のの会(notes knows community) 第39回」での私のスライドです。@関数Talk としては第35回。

@Uniqueの余談

使ったことがある方も、多くの場合「引数付き」しかご存じないのでは。
そんな考えから、知られていない「引数なし」の方をメインで攻めてみました。
その特徴みたいなものはそこそこ押さえられように思うのですが
さて、どんな使い方が利くのかというところは、はっきりしないままです。
実利用は想定されていない、非公開関数に近いような位置づけの機能なのかもしれません。


スライドの終盤、「引数付き」の使い方でこう書きました。
202205Screen1
でも「のの会」で発表した時、参加者から
「自分はこの方法を使っているけどとくに問題ないよ」
といった声が上がったように記憶しています。

ここは、きちんとパフォーマンス計測して申し上げたというわけではないので
この見解自体、少々勇み足だったかな。
また、対象の列が、カテゴリを含むソートされた列である場合と、
ソートされていない列の場合とでも、違ってくるかもしれませんね。。

2022年4月に行われた「のの会(notes knows community) 第38回」での私のスライドです。@関数Talk としては第34回。



@UpdateFormulaContext の余談

スライドにも書いたように「知らなかった関数」だし、とりあえず理解したところを説明紹介しました。

ヘルプには「クライアントウィンドウへの式のコンテキストを更新します」とあります。

"コンテキストを更新" って…?
英語の Context を訳すと「背景」「脈絡」「状況」…うーん、どれを上に当てはめても意味が取りづらい、
別の表現で「フォーカスを移す」という表現を使ったほうが…、IT系など一部の人にそれなりに通じるんじゃないかなあ。

でも、「式が動く場所を引っ越す」と伝えるのが結局一番わかりやすそうに思います。


@Word の余談

「文字列を〇で区切った●番目を取り出す」

たとえば、InfoA に 「/」で区切られた文字列が入っているとして、その5番目だけを取り出したければ
    @Word(InfoA; "/"; 5);
といった短い1行で済みます。区切って取り出す行為の対象が1か所だけなら、この関数が楽かな。


区切って取り出すのが複数個所なら、いったんは区切った値をすべて返す @Explode 関数の方がよいかも。
仮に、2番目と5番目と7番目が欲しいなら
    tmp := @Explode(InfoA; "/"); 
と、いったんは区切った結果を変数で受けておき、続いて、こんな風に値を返す。
    tmp[2] + "、" + tmp[5] + "、"  tmp[8] ; 

InfoAが "東京都/渋谷区/代々木1-x-x/〇〇ビル/△株式会社/営業部 営業1課/03-xxxx-xxxx" の場合、

@Wordの式の戻り値は: "△株式会社" 
@Explodeを使った2行の式の戻り値は: "渋谷区、△株式会社、03-xxxx-xxxx"


詳細なパフォーマンスの違いは判りませんが、見た目にはこのような関数の使い分けがすっきりするかなと。

ただ、もっと付け加えると
    @Word(InfoA; "/"; 5); の代わりに

    @Explode(InfoA; "/")[5];やることも、できるといえばできます。
そうなると、@Word、別に知らなくてもいいじゃん、[]に数を入れれば @Explode で 事足りるよね、
と言われそうです。

ただ、5 の代わりに -3 など、数字をマイナスで指定して、右から何番目かを取り出すことが
@Word では可能だけど、 [] を使った方法では、これはできないようです。

HCL Domino Volt がリリースされたのは4月。翌5月に sandbox が公開されました。
誰でも、無償で、 Volt でのアプリケーション開発をお試しすることができます。
今のところ期限も示されていないので、当面の間、試し続けることができそうです。

でも、
「無償なのはいいけど、でも、お試しサイトは、"英語" 版でしょ」

と、日本では、コトバの壁が要因になって敬遠してる人がいるんじゃないかな、と思っています。

そんな人のフォローになればいいな、というのが本作文の目的です。実はさほどの壁ではありません。


まずは登録について。

sandbox のサイト にアクセスすると「Register for an Account」というリンクがあります。
Voltsandbox1

クリックすれば登録画面。こちらに入力してゆきます。
Voltsandbox2

「* First Name」「* Last Name」 ← 名前と姓をアルファベットで。
「* Requested Password」「* Password Confirmation」 ← パスワードを決めて、2か所入力
「* Email Address」 ← ご自分のメールアドレス
「* Company Name」 ← 勤め先の英語名、企業にお勤めなら多くの場合自社のWebサイトの企業情報に載っているかと。
「* Country」 ← 国…これを読まれている大半の方は「Japan」を選択
「* Phone Number」 ← 電話番号…きちんと入れるなら日本の場合は「+81」に続けて先頭の「0」を除いた番号。固定でも携帯でも。なお、IBM時代からこうした登録は何回か行っていますけど、英語の電話が来た経験はありません。
「* Existing Deployment」 ← ここから4択。まずはDominoの利用者かどうかを選択
「* Do you have plans to deploy a Low-Code solution?」 ← "ローコードソリューションを展開する予定はありますか?"…つまりVoltの(とは限りませんが)導入予定ですね。もしすでに1年以内のご予定があれば上の3つから。未定なら最後の選択肢
「* What is your role in this evaluation?」  ← あなたの役割は?と聞いていますがつまり立場ですね。「いちユーザー」「意思決定者」「開発者」「管理者」「その他」から選択という感じでしょうか。

最後に「あなたは米国政府の関係者じゃないですよね」といった一文がありますが、ほとんどの方が該当しないでしょうから「I Agree」にチェックします。


「SUBMIT」のボタンを押せば登録完了です。と云いたいところですが、設定したメールアドレス宛に登録コードが送られてきます。
届いたメール上の「Click Here」から、アクセスしたページで届いたコードを入力するのをお忘れなく。


利用するには。
再び sandbox のサイト にアクセスし、今度は「Access the Sandbox」のリンクから
Voltsandbox3

ログインを求められるので、登録時に入力した 「名 姓」と「パスワード」を入れます。
Voltsandboxlog-in

いざ、入ってみると。あれ?
VoltsandboxWelcome
「ようこそ」ですと?
なんと、sandboxそのものは日本語表示だったりします。

この作文で本当にお伝えしたかったのはこの点です。

軽く検証してみたところ、必ず日本語になるわけではありません。
ブラウザの設定言語にあわせてsandbox上のインタフェース言語が自動的に決まるみたいです。
すなわち、ブラウザの言語が「日本語」である方には日本語で表示されるかと

英語と付き合わなくてはならないのは、登録時とログイン時だけだったようです。

後は日本語ベースのメニューで、存分に開発をたのしんでいただければ。
以上、「お試しサイトは日本語OKですよ、やらない理由はないかも?」というお話でした。

今は、コロナ騒ぎ真っ最中、オリンピックまで延期が決定し、新学期はいつ始まるの?それどころか非常事態宣言がでるかも…
と、落ち着かない世間なのですが、
ここでは、まだコロナのコの字もなかった昨10月の「のの会」を振り返ります。

前回に続き、@DbColumn@DbLookup を並べてお話しする第2弾でした。
「@関数Talk」としては第16回。


このシリーズは結局2月までかけて4回お話しし、通しで見ると構成がややいびつです。。この回のお話の半分はもっと後にまわしたほうがわかりやすかったと思います。
でもまあ…そもそもが "@Randomに" お話ししているものなのでお許しください。


また、@IsErrorとエラーに関するお話しを合間に挟みましたが、P.7で参考として挙げたURLが、案の定というべきか、IBMさんサイトから記事が消え、3月時点の今は現存しません。移管先のHCLさんのサイト内にも今のところは、見当たらないようです。HCLさん側で情報が充実するのを待つしかなさそうです。

<2020Apr05追記>復活していました、こちらです。
(参考)@DBLookup および @DBColumn で出力されるエラーのリスト - HCL KB0025977



@DbLookupのキーワード引数[FailSilent]について少し余談を。

[FailSilent]は@DbLookupで起きうるエラーをすべて吸収してくれるように思っていませんか?
そうではないんですよ、ということを今回説明していますが、P.24に触れたように、私自身もかつてはそのように思っていました。

実は…
思っただけではありません。思い込みに基づいた提案を行っちゃっています。

この回の2カ月前、Notes/Dominoの機能拡張に関するアイディアを投稿できるサイト「#dominoforever | Product Ideas Portal」で、私はこんなアイディアを出しております。

「(@DbLookupだけではなく)@DbColumnでも[FailSilent]を使えるようにして」 

勘違いに気づいたのは、つまりこのシリーズの準備検証中。

[FailSilent]は、@DbLookup特有のキー探索時のエラーだけをスキップするものだったのか。
ということは、キーで探索しない@DbColumnにつけても意味がないではないか。

そんなわけで、このアイディアは結果的に私の無知をさらしているのですが、今のところは誰からもそうした突込みは入らず、それどころか、なぜかいま現在「Likely to implement」(実装するかも)というステータスになっています。
もっとも、「実装するかも」ステータスに分類されているアイディアは700余りもあり、あまり「期待」はできません。
もし本当に実装されてしまう場合は、[FailSilent]の仕様自身が変わる…キー探索以外のエラーも対象になる、ということだろう、と思います。

↑このページのトップヘ