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

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

2016年6月6日月曜日

どのビューから開かれたかを判断する

皆さん、こんにちは。

今日も簡単やっつけシリーズです。
小難しい話を書いても、書いてる途中で私が寝ちゃうので(笑)、そういうのはやりません。

さて、今日もNotes クライアントでのtipsです。
@ViewTitleという関数についてです。



この関数は、現在のビュー名を返します。
つまり、ビュー上で使えば、そのビューのビュー名を表示します。
しかし、文書を開いた状態で使うと、その文書が何処のビューから開かれたかを表示してくれるという特性も持っています。
これを応用して利用すれば、不正な処理が行われたかどうかの判断に使えます(隠しビューから文書が開かれた場合は処理を中断するなど)。

また、Webアプリケーションの「$$ViewTemplate for xx」フォームにも使えます。埋め込みビューのタイトルを表示するのに使えます。


@Prompt([Ok];"開かれたビュー";"この文書は、『"+@ViewTitle+"』ビューから開かれました。")


簡単なので、使ってみてください。
では今日はこの辺で・・・


P.S.手抜きではありません。もともと書き溜めていたのに公開されていなかったので日の目を浴びせてあげたのです(笑)





Notes/Dominoで困ったことがあれば、弊社にお問い合わせください。
IBM Championの私が承ります!
お問い合わせはこちらから→Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

2016年5月31日火曜日

プログラム可能な表を作ってみよう

皆さん、こんにちは。
XPages開発やってますか!?

でも、今日はXPagesの話はしません(笑)。
今年はノーツ初心者に対してのセッションが数多く行われるということで、
当ブログでもNotes DBのtipsの話をします。


Notes DBでよく使うのが「表」でしょう。
アプリケーションのレイアウトを整える上で唯一といっていいものですからね。
私もNote DBでは多用しています。

そんな便利な表ですが、「プログラムで制御ができる」ことはご存知でしょうか(まぁ、Notes歴が長い人はしってますよね・・・)

プログラムといっても、@関数でできるので、とってもお手軽なのもポイントです。


では、どんな制御ができるのかを見ていきましょう。
といってもできることは単純です。
プログラムで表の何行目を表示するのかを自動で切り替えられるようにするというだけです。

詳しくはプログラム可能な表を作成するを見てください。


次に設定方法です。

1.表を作成します。
表を作成

表は2行以上であれば、何行でも構いません(もちろんNotesの制限はありますが)。
この時、「表の種類」を一番右側のものを選択しておきます(ただし、あとで変更はできますので、間違えても気にしない!)


2.表の設定を確認します。
表が作成できたら、正しく設定されているか確認します。
表のプロパティのうち、右から2番目のタブを開きます。
プログラミング可能な表の設定

1.で表の種類を誤って作成してしまった場合は、上の図を見て同じように修正してください。
直すのは2か所。「行の特殊表示」を"1行のみ表示"にして、「行の表示方法」を"行の切り替えをプログラウで行う"にするだけです。簡単ですよね!


3.各行に名前を付けます。
続けて、表のプロパティの一番右側のタブを開きます。
そこに「表のHTMLタグ」と書かれた欄に「名前/ID」とあるので、表全体の名前を入力します。
ここは任意の文字ですが、大文字小文字の区別がされるので、どのような名前を付けたのかを覚えておく必要があります。

表の名前と行の名前を付ける

また、「行のタグ」欄にある「名前」には各行の名前を入力します。
ここも任意の値で良いですが、各行で重複しないようにします。

※表の各行のタブをクリックすると、その行に移動します。すると、「行のタグ」の「名前」欄が空白になるので、そこに名前を入力します。


これで表の準備はできました。
次にプログラミングの方法です。

4.表の名前フィールドに値を設定する。
上の図では表に「pTable」という名前を付けました。
また、表は全部で5行作成してあり、それぞれの行には「tab1」から「tab5」までの名前を付けています。
このような場合、プログラムでは以下のように記述します。
FIELD $pTable := "tab1";
@Command([RefreshHideFormulas]);

表の名前には「$」を付けます。
$付のフィールド名に開きたい行の名前を値として設定します。
最後のコマンドは画面を更新するためのものです。
行の名前は変数にすることにより、開かせたい行を自由に設定することができます。


うまく使えば、役職や部署ごとに開かせたい行を変更することができます。
そして、それぞれの行には見せたい内容を埋め込んでおけばよいのです。



たまにはこんな話題も楽しいでしょ?
では今日はこの辺で・・・




Notes/Dominoで困ったことがあれば、弊社にお問い合わせください。
IBM Championの私が承ります!
お問い合わせはこちらから→Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

2016年5月30日月曜日

Notes クライアントにFixPackを当てる際の注意点

皆さん、こんにちは。
XPages on Bluemix を使ってますか?

今回はXPages関連というよりはDomino Designer関連の話です。

先日、Domino Designer(というよりはNotes クライアント)の9.0.1 FP3にXPages Extension Libraryをインストールしました。
目的は、XPages on Bluemix での作業を行いやすくするためです。

XPages Extension Libraryをインストールすると、Bluemix へのデプロイを簡単に行えるようにと Domino Designer へ Bluemix 用のメニューが追加されます。
ところが、9.0.1 FP3では、このメニューから Bluemix へのアクセスが正常に行きませんでした。

9.0.1 FP3

Bluemixへの接続がエラーになる

調べたところ、どうやら、9.0.1 FP5以降でないとうまくいかないようです。
すでに9.0.1 FP6がダウンロードできる状態だったので(ダウンロードはこちら)、当たり前のようにダウンロードして上書きインストールしました。

よし、これでいいだろう!と意気揚々と Bluemix への接続を試みようとしたところ・・・
あれ?メニューがなくなってる!!!
9.0.1 FP6にアップデート!

Bluemix 関連のメニューが消えてる!

どうやら、XPages Extension Libraryのインストールがなかったことにされてしまったようです。

通常、XPages Extension LibraryのようなプラグインはDomino Designerの[ファイル][アプリケーション][アプリケーション管理]メニューで表示される「アプリケーション管理ウィンドウ」で有効化、無効化の切り替えやアンインストールができるものです。

ということで、早速このメニューを表示してみました。
が・・・
このウィンドウにもXPages Extension Libraryの文字がどこにも見当たりません。
ホントになかったことにされてます(T T)
私が何をしたというのでしょう!!!

こんな場合は、もうあきらめて思い切った復旧をするしかないよ。と教えてもらいましたので、その方法を書いておきます。


まず、Notes クライアント(Domino Designer含めて)を終了します。
次に、Notes クライアントのデータディレクトリ配下にある「workspace」フォルダを削除します。
workspaceフォルダを削除

Notes クライアントを起動します。
これでいったん、Notes クライアントの設定がリセットされるので、あらためてXPages Extension Libraryをインストールします。

すると、Bluemix 関連のメニューが表示されるようになるので、接続テストを行います。
Bluemix への接続テストが成功!

画面上でもConnection Successfulと表示されているのがわかりますね。
よかったよかった。


ただし!
この方法でリセットを行うと、その他にインストールしているプラグインなどもすべてなかったことにされてしまいますので、あくまで自己責任で作業してください。

この時のPCにはたまたま他のプラグインはインストールされていなかったので、こういった思い切った復旧作業ができましたが、通常は前述したように
「アプリケーション管理ウィンドウ」で行います。
アプリケーション管理ウィンドウ

あくまで最後の手段ということで覚えておくとよいでしょう。
では今日はこの辺で・・・



2016年5月16日月曜日

XPagesで複数DBの検索を行ってみる

皆さん、こんにちは。
今日もXPagesを頑張ってますか?

今月の黄金週間の間に嬉しいニュースがありましたね。
XPages on Bluemix がリリースされました
ついにXPages on Bluemixが正式なものとなったというニュースです。

これまでもベータ版という位置づけで利用できていたので、
何がどう変わった?というほどのものではありませんが、
これを機にXPagesをもっと活用してみましょう。


先日もノーツコンソーシアムの「ザ・ノーツ研究会」で、
複数のノーツDBを検索する方法が「ドメイン検索」くらいしかない。XPagesアプリでそんなのを作れないか?
といった話がありました。
この時は、OpenNTFにアプリがあったはずだとか、「作るとしたら、複数DBを全文検索して、結果をマージするくらいだよね」といった話になり、今後の実証実験の正式対象にはなりませんでした。

I社の方々が、ちょっと残念そうな顔をしていたので(笑)、ではちょこっとだけ調べてみましょう。
ということで、今回の話題は
XPagesアプリで複数DBを検索する
です。


つくっても良いのですが、時間がかかりそうというのと、サンプルがあるのであれば、それを使ってみた方が面白そう。
という理由でOpenNTFから探すことにしてみました。

検索用語は

multiple DB search site:openntf.org

としてみました。

するといくつかのプロジェクトが表示されました。

1つ目は、
Multi-Database Search Plugin
です。

こちらは
ノーツクライアント(スタンダード版)にインストールするプラグインで、
ノーツクライアント上にある複数のノーツDBを同時に検索してくれるものです。
設定画面で、どのノーツDBを検索対象にするのかを選択できるので、エンドユーザでも利用しやすくなっています。
検索そのものは画面右上にある検索ボックスで入力すれば良いようになっています。

唯一、残念なのが、検索対象にできるのはノーツクライアント上のノーツDBだけということで、ドミノサーバ上のものは選べないという事です。
実務には使えそうにないですね・・・


2つ目は
Xpages Multi Database Search Custom Control
です。

こちらは、複数のノーツDBを検索することができるXPagesアプリケーションです。
サンプルDBでは、このXPagesアプリケーションが配置してあるドミノサーバ上ののーつDBを同時に検索して、結果を表示してくれるようになっています。

検索部分はカスタムコントロール化されていて、カスタマイズもしやすくなっています。
※マニュアルにカスタマイズ方法が書かれています。

なお、こちらのXPagesアプリケーションは、8.5.2以上で動作するとのことです。
ただし、8.5.2の場合、XPages Extension Libraryをインストールする必要があります。
8.5.3 Upgrade pack1や9.0.0以上の場合は、そのまま動作させることができます。

画面はこちら。
初期画面

右上の編集ボックスにキーワードを入力して、虫眼鏡のアイコンをクリックすると検索中の画面になります。
ノーツDB検索中

検索が終了すると、結果が一覧画面として表示されます。
検索結果

一番左の列をクリックすると、ノーツDBのトップページがWebブラウザ上で開き、左から2番目の列をクリックすると、検索結果に該当した文書がWebブラウザ上で表示されます。


このXPagesアプリケーションは、XPinCにも対応していて、ノーツクライアントのスタンダード版でも利用できるのです。

デフォルトの仕様としては
ドミノサーバ上にあるノーツDBのうち、全文索引がついている16個のノーツDBを検索対象にしており、そのうち最大50文書を検索結果として表示させることができます。


ここで、実は問題がありました。
このアプリケーション、ダウンロードしただけでは正常に動作しませんでした。
ちょっとした修正が必要になります(少なくとも私の環境では動作しませんでしたし、ヘルプを見る限りでは、エラーになるはずです)。

「searchFunctions」という名前のサーバーJavaScriptがあるので、それを開きます。
18-20行目付近に
var db_CurrentDB:NotesDatabase = db_Directory.getFirstDatabase(NotesDbDirectory.DATABASE);
while(db_CurrentDB != null){
 if (db_CurrentDB.isFTIndexed() == true){

という個所があります。

ここにあるdb_CurrentDBisFTIndexedという命令ですが、ノーツDBがオープンしていないと動作しません。
しかし、db_Directory.getFirstDatabase(NotesDbDirectory.DATABASE)はノーツDBをオープンしてくれません。
したがって、常にエラーになってしまうのです。

そこで、
この辺りを
try {
    db_CurrentDB.open();
        ・・・
} catch(e) {
}

と変えます。
open命令を追加しています。
この時、アクセス権がないと、エラーになってしまうので、try ~ catchで例外処理として回避しておく必要があります。

これで、このアプリケーションが動作します。


実際のノーツDBの検索はJavaで記述されているので、ちょっと解析が大変ですが、現状のままできちんと動いてくれますので、問題ないでしょう。
検索対象にするノーツDBの数や検索結果数などはマニュアルを見てカスタマイズしてみてください。


ということで、本日は複数のノーツDBを検索するプラグインとXPagesアプリケーションを紹介してみました。

このようにOpenNTFにはとても便利なツールがたくさんあります。
ダウンロードして使ってみましょう。
アプリケーション開発者の方は、コントロールの便利な使い方を発見できるかもしれませんよ!?


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










Notes/Dominoで困ったことがあれば、弊社にお問い合わせください。
IBM Championの私が承ります!
お問い合わせはこちらから→Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

2016年4月18日月曜日

2016年4月のテクてくで紹介された海外ソリューション

みなさん、こんにちは。
先週末(2016年4月15日)に行われたテクてくロータス技術者夜会にはご参加いただけたでしょうか。

そうです。私がプレッシャーに負けてドタキャンした人です。
本当にすみませんでした。
先週はずっと寝込んでおり、今日になって、ようやく復調してきたところです。
普段から体調には気を付けていたつもりですが、どこかで油断していたようです。


さて、そんな私のことは放っておいて・・・
テクてくでは、3つの海外ソリューションが紹介されました。
LDC Via
We4IT Aveedo
Darwino

それぞれ、英語でのプレゼンでしたが、日本IBMの佐藤さま、ISEの村上さまのおかげで、
皆さんしっかりと製品について理解をしていただけたのではないでしょうか。

そんな中、
LDC Viaからはテクてく用のクーポンを発行していただきました。
3か月間、フル機能が利用できるという、なんとも太っ腹なものです。

クーポンの使い方がちょっと難しいようなので、以下にその手順を書いてみますので、ぜひ試してみてください。

LDC Viaの3か月間フリートライアル体験方法

1.http://ldcvia.com/にアクセスする
2.[Try it now]のボタンをクリックする
Try it nowをクリック

3.「Register Super-user」の画面で必要事項を入力して、[Create My Account]ボタンをクリックする
氏名、メールアドレス、パスワードを入力

4.アカウントが作成されるので、画面内の[SETTINGS]というメニューをクリックする
SETTINGSメニューをクリック
5.「Organisation details」の画面になるので、「Address (line 1):」「City」「Country」「Postal code」「Contact phone」を入力して、[Update]ボタンをクリックする
 ※クーポンを利用するには、会社情報を入力しておく必要があります
6.続いて、同じ画面内にある「Coupon Code」に"tektek"と入力して、[Update]ボタンをクリックする
 ※Planは「Pro(Unlimited Docs/100GB)」にしておく方がよいでしょう。
クーポンを入力して、アカウントをアップグレード!

これで、3か月の間、LDC Viaの機能をフルに利用できるようになります。
ぜひ、試してみてください。
そして、業務で利用できそうだなと思ったら、購入してあげましょうね(^^


Darwinoデモ版

また、Darwinoという製品は、デモ版がGithub上に公開されているとのことですので、
こちらもチェックしてみましょう!
URLはこちら!->Darwino



テクてくロータス技術者夜会は、参加者のみなさんで作り上げていくものです。
テクてくで聴いた内容を実践して、社内外にフィードバックしてください。
また、聴くだけでなく、自分でも発表してみませんか?
テクてくロータス技術者夜会で話してみたい!という方は、tektek Slackでご連絡ください。
その他、こんな話も聞いてみたいという話題でもよいです。
tektek Slackを活用して、テクてくを盛り上げましょう!


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

2016年3月8日火曜日

環境変数を色々試してみた(3)XPagesの場合

こんにちは。
今日は3月8日。雨が止んだのは良いですが、霞がかっていてもやもやしています。晴れるならカラッと晴れてほしいものです。


さて、昨日は1日に2本の記事を書くという暴挙を犯しましたが、それでは物足りない!という方がいたようです。


ということで、ESS Dev Japanの中の人に無茶ぶりを受けてしまったので、書きます(笑)。


XPagesの場合、Webブラウザで動かすのとNotesクライアントStandard版で動かす(いわゆるXPinC)という2種類あります。
それぞれ環境変数はどのようにアクセスできるのかを検証してみましょう。
XPagesそのものは同じものを使いますということでこんな画面を作ってみました。
環境変数のテスト用XPages

1.環境変数の設定方法

まずは、設定方法から見ていきましょう。
動きを分かり易くするために、 [設定]ボタンを設けて、それをクリックすると環境変数が設定されるというものにします。

1-1.設定方法

XPagesの場合、@Environmentや@SetEnvironment関数はありません。代わりにSSJSが利用できますので、NotesSessionクラスのsetEnvironmentVarが利用できます。
構文は次の通りです。
setEnvironmentVar( vname:string, value:any, issystem:boolean );

vnameが環境変数名、valueが設定する値、issystemがユーザー環境変数かシステム環境変数化を指定します。
引数自体はLotusScriptと同じなので分かり易いですね。
例)
var env1 = getComponent( "env1" ).getValue();
var val1 = getComponent( "val1" ).getValue();
session.setEnvironmentVar( env1, val1, true );

上記は画面上のenv1というコントロールとval1というコントロールに書かれた内容を元にして、環境変数を設定するというものです。


1-2.Webブラウザで動かした場合

上で作成した画面を使ってWebブラウザで実行してみました。
環境変数名/設定値に入力した後、[値の設定1][値の設定2]のボタンをクリックするのですが、環境変数に設定する以外のことは何もしていないので、画面に変化はありません。

結果の確認は、Notesクライアントのnotes.iniとDominoサーバのnotes.iniの内容を調べてみます。
Notesクライアントのnotes.iniには予想通り何も設定されていませんでした。
Webブラウザから利用しているので当然でしょう。
次にDominoサーバのnotes.iniを見てみます。
なんとまぁ、ちゃんと設定されているではないですか。関数が用意されているので当たり前と言えば当たり前ですが。
これでXPagesの場合、Dominoサーバに環境変数を設定できるという事が分かりました。

1-3.XPinCで動かした場合

では、次にこのXPagesの画面をXPinCで動かしてみましょう。
Webブラウザと同じ環境変数名にしたのではどのように動いたのかわからないので、別の名前にします。
やはり、ボタンをクリックしただけでは何も変わりません。

先ほどと同じようにnotes.iniを見てみましょう。
今度は、Dominoサーバのnotes.iniから先に見てみます。
おや?追加されていません。
今度は、Notesクライアントのnotes.iniを見てみましょう。
なんと!設定されていました。
NotesクライアントのStandard版でXPagesを動かしたときは、クライアントを判別して、notes.iniに書き込んでくれるようです。

これはプログラムがどこで動いているのかをNotes/Dominoがきちんと把握しているという事ですね。
素晴らしい!


2.環境変数の取得方法

2-1.取得方法

取得方法も@関数ではなく、SSJSで行います。
関数とその構文は以下の通り。
getEnvironmentString( vname:string, issystem:boolean ) : string
getEnvironmentValue( vname:string, issystem:boolean ) : any

vnameは環境変数名、issystemはシステム環境変数か、ユーザー環境変数かを指定します。
2つの違いは値が文字列で返ってくるかany(LotusScriptでいうVariant型)で返ってくるかです。
例)
var env1 = getComponent( "env1" ).getValue();
var ret = session.getEnvironmentString( env1, true );
getComponent( "cfEnvVal1" ).setValue( ret );

上記はenv1というコントロールに入力した環境変数名の値を文字列として取得して、cfEnvVal1というコントロールの値としてセットするというものです。

2-2.Webブラウザで動かした場合

さきほど設定した環境変数を取得するために、[値の取得1][値の取得2]をクリックしてみました。
下図がその結果です。
環境変数の取得

ちゃんとDominoサーバのnotes.iniに設定してある値が取得できていることが分かります。


2-3.XPinCで動かした場合

続いて、XPinCで動かした場合を見てみましょう。
同じように[値の取得1][値の取得2]をクリックします。
結果はこちら。
環境変数の取得(XPinCの場合)

こちらもNotesクライアントのnotes.iniの設定値を正しく取得できています。


これでXPagesでも環境変数のアクセスが容易にできることが分かりました。



2.まとめ

さて、いかがでしたか?
従来のNotes DBとXPagesでは環境変数の取り扱い方が若干異なるという事が分かっていただけたかと思います。

従来のNotes DBをXPages化する際、環境変数を使っているのであれば、そこも考慮しないといけないですね。

特に、Webブラウザで利用している場合、 Dominoサーバに書き込まれてしまうので、環境変数が上書きされてしまい、思った値が取得できないなんてことになったりします。
かといって、ユーザーごとに識別させようとした場合(たとえば、環境変数名にユーザー名を付与するなど)、notes.iniの行数が爆発的に増えてしまい、パフォーマンスに影響が出かねないなどという事も考えられます(実際にパフォーマンスに影響が出るかどうかは不明です)。

XPinCで利用する場合は、従来のNotes DBと同じでユーザのNotesクライアントのnotes.iniに書き込まれるのでそういった心配はなさそうですが。


実際の業務に反映させる場合は、色々とテストしてからにしましょう。


では今日はこの辺で。





Notes/Dominoで困ったことがあれば、弊社にお問い合わせください。
IBM Championの私が承ります!
お問い合わせはこちらから→Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

2016年3月7日月曜日

環境変数を色々試してみた(2)値の取得

こんにちは。
雨が降っていたのに、防水用の靴を履いてこなかったおかげで、くつがびしょびしょです。お気に入りだったのに・・・
防水用のやつを買いに行かないと。


さて、前回の記事(環境変数を色々試してみた(1)値の設定)では、環境変数に値を設定する方法について説明しました。

今回は、環境変数の値を取得する方法について説明します。

1.取得方法(1) @関数の場合

notes.iniに設定した環境変数を取得する方法について記述します。
設定方法は@関数では、3種類ありましたが、取得方法は1つしかありません。
それには、@Environment関数を利用します。構文は下記の通り。
@Environment( variable )
variableは環境変数名を指定します。
""で囲えば直接指定できますし、囲わない場合はプログラム内の変数の値を指定できます。
ここで注意点が一つあります。
指定する環境変数名に「$」はつけないという事です。
@関数では、ユーザー環境変数しか扱えないため、自動で「$」がついているものに対してアクセスするため、不要なのです。
例)
@Environment("AA");
tmp := "BB";
@Environment(tmp);

1行目の場合、notes.iniの
$AA=xx
のxxを取得します。
2-3行目の場合、notes.iniの
$BB=xx
のxxを取得します。
これは設定方法の種類にかかわらず変わりません(@関数で設定しても、LotusScriptで設定しても同じ)。



2.取得方法(2) LotusScriptの場合

続いて、LotusScriptでの環境変数の取得方法について説明します。
設定方法は1つのメソッドしかありませんでしたが、取得方法は2つのメソッドが用意されています。

2-1.文字列で取得する

まずは、NotesSessionクラスのGetEnvironmentStringメソッドです。
構文は以下の通り。
value$ = notesSession.GetEnvironmentString( name$ [, system ] )
name$は環境変数名を指定します。
systemはシステム環境変数を取得するのか、ユーザー環境変数を取得するのかをTrue/Falseで指定します。
Trueがシステム環境変数、Falseがユーザー環境変数です。
戻り値はvalue$に文字列として返されます。
例)
Sub Click(Source As Button)
 Dim session As New NotesSession
 Dim ret     As     String
 
 ret = session.GetEnvironmentString( "EE", False )
 Msgbox ret, 0, "ユーザー環境変数の取得"
End Sub

上記の場合、notes.iniに設定してある$EEというユーザー環境変数の値を取得して、その値をプロンプト表示します。


2-2.Variant型で取得する

もう一つはNotesSessionクラスのGetEnvironmentValueメソッドです。構文は以下の通り。
valueV = notesSession.GetEnvironmentValue( name$ [, system ] )
name$は環境変数名を指定します。
systemはシステム環境変数を取得するのか、ユーザー環境変数を取得するのかをTrue/Falseで指定します。
と、ほとんどGetEnvironmentStringメソッドと同じです。
唯一違うのが戻り値で、Variant型で返ってきます。
例)
Sub Click(Source As Button)
    Dim session As New NotesSession
    Dim ret     As     String
    
    ret = session.GetEnvironmentValue( "FF", True )
    Msgbox ret, 0, "システム環境変数の取得"
End Sub

上記の場合、notes.iniに設定してあるFFというシステム環境変数の値を取得して、その値をプロンプト表示します。

正直なところ、このメソッドの存在価値が私には分かりません。
環境変数には、文字、数値、日付が設定できるとのことですが、notes.iniはテキストファイルなので、文字列という形で格納されている事は変わりません。
わざわざVariantで取得するって・・・
まぁ、数値が格納してある場合は、型変換をしなくて済むというのがいいところでしょうか?(それでも、本当に数値になっているかどうかの確認は必要でしょうから文字列でいいんじゃ?)



3.注意点

さて、設定方法と取得方法についてみてきましたがいかがでしょうか?

3-1.注意点その1

環境変数には「ユーザー環境変数」と「システム環境変数」の2種類があることが分かってもらえたかと思います。
特に、@関数ではユーザー環境変数にしかアクセスできないという事も分かりました。

3-2.注意点その2

もう一つ、大事なことがあります。
システム環境変数の場合、環境変数名の大文字小文字が区別されるという事です。
例えば、
KANKYOUHENSUU

KankyouHensuu
とは違うものとして認識されます。
ユーザー環境変数の場合は、大文字小文字の区別はされません。
$USERVALUE

$UserValue
も同じ環境変数として認識されます。
プログラムでハードコーディングしている場合などは特に気を付ける必要があります。

3-3.注意点その3

さらに、環境変数にはもう一つの考え方があります。
notes.iniに対してアクセスしている事から想像できるように、環境変数はサーバとクライアントでそれぞれ持つことができます。
これは、環境変数に対してアクセスするプログラムがどこで動いているかによります。
Notes DB内で動作する場合は、通常Notesクライアントの環境変数にアクセスしています。
Dominoサーバの環境変数にアクセスするには、スケジュールエージェントなどのサーバ上で動作するプログラムを利用します。



他にも私が気が付いていないような注意事項があるかもしれません。
ご存知の方がいれば、コメントなど残してくれると嬉しいです。


それでは今日はこの辺で・・・



Notes/Dominoで困ったことがあれば、弊社にお問い合わせください。
IBM Championの私が承ります!
お問い合わせはこちらから→Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