abOut.nsf

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

タグ:@関数

今は、コロナ騒ぎ真っ最中、オリンピックまで延期が決定し、新学期はいつ始まるの?それどころか非常事態宣言がでるかも…
と、落ち着かない世間なのですが、
ここでは、まだコロナのコの字もなかった昨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]の仕様自身が変わる…キー探索以外のエラーも対象になる、ということだろう、と思います。

8月の「のの会 第17回」では@DbColumn@DbLookupをセットで扱いました。

特に、@DbLookupについては、比較的早い時期から、やってよとの声をこそっといただいていたけれども、
ちょっと相手が巨大なので、長らく保留していました。

いずれにせよ、一度の回で話しきるのは無理だなと、今回はベーシックな機能の理解を主眼にしました。
ベテランの方にはやや単調かもしれませんがご了承ください。@関数Talkとしては第15回。


いっぺんに学べるほうが効率いいよね。

@DbColumnと@DbLookupを横並びにし、ざっくりと2つに共通する引数から概観し、それから@DbLookupだけの引数に触れたという体裁です。

個々の引数の具体的なパターンについては今後の回で触れてゆくつもりなので、現時点では、留意点(初心者にとってのちょっとしたひっかけ)についても触れていません。

とりあえずは、初心者の方に、「ビューから答えをもらってくる」ことのイメージをつかんでいただければ幸いです。

ExcelでのLOOKUPやVLOOKUPといった関数をご存知の方は、それらと全く同じではありませんが、ある程度イメージが得やすいでしょう。


さて、今後の回をどんな風に展開させるかはまだ悩み中で、脇道や手戻りが出やすく恐縮ながら、おそらく次の「のの会」直前に成り行きで決まってゆくのだろうと。
この2つの関数は、使い方によってはNotes/Dominoの運用を複雑にしてゆく厄介さをはらんでいると、私は思っております。
そのあたりをふまえつつもビギナー開発者にも分かりやすく、展開できるかは保証の限りではありませんが、とりあえず次のトークは、「のの会」が9月をお休みするため、10月になると思います。

Notes/Dominoと、かかわる人々にとって、2019年7月は、17年ぶりに変化の7月でした。

17年前の2002年7月、製品の母体がLotusからIBMに変わりました。
日本での実感を申せば、このとき、そんなに変化した感はなかったです。
製品名は「Lotus Notes」「Lotus Domino」のまま。
当時、五反田にあったLotus社のビルへの出入り機会が多かったのですが、Lotus社でなくなっても、ビル看板のかけ替えもなく、外目にはここがIBMであるとはわからない状態のまま、しばらくここでの業務が継続されました。

「Lotus」の呼称は、IBMソフトウェアのいちブランド名として維持されました。

10年以上経ってから、製品名が冠するブランドは「IBM」になりましたが、「Lotus」は、まだ完全に無くなってはいません。「LotusScript」と、日本には「テクてくLotus技術者夜会」が残っており😉。


17年後のこの7月、製品の母体が今度はIBMからHCLに変わりました。
今回はだいぶ外見上の変化を伴います。HCLに転籍された皆さんは、IBMのビルを離れ、仮オフィスに移られました。
製品名も、「HCL Notes」「HCL Domino」に変わったようです。

「IBM」の呼称は、HCLソフトウェアのいちブランド名として維持される…なんてことも、常識的に考えると、なさそうです。



閑話休題。7月の第16回「のの会」における、第14回の「@関数Talk」では、そんな今昔の名前の変化とは直接関係ないものの、@Name関数を扱うことにしました。


前半は、そもそもNotes/Dominoが扱う「名前」の形って…?と、少し脱線。
「名前」「作成者」「読者」の3タイプのフィールドに共通の動作を、ややひねくれた観点から確認しました。

正しい適切な形式で設定されれば、
  • 内部データ上は「CN=」などの「構成要素名」がつく形
  • 表示上は構成要素名が略され隠されている形
というのが、この3種類の"名前型"フィールドの共通特徴といえるでしょう。


