ページビューの合計

2017年5月31日水曜日

【告知】大阪地区研究会第 2 回

みなさま、こんにちは!
5月も終わりとはいえ、暑い日が続きますね。
ただ来週には関西も梅雨入りするかもとの事ですので、この晴天をうまく使いたいところです。

さて本来ですとユニバーサルテンプレートについて記載する予定でしたが、本業が詰っており、記事が完成しておりません。

が!!

タイトルの通り、「ノーツコンソーシアム 大阪地区研究会第 2 回」が来週に迫りましたので、今回は告知のみ掲載させて頂きます。

以下、ノーツコンソーシアムサイトより抜粋

【会員向】大阪地区研究会第 2 回
日時        : 6/ 9(金) 13:00~
受付時間    : 12:50までに1F受付へ集合ください。
会議室        : 2F
場所        : IBM大阪事業所

今回の内容ですが、

「Notes DBの活用事例」について発表およびディスカッション

となっております。

今年の大阪研究会のテーマは、

「Notesをどう使い続けていくのか」

ですので、まさにピッタリの内容ではないかと考えております。

「自慢のアプリ」や「変態アプリ」などの情報が発表される予定ですので、会員の皆様はぜひご都合を合わせて、参加をお願いします。

またまだ会員になっていない方でも、ご興味ございましたらぜひ見学にいらしてください。

今回も新規で見学にきていただける方もいらっしゃると伺っております。
ぜひ関西ならではのノーツコンソーシアムの雰囲気を味わってみてください。

見学のお申し込みは、コンソーシアムサイト上部の「お申し込み・ご質問」からメールにてご連絡ください。

それでは当日、皆様にお会いできることを楽しみに致しております!!

・・・今回も終了後の反省会が楽しみです~

2017年5月22日月曜日

ExcelのデータをNotes文書にするVBA

皆様、こんにちは!!
先週末のテクてくLotus技術者夜会 ザ・大阪編、いかがでしたでしょうか。
私の発表はともかく、他の皆様の内容は非常に興味深いものばかりでした。

近々資料もアップロードされるかと思いますので、参加できなかった皆様もぜひご一読いただければと考えております。

さて今回は前回記載しましたユニバーサルテンプレート アクション編を次回にまわさせて頂き、テクてくにてI様が触れられていたExcel VBAを利用したNotesの運用にヒントを頂き、早速社内業務に適用してみましたので、そちらについて記載させて頂きます。

I様の事例では、ExcelシートにNotesアプリケーションのデータを呼び込むというものでした。
弊社では基幹システムからデータをExcelに呼び出し、CSV化してNotesにインポートするという業務が複数あり、都度colファイルを切り替えながらという手間がありました。

今回はExcelに呼び出したデータをVBAを利用し、Notesの新規文書として保存する手順を記載させて頂きます。
※データ項目数はかなり多いものですが、今回は割愛して紹介させて頂きますので、ご了承ください。

まず従来呼び出していたExcelファイルです。


A列から、部課コード・担当者コード・取引先コード・取引先支店コードの4項目がセットされています。

早速ですが、VBAのコードです。

-----------------------------------------------------------------------------------------
 Public Sub import_notesdb()

  Dim Session As Object
  Dim db As Object
  Dim doc As Object

  Set Session = CreateObject("Notes.Notessession")
  Set db = Session.GetDatabase("サーバー名", "DB名.nsf")
  Set doc = db.createdocument(db)

  doc.form = "フォーム名(別名)"
  doc.フィールド名1 = Range("A1").Value
  doc.フィールド名2= Range("B1").Value
  doc.フィールド名3 = Range("C1").Value
  doc.フィールド名4 = Range("D1").Value

  Call doc.Save(True, True)

 End Sub

-----------------------------------------------------------------------------------------

赤字の部分は貴社環境に合わせて変更してください。
特に難しいコードはひとつもありませんね。

Excelブックを保存し、「import_notesdb」を実行します。
Notesアプリケーションを開くと、インポートされていることがわかります。


文書を開くと、


指定したフィールドに値がセットされています。

とっても簡単ですね!!
今まで苦労していましたので、かなり便利になりました。
また副産物としてCSVデータをNotesに呼び出した場合、先頭の"0"が消えるという現象がありましたが、このVBAではこちらも回避できるようになりました。

あとは複数行のデータを繰り返すように組み替えれば完成です。

従来Notesのインポート操作を一般ユーザーに教えるのは少し難しいところがあったのですが、Excel VBAですと誤った操作をしてしまうことも回避できるため、こちらも大きな進歩になりました。