「@Name」の話に入ってからは、構成要素の取り出しを含む「アクション」について。
いま、公式なヘルプを使って学ぶ人は、いきなり23種類のアクションを目にするため、この関数が少々入りづらいのではないかと思います。ゆえに入りやすいようスライドでは工夫したつもり、ですが。 
そこまでアクションの種類が豊富でなかった昔のNotesエンジニアのほうが学習はしやすかったかも。

初心者にはやや高度で、自分でも説明し難かったのもあり、スライドでは触れなかったアクションの中には、電子メールの書式をあつかうものがあります。
公式のヘルプには「RFC 821、RFC 822アドレス形式」という言葉で説明していますが、それって何?は、ここでは分かりません。
仕方なくネットで調べても、簡潔な説明はすぐに見つからず、わかるのは、今ではもっと新しい形式が存在することくらい。こういったあたりも、本当は、ここで躓かないよう、ヘルプを工夫して欲しいです。

まずはスライドであげたNotesの名前形式で使用される構成要素と、それにまつわるアクションさえ認識いただければ、この関数の基本的なところは押さえられると思います。

6月の「のの会」でのトーク、スライドの枚数はいつもより多めですが、私のスライドはページ当たりの情報量が薄く、やたら大きなコマわりでページ数を稼いでいた一部の少年マンガのようなもの、さほど中身は濃くありません。
@関数Talkとしては13回目。


DEFAULTキーワード

私は、過去の開発・改修で、使ったことも、見かけたこともなかったので、
会場の皆さんも使ったことないでしょう?、
という予想をして臨んだのですが、IBMチャンピオン以外にも、「あ、そういえば使ったことある」何名かの手が上がりました。

関数の使い方として、ヘルプには3つ挙がっているのだけど、そのうちの1つしか実際の用い方を見つけられていないというのが私の現状です。
また確認できた使い方も、式の組み立てがより簡潔になるという以外の活用法が見つからないかな、と、引き続き探したいと思います。


Let(LotusScript)

脱線してロータススクリプトのステートメントについて。
実は、ロータススクリプトでの変数の代入にはLetというステートメントが隠れているというお話。
多くのベテランの方には既知だったのかもしれません(私は知らなかったけど)。とくに、VBに詳しい方にとっては。(ロータススクリプトはVBに準じた仕様で作られているので)


@Platform

このPCのOSは何?このサーバーのOSは何?というのを、見分けることができる関数なのですが…
いま現在、変な特徴を持った関数といえそうです。
スライドに出しましたように
  • 現状、古いバージョンしか表示できないOSがある(Windows)
その一方で
  • サポートされたばかりのデバイスに対応している(iOS)
iPadで利用できるNotesのクライアントアプリ「IBM Domino Mobile Apps」は、この(2019年)4月にようやくリリースされたアプリです。
「のの会」会場では、吉田さんに実機で見せていただけましたが
きちんと「iOS」が表示されるのを確認できました。


なお、こちらに書きました背景によるのですが、前回からNotesの検証には、10.0.1 英語版を使用しています。今回切り出しているDesignerのショットのように、製品画面は当面、英語版での提示になると思います、ご了承のほど…。

5月の「のの会」では、2つ前の回でやり残した感を持っていた「@Middle」「@MiddleBack」について改めて各引数の組み合わせパターンを確認しました。
@関数Talkとしては12回目。



3回にわたって「@Right」「@Left」「@Middle」および、それぞれに「Back」がつく名称の関数を扱いましたが
当初思っていたほど各関数間の動きに統一性をみつけられておらず、しかしまだ何か最小公約数的な説明のつけようがあるのではないか、というのをまだ気にしています。

発見したことを"@Randomに"、順次報告してゆくスタイルをとっており、あらかじめ6つの関数の動きを押さえたうえでトークを開始していれば、この3回分はもっとわかりやすい構成になったろうと思いまが、とりあえずはおゆるしください。

なるだけ共通の考え方で、もっと短く胸に落ちやすい解釈を見つけ、将来改めて説明できたとしても、@MiddleBackの不可視文字君だけは、例外として扱うしかなさそうですけど♪

↑このページのトップヘ