I様、重要なヒントありがとうございました!!


次回はユニバーサルテンプレートに戻る予定です。

2017年5月15日月曜日

ユニバーサルテンプレート~ビュー①~

みなさま、こんにちは!!
いよいよ今週ですね、
テクてく Lotus 技術者夜会 ザ・大阪編(テクてく大阪)

関西では年1回のイベントです。
今年はライトニングトークということで、私含めたくさんの方が話題を持ち寄って参加致します。
近隣の方は、ぜひご都合つけて現地へ。
また東京でもパプリックビューがございますので、首都圏の方はそちらにご参加ください!!
皆様とお会いできることを楽しみにしております。

さて今回は先日のフォームに続きまして、ユニバーサルテンプレートのビューについて記載致します。
ビューの場合、デザイン部分を除けば、フォームほどの設定項目がありません。

既存の(無題)ビューをクリックし、[F2]キーで名前と別名を変更します。
私の環境では

名前: 一覧
別名: all

としました。

続いてビューの選択式を設定します。
特にテンプレートですので設定の必要もありませんが、実際に作るアプリケーションで複数のフォームを利用することも考えられますので、参考ということで設定致します。

ビューの選択
 [使用フォームにより検索] - [ライブラリ]


続いてビューのプロパティを開き、[スタイル]タブにてデザイン要素を設定します。
加えて未読行の表示色も設定します。


 未読: 赤

また[詳細]タブでも

未読マーク: 標準

にしておきます。

列の内容については、デザイン要素の設定を行います。

また弊社ではビューの行の色を制御して目立つようにしたアプリケーションが結構ありますので、こちらの機能を追加します。

ビューの1列目を選択し、

タイトル: [ブランク]
色で値を表示にチェック
詳細タブで「列を非表示」にもチェック


続いてフィールドの式に以下を設定します。

red := 255:0:0;
blue := 0:0:255;
yellow := 255:255:0;
pink := 255:193:253;
white := 255:255:255;
black :=  1:1:1;
apricot := 255:155:133;
plain:= 0:0:0;
@If (フィールド名!= "***";0:0:0;black:yellow)


この例ですと、「フィールド名」が「***」である場合、
 背景:黒
 文字:黄色
で表示するというものです。
余談ですが、この配色は弊社では「タイガースカラー」として一番目立たせる際の配色パターンになります。

結果の一例では、下記のように表示することができます。


主な色を一時変数に与えておりますので、自由に組み合わせて使用することが可能になります。

残りはアクションバーのプロパティにてデザイン要素を変更します。


以上で非常に簡単ですが、ビューのテンプレートについては完成とさせて頂きます。

もちろん一般的に使う列を先に組み込んでおくことも可能ですが、今回は設定していません。

次回はアクションについて記載する予定です。



2017年5月8日月曜日

ユニバーサルテンプレート~フォーム①~

みなさま、こんにちは!!
ゴールデンウィークも終ってしまいましたね。
弊社ではこの期間を利用し、本社事務所内の床の貼り替えと什器の入れ替えを行いました。
綺麗な事務所で、心機一転といきたいところですが、個人的にはすべて出勤でしたので、ちょっと疲れが・・・。

さて少しネタに困って参りましたので、ユニバーサルテンプレートの整備について、小出しにさせていただこうかと考えております。
そもそも弊社ではアクションボタンや、フォームのフィールド式を保存した「ライブラリ」というノーツデータベースがあり、設計要素をコピーして利用しておりました。
そんな中、昨年のノーツコンソーシアム 大阪研究会にてH様・・・先日公開しましたアプリケーション管理アプリをご紹介頂きました・・・よりまたしても、重要なヒントを頂いたものです。

H様がアプリケーションを新規作成する場合、必ずひとつのテンプレートから作成されるそうです。
そのテンプレートにはさまざまな設計要素が準備されており、コアな部分をそのまま流用するというものでした。
もちろんテンプレートの設計引継ぎは解除して作成することになります。

もっともテンプレートとして用意するか、設計要素をコピーするかの違いではありますが、先般の林様の「Cool で使いやすい Notes アプリデザイン講座」の要素も含めると、テンプレート化した方が使いやすいのではと感じた次第です。

ということで、ブログを書きつつも、実は実際にテンプレートを作りながらというところが現実の姿になります。
ですから、後々に修正や追加は当たり前のように生じることになるはずですので、ご了承ください。

それでは今回はフォームについてご紹介させて頂きます。

新規でアプリケーションを作成し、新規のフォームを作成します。(各名称は自由)

フォームのウィンドウタイトルに

@If(@IsNewDoc;"新規●● 作成中";タイトルフィールド名)

と入力します。


赤字部分を実際に構築するアプリケーションに合わせて変更することで、ウィンドウのタイトルを制御します。
新規作成時・・・「新規●●作成中」
既存文書時・・・「タイトルフィールド名」

とノーツクライアントのタブとウィンドウのタイトルに表示されます。


続いて一般ユーザーへの非表示の表を作成します。
こちらに設計内容等を記載しておくことで、後々の参考にすることができます。
ノーツコンソーシアムの研究会でも、なかなかアプリケーションのドキュメントが残せないという意見が多くありました。
フォーム上に残しておくことで、改めてドキュメントを作成する必要を回避するものになります。・・・こちらもH様より頂いた情報になります。

フォームの上部に表をひとつ作成し、色は表・文字ともにグレーにしています。
ロールで[DBMgr]に割り当たっている方のみ表示できるように設定しますので、プロパティの段落非表示タブにて、

[式により段落を非表示] にチェックし、式には
!(@UserRoles="[DBMgr]")

と記述します。
もちろんACLでロールに[DBMgr]を追加し、管理者には割り当てておく必要があります。


続いて実際に表示させる表を追加します。
デザイン要素は先に記載の通り、林様セッションの内容を加味したものとしております。


次にフィールドです。
主に使う要素として、
・デフォルト値
・入力の変換
・入力の確認

を設定してあります。


入力の変換の例として、
@Narrow("")


として入力された内容の半角化を行っています。もちろん他の@Wideで全角化も可能ですし、他の式でも使えます。

入力の確認としては、よく使用するブランクチェックとして以下の式を設定します。
@If(フィールド名="";@Failure("[フィールド]の指定は必須です。");@Success)


こちらも赤字部分の書き換えが必要です。

デフォルト値については、それ自体難しいものではありませんが、後日紹介予定のアクションとセットでnotes.iniへの値のやり取りを想定した設計を組み込んでおります。

YOMI=@Environment("ini_name");
@If(YOMI!="";YOMI;"")


この式そのものは、notes.ini 内の ini_name に値がなければブランクを、値があればその値をフィールドにセットするというものです。

続いてアクションバーのデザインを変更しておきます。

最後にフォームとは異なりますが、サブフォームにて登録日・登録者・編集日・編集者の情報をまとめております。


現在は以上となります。
プリビューでは以下のようになります。


実際に使用するには、赤字部分を修正し、内容に合わせた表組みにするなどが必要ですが、アプリケーション開始時にここまで組まれていると楽に進められるのに加え、設定ミスを防ぐことができます。


今後はビューやアクションなどについても同様に進めさせて頂きます。

2017年4月24日月曜日

VDI環境でのNotes構築について

みなさま、こんにちは!!

今回は、以前テクてく大阪でお話したような記憶もあるのですが、弊社内での仮想デスクトップ環境でのIBM Notesのインストールについて、ご紹介させて頂きます。

弊社が採用したのはVMware社 Horizon@6になります。
当初はE社の採用で動いていたのですが、ESXiの躯体をI社で採用が決定しており、I社がE社システムはサポート外との事でしたので、Horizon@6になったという経緯があります。

仮想デスクトップ環境の構築方法もいくつかありますが、弊社ではひとつのパターン(プールと呼ばれる、Cドライブ部分)を固定し、必要台数の仮想クライアントを展開するリンククローンと呼ばれる方式を採用しました。

個人のスペースは「移動プロファイル」という方式を使用し、サーバー内に各自のフォルダがあり、マイドキュメントやデスクトップ等、いわゆるC:\ユーザー\●●●の●●●部分をログオンスクリプトで割り当てています。
またディスクスペースについても、サーバー内に個別フォルダを準備し、Uドライブを割り当てて使用しています。

メリットとしては、プールの元となるテンプレートのメンテナンス(例えばWindows Updateなど)を実施したものを、全端末に適用できる点、及びCドライブ部分は共有されるため、ストレージサイズが少なくて済むという点があります。
デメリットとしては、メンテナンスを適用する度にCドライブがベースとなるプールのイメージになってしまうため、例えばウィンドウズやIEの設定関連でCドライブ内に保管されるものは、毎回リセットされてしまいます。
もちろんユーザーがインストールしたものも、Cドライブ(レジストリ含む)がリセットされるため、使えなくなります。
もっともこの点も端末管理という観点からはプラス要素であり、恥ずかしながら1台ランサムウェアに感染したのですが、即時ネットワークから隔離し、その端末だけを更新することで個人の端末設定は復旧。サーバーのファイル群もバックアップからのリストアでほとんど被害なく解消できました。

VMware様のプールに関しては、こちらが分かり易いかと思います。

さて本題のノーツのインストール手順です。

まずアプリケーションはテンプレート側のCドライブ内にインストールします。
この状態で仮想クライアントをデプロイします。
そこで問題になるのが、notes.iniの場所となります。
デフォルトではCドライブ配下に配置されるため、更新時にプールと同じnotes.iniにすべて戻されてしまいます。
これではIDファイルとの相関も外れ、使い物になりません。

そこでnotes.iniを先のUドライブ内にNotes(弊社の環境ではU:\Program Files\IBM\Notes)フォルダを作成し、その中のDataフォルダ内に初期のnotes.iniを保存します。
これにより、更新時もnotes.iniには一切変更は加えられません。

次にアプリケーションのショートカットのプロパティを変更します。
デスクトップにできたIBM Notesのショートカットを右クリックし、プロパティを開きます。

リンク先
“C:\Program Files\IBM\Notes\notes.exe” “=U:\Program Files\IBM\Notes\notes.ini”

作業フォルダー
“U:\Program Files\IBM\Notes\framework\”

に書き換えます。

これにより、notes.iniはUドライブ配下のものを利用してくれるようになります。

以降は一般的なノーツクライアントの立ち上げで完了します。

なお弊社の失敗事例として、VDI環境下ではノーツの「共有ログイン」機能は使用できません。
IBM様サイトには、
共有ログインを有効にすると ID も変更されるため、共有ログイン機能を有効にしたコンピュータ上でしか使用できません。
このような仕様になっているのは、コンピュータごとの Windowsセキュリティインフラストラクチャに依存した機能であるためです。」

という記述があります。
つまり仮想デスクトップ環境を更新すると、与えられるCドライブはまったく別のものと判断されるため、IDファイルが従来と異なる端末からアクセスされたと判断してしまいます。

以上、たいへん長くなりましたが、弊社仮想デスクトップ環境におけるIBM Notesのインストール手順について説明させて頂きました。

2017年4月17日月曜日

検証・・・文書のロックについて

皆様、こんにちは!
神戸は先ほどから雨が降り始めました。おそらくサクラも散ってしまうことでしょう。
個人的には土曜日に造幣局の通り抜けに行けましたので、結構満足してます!

それはそうと、先週からノーツコンソーシアムのさまざまな研究会がスタートしています。
私が参加しているのは、【ザ・ノーツ研究会】と【大阪研究会】です。
研究会の詳細は省略させて頂きますが、会員外の方でも見学できるかと思いますので、ご興味ある研究会ございましたら、事務局までお問い合わせください。

さて本日は以前から個人的に疑問であった「文書のロック」について、少し検証してみましたので報告させて頂きます。

「文書のロック」は、データベースのプロパティで設定可能な項目で、複数人で使用するようなデータベースで、ひとりが使用していると排他処理されるという機能になります。

 

ノーツクライアントですと、他の方が編集モードで開いていると以下のようなダイアログが表示され、編集モードに移ることができません。


私の疑問であったのは、ブラウザとノーツクライアントでどのような挙動をするのかという点になります。

それでは実際のテストです。
先日「既存アプリの最短Xpages化」でご紹介しました日報アプリに少し手を加え、ビューから文書を開いた際に

ターゲット文書:文書の編集

とし、フォームに「保存」ボタンを配置したものを使用致します。

テストの前に、それぞれロックされていない状態での編集に問題ないことは確認しました。


テスト1:ノーツクライアントで「編集モード」で開いた文書をブラウザの編集モードで開くことができるか。


結論は開くことができました。


テスト2:テスト1でノーツクライアントで編集保存後、ブラウザで編集保存するとどうなるか。


見事、【競合文書】になりました。



テスト3:逆にブラウザで編集保存後、ノーツクライアントで編集保存するとどうなるか。


こちらはブラウザで保存しようとすると、下記のようなエラーが表示されました。


もちろんノーツクライアント側のロックを解除すると、問題なく保存することができました。

テスト4:ブラウザで編集モードで開いた文書をノーツクライアントで開くことができるか。


こちらも開くことはできました。


テスト5:テスト4でノーツクライアントで編集保存後、ブラウザで編集保存するとどうなるか。


テスト2同様、【競合文書】ができました。


テスト6:逆にブラウザで編集保存後、ノーツクライアントで編集保存するとどうなるか。


こちらは先と違い、【競合文書】ができました。


だらだらと書きましたが、まとめると

●いずれも同時に編集モードで開くことは可能である。

●ノーツクライアントが先にロックした場合
  ・ノーツクライアントが先に保存 ⇒ 競合文書ができる
  ・ブラウザが先に保存 ⇒ 予期しないエラーが出る

●ブラウザが先にロックした場合
  ・ノーツクライアントが先に保存 ⇒ 競合文書ができる
  ・ブラウザが先に保存 ⇒ 競合文書ができる

となります。

結論だけ見ると、想像した通りの結果ではないかと感じました。
個人的には編集モードに入る手前で止まってくれると嬉しかったのですが、そう甘くはないようです。
但し、条件がはっきりしましたので、ノーツクライアントとブラウザ両方でアクセスするようなアプリケーションを稼動させる場合のヒントにはなったかと思います。

なお文書ロックに関しては、日本IBM様サイトにて【Lotus Notes/Domino 文書ロックの仕組みFAQ】として詳しく紹介されておりますので、参考になさってください。
どういう理由か検証していませんが、ロックが解除されないという事例がありました。
その際の対処方などもこちらに記載されております。


またXpagesでの設定事例については、IBMチャンピオンである御代様のブログでも、【XPagesで文書のロックをやってみよう!】にて紹介がございますので、こちらもご覧ください。

最後までお付き合い、ありがとうございました。

2017年4月10日月曜日

ツールのご紹介【New Work Friend】

こんにちは!!
神戸のサクラは昨日・一昨日で満開になりました。
個人的に花見には行けてませんが・・・、通勤途中で少しだけ和まして頂いてます。
そろそろ雨が降り始めるのか、強めの風が吹いてます。
さすがに来週末は持たないですね(泣

さて本日は弊社で古くから使用しておりますNew Workfriend というツールについて、ご紹介させて頂きます。

詳細は上記販社様のサイトを見ていただければある程度理解できるかと思いますが、さまざまなデータベースからMicrosoft Excel や IBM Notesとデータの送受信が可能なツールになります。

弊社ではノーツサーバーにインストールし、IBM iSeriesから主にマスタデータを日々同期するような使い方を行っております。
もっともNotesに精通されている方でしたら、わざわざこのようなツールを使用する必要もないのですが、そもそも所有していた古いライセンスがありましたので、有効利用しているというものです。

それでは具体的な画面をご紹介します。

New Workfriendをインストールすると、アクションメニュー内に新たなコマンドが追加されます。


こちらでデータのアップロードやダウンロード、定義設計、スケジュールの設定等が行えます。

今回はスケジュールについては無視して、iSeriesからのデータダウンロードを作成してみますので、「定義設計」を行います。
下記のような画面が表示されますので、「照会」メニューから「新しく照会定義を作成」を選択し、「次」をクリックします。


続いてNotes データベース設定画面が表示されますので、データベースの場所や名前、ファイル名と、登録形式(置換や追加etc)を選択し、「次」をクリックします。


アクセスのクエリのような画面が表示されますので、ダウンロードするテーブルや項目、置換する場合はキーの設定を行います。


「実行」をクリックするとタイミングを聞かれますので、「即時実行」を選択し、「実行」します。


データがダウンロードされると、設定画面に戻りますので、定義を保存しておきます。


アプリケーションを開いた初期画面です。


アプリケーションについてを閉じると、無題のビューで一覧が表示されます。


このままですと、デフォルトフォームが設定されておりませんので、文書を開くことはできず、アラートが表示されます。


あとはこちらのアプリケーションのフォームやビュー等を整備すれば、iSeriesと連携したデータが取得できます。

こちらのマスタ等を他のアプリケーションからLookupして、弊社では活用しております。


なおこのツールでiSeries側に追加・更新することも可能です。
Notes側で追加や修正した内容をiSeriesにアップロードするということです。

これにより、NotesをフロントとしたiSeriesの利用も可能になります。

今回はNotesについてのみ記載しましたが、Excelでも基本的な操作は同じです。

1ライセンスあれば、結構有効に利用できるツールですので、ご興味ありましたら販社様にご相談ください。

もちろん弊社環境をデモすることも可能ですので、タイミングが合えばご相談ください。