ページビューの合計

2019年6月26日水曜日

#年度 や #期 の取り扱いについて

Treat the fiscal year with Notes.

みなさま、こんにちは!!
いまだ梅雨入りしてない神戸ですが、ようやくそれらしい雰囲気になって参りました。

さて日本企業では売上集計などを年度で取り扱う場合も多いかと思われます。
弊社も例にもれずではありますが、従来はNotesではあまり年度というものを意識することなく利用しておりました。

今回、従来Excelで行っていた、取引先向けの実績収集ファイルをNotes化しようという案件が発生したのですが、その必須項目として以下のように「年度」や「期」、「月」が要求されております。


今まではExcelで行っていたので、蓄積された前行をコピーするなどであまり意識する必要がなかったのですが、Notesでの入力はフォームで行うため、その入力作業を簡素化できればと思ったのが今回の発端です。

目的としては、「納品書発行日付」をカレンダーから選択するだけで、「年度」「期」「月」が計算結果で得られればというものです。

ということで、簡単なフォームを作成してみました。


納品書発行日付[InvoiceDate]は編集可能な日付/時刻としています。
日付/時刻制御にチェックし、年月日のみの表示としてあります。


またフォームのオプションで、「フィールドの自動更新」にもチェックしておきます。


まずは簡単な「月」からです。
こちらは計算結果のテキストとしてあります。
単純に「納品書発行日付」から「月」部分を抜き出すだけです。
※今回はうしろに「月」を付加してあります。


式は以下のようにしました。


 @If(InvoiceDate="";"";@Text(@Month(InvoiceDate))+"月")


If文は、新規作成時にはInvoiceDateがブランクのため、計算結果が得られず、エラーになることを回避させています。
文字列「月」をつなげるため、@Monthで得られた数字を@Textで文字列化しているという、単純なものになります。

次に「期」です。
今回は4~9月の場合に「上」、10~3月の場合に「下」を表示させたいと思います。

こちらも計算結果のテキストとしてあります。


こちらの式は、以下のようにしました。


 @If(Month="";"";(@If(Month="4月":"5月":"6月":"7月":"8月":"9月";"上";"下")))


先のMonthフィールドが「4月」~「9月」であった場合、「上」。それ以外は「下」を表示するというこちらも簡単なIf文になります。
複数条件をまとめるため、各月を「:」(コロン)で接続してあります。

もう少しIf文をネストする必要がありますが、これだと海外のようなQ1~Q4も実現できますね。

それでは最後に年度です。
年と年度の違いは、もちろん12月で終わるか、3月で終わるかです。
問題なのは1~3月が[本来の年]-1される必要があるというものです。
なんて考えていると複雑になってしまうのですが、要は今の日付から3ヶ月引いた時の年(Year)を取得すればいいということになります。

先と同様、こちらも後ろに「年度」の文字を接続させるため、計算結果のテキストとしています。


式は以下としました。


 @If(InvoiceDate="";"";@text(@Year(@Adjust(InvoiceDate;0;-3;0;0;0;0)))+"年度")


こちらも簡単ですね。
InvoiceDateをAdjust関数を用いて、マイナス3ヶ月としたものから年部分を取り出します。
そちらをテキスト化して、「年度」をくっつけているだけになります。

それでは実際のフォームの動きを見てみましょう。

まずは新規作成画面です。


「納品書発行日付」がブランクですので、If文で処理した通り、「年度」「月」「期」のすべてがブランクになっています。
If文がなければ、この新規作成の画面を開くことができません。

それでは本日の日付を選択してみます。


以下は選んですぐの状態です。


フィールドのフォーカスを移動させると、


予定通り、「2019年」「6月」「上」という計算結果が得られました。

それでは今年の10月1日にしてみた場合、どうなるでしょう。


こちらも正しく期は「下」となってくれました。

それでは来年3月31日では・・・


2019年の下期と表示されました。
しつこいようですが、最後に来年の4月1日です。


ちゃんと「2020年度」「上期」になりました。

以上、いまさら取り上げることではないかとも思いましたが、企業として年度ベースでものごとを見ている場合も多いため、記事にしてみました。

2019年5月30日木曜日

#カレンダー から #ics ファイルを添付した新規メールを作成する

This time I tried to create an action button with the following content.
1 Export ics file from Notes schedule
2 Display the new mail creation screen with the ics file attached

みなさま、こんにちは!!
IBM Notes/Domino Day 2019 Springツアー、各地盛り上がったようですね。
某会場では、なぜか申し込み人数より多くの参加者があったとか(笑

国内の注目、活況が証明されたようですね。

さて今回は、以前よりicsファイルのやり取りによるスケジュール追加が便利だと感じておりました。そもそもNotesのカレンダーからicsファイルが生成できるのかすら知りませんでしたのですが、「書き出し」機能のデフォルトに存在していました。


ただしこのicsファイル。基本的に自分のカレンダーには存在しているものであり、メール添付して送付することが主な利用用途になるかと思います。
ということで、自分のスケジュールからicsファイルを作成し、新規メール作成画面を表示させ、あらかじめ添付ファイルとして登録されていれば簡単に送信できるのでは!!?ということで、社内実装してみましたので、その手順をご紹介致します。

やり方は単純で、

①Notesがもっているエクスポート機能を使用して、指定したディレクトリにicsを保存。

②新規メールを作成し、①で保存したicsファイルを添付

となります。

ということで、まずは①のicsファイルのエクスポートです。
今回はメールテンプレートに共有アクションとして追加しました。


式として、以下を記述します(保存先はそれぞれの環境に合わせてください。もちろんファイル名は自由ですが、拡張子は[.ics]にします)
※半角"¥"は本ブログでは "\" になってしまいますので、便宜上全角"¥"を使用してあります。


 @Command([FileExport]; "Calendar File"; "(保存先ディレクトリ)¥¥ical.ics")



エクスポートのテストを行うため、作成した共有アクションを【($Calendar)|Calendar】ビューに追加します。


それではご自身のメールを再設計して、テストしてみます。
※再設計
  手順:メールアプリケーションを右クリックして、[再設計]をクリック
     テンプレートの場所(サーバー)を選択し、[OK]
  注意:メールアプリケーションがテンプレートから設計を引き継ぐにチェック


再設計が完了しましたら、カレンダーを開きます。以下のように[ics export]のボタンが表示されていることを確認します。



早速ですが、登録されたスケジュールのひとつを選択し、[ics export]をクリックします。

以下のように[iCal エクスポート]ダイアログが表示されますので、[選択文書]のまま[OK]します。(すべてをエクスポートする場合は、[すべての文書]を選択してください。)


指定したディレクトリに、ical.icsファイルができていればOKです。



続いての②新規メールを作成し、①で保存したicsファイルを添付の設計です。

新規のエージェント(LotusScript)を作成します。
名前/別名は自由ですが、私は両方に[ics_mail]としました。


こちらに記述する内容は以下となります。
件名や文面は自由に設定ください。


Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Dim rtitem As NotesRichTextItem
Dim maildb As New NotesDatabase("","")
Dim afile As NotesEmbeddedObject 
Call maildb.OpenMail
Set uidoc=ws.CurrentDocument

Set doc = maildb.CreateDocument
Call doc.ReplaceItemValue("Form","Memo")
Call doc.ReplaceItemValue("Subject","icsファイル送信")

Set rtitem = New NotesRichTextItem(doc,"Body")
Call rtitem.AppendText("スケジュールのicsファイルを添付致します。")
Call rtitem.AddNewline(2)
Set afile = rtitem.EmbedObject( EMBED_ATTACHMENT, "", "(保存先ディレクトリ)¥¥ical.ics")
Call doc.Save( False, False)
Call ws.EditDocument(True,doc)
End Sub


次に、①で作成した共有アクションに、②のエージェントを実行する行を追加します。


 @Command([FileExport]; "Calendar File"; "(保存先ディレクトリ)¥¥ical.ics");
@Command([ToolsRunMacro];"ics_mail")

以上で保存し、再度メールアプリケーションを再設計します。

以下、動きをご覧ください。
※gifファイルを表示していますので、連続再生されています。


宛先を指定し、送信した結果は以下となります。


添付されたicsファイルの中身は、以下のようになっており、問題なくカレンダーに取り込むことが可能です。


以上、今回は少しLotusScriptを使いましたが、思うような動作を得ることができました。
これで社外の方ともスケジュールの共有が少し楽にできそうです。


2019年5月22日水曜日

ほんとに困った #traveler のはなし・・・

This time, I am talking about the setting of the Traveler who really got in trouble with us.

みなさま、こんにちは!!
早速ですが、今回は弊社で発生しました、ほんとうに困ったTravelerの設定に関しての話題になります。

弊社ではiPhoneにプロファイルを取り込んで、Travelerを利用できるよう設定しています。
具体的にはiPhoneのブラウザ・・・基本的にはSafari・・・からTravelerサーバーにアクセスし、認証を介することでiPhone内にプロファイルが取り込まれ、iPhoneのデフォルトメールアプリでDominoサーバーのメールと同期できるようになります。

さてそれでは困った背景です。
ご存知の通り、iOSはさまざまな設定がOSのアップデートに含まれております。
以前にも一部のSSLを一方的に遮断され、大騒ぎしたことがありました。


今回は証明書に関する設定変更になります。
iOS10以降、自己証明書を使ってhttps通信が接続できなくなったことに起因していました。

そのため、SafariでTravelerサーバーのURLを表示させると、以下のような画面が表示されます。



この画面については従来から表示されていたため、何の違和感もなく「詳細を表示」をタップします。すると・・・


こちらの画面が開きます。この画面が以前と違っていました。
以前はこの文面に「詳しくは、証明書を見ることができます。それに伴う危険性を理解している場合には、このWebサイトを閲覧できます。」のようなリンクがあり、こちらをタップすることでTravelerサーバーにアクセスすることができました。
ところが!!
現在はそのリンクがなくなっており、アクセスする手段が絶たれてしまったのです。

さらにこの中の「詳細を表示」をタップしますと、以下証明書が表示されました。


期限は2024年までのため、少なくとも期限切れでないことはわかりますが、さらに「詳細」を見ても、


証明書の内容が表示されるだけで、何のアクションも行うことができませんでした。

その後いろいろと調査しました。
キャリアへはこのままだとAndroidに切り替えるかもというプレッシャーを与えたり、MDMのメーカーともバージョンアップ等の作業。もちろんApple社にも相談し、iPhone構成ユーティリティ・・・現在はApple Configuratorという製品に切り替わっているそうです・・・を試してみたり。

そうこうしているところ、弊社の窓口会社より以下連絡が入りました。

 「Windows 環境で OpenSSL KYRTool を利用して自己署名証明書を作成する」

ただし、この前提として

ただiOS9以降、暗号化通信を行う場合、TLS1.2のサポートとSHA256の証明書は必要となる様です。
DominoTravelerモジュール共、TLSに対応したバージョンが必要です。
 ※TLS1.2のサポートのために必要なDominoバージョン:Domino 9.0.1 FP3 IF2 以降

 ※iOS9対応TravelerTraveler 9.0.1.7 以降

ということでした。

現在、Verse移行も含めたハイブリット化+V10マイグレーションを予定しているため、TLSだけの作業を先行するか、ハイブリット化を早めるかを検討することになりました。

また進展しましたら、改めて報告させて頂きます。

2019年5月20日月曜日

2019年 第一回 #大阪研究会 & #テクてく 大阪

Last week Osaka was a hot week.
Notes / Domino Day, Notes Consortium Osaka Study Group, Tek Tek Osaka.
I can not write everything, but I will report briefly.

みなさま、こんにちは!!
先週の大阪は暑い一週間となりました。

まずは5月14日(火)

グランフロント大阪内 コングレコンベンションセンターにて IBM Notes/Domino Day 2019 Spring が開催されました。

まだ今週開催の地区がありますので、ネタばれしてしまうのもどうかと思いますので、ここで内容は書きませんが、単なる情報公開に留まらず、技術的な手法などもあり、たいへん参考になりました。

とにかく驚いたのがその参加率。
会場は満席どころか、椅子を追加する騒ぎに・・・
後から聞いたのですが、申し込みされた方の参加率がとんでもないことだったそうです。

きっと今後のNotes/Dominoの今後に対する期待の現われであったものと思われます。


さて続いて5月17日(金)

こちらはIBM様大阪事業所にてノーツコンソーシアム 第一回大阪研究会が開催されました。
昨年までは4月に開催していたのですが、今年はテクてく大阪との連携ということで、今月開催となりました。

今年の大阪研究会は新たに3社の加入を頂き、熱い研究会になりました。

内容としては、
●自己紹介+自社のノーツ活用と困りごと(あらかじめ準備するよう指示)
●IBM様からの情報(Notes/Domino Dayで言えなかったことも・・・)
●今後の研究会内容

研究会の資料は基本的に研究会内にのみ共有されるものではありますが、私の資料については差しさわりのない範囲で公開致しておりますので、他愛のない内容ではありますが、よかったらご覧ください。



続いて18時からはテクてくLotus技術者夜会
今回は年1回の大阪主催、いわゆるテクてく大阪でした。

毎年ながらライトトークニング大会ということで、計7名が登壇し、さまざまな情報を発信させて頂く機会となりました。
こちらも可能な資料は事務局側で配信されるものと思いますが、取り急ぎ私の資料を公開致します。



次回、大阪研究会は7月19日の予定です。
アジェンダ等は後日、コンソーシアムより公開頂きますが、今年の大阪研究会は見学者も募集する予定ですので、会員でない方やコンソーシアムで何やってるの?と疑問をお持ちの方にもぜひ見学して頂ければと考えておりますので、ご検討ください。


2019年4月26日金曜日

当サイトをhttps化しました

おはようございます。

以前より気になっていたのですか、先ほど当サイトをhttps化致しました。
とは言っても、このブログサービスの場合、コンソールで2箇所プルダウンを変更して10分ほど待つだけだったので・・・。

なぜもっと早くやらなかったんだろうって程でした(汗

httpでアクセスされてもリダイレクトしておりますので、直接的に影響はないかと思いますが、念のため報告させて頂きます。

2019年3月25日月曜日

ノーツでサーバーの #サービス監視

This time, I applied the logon management app that was created the other day, and tried to finish it as a service monitoring app for the server.

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

curl にはまった筆者です。

今回は先日の「ログオン管理」を応用して、サーバーのサービス死活監視を開始致しましたので、その方法を紹介致します。

実は弊社で使用しているとあるサーバーなのですが、かなり負荷が大きいようで、時折サービスが落ちてしまうというものがあるのです。
仮想サーバーですので、リソースが潤沢にあればそちらを割り当ててやればいいのですが、導入から4年半を経過したオンプレのサーバーですので、そうもいかず・・・
ということで、根本解決には至らないのですが、サービスの死活監視を行うというものを作ってみたというのが背景になります。

取り急ぎ監視するサーバーのCドライブにcurlをインストールします。
手順はお手数ですが、先の「ログオン管理」をご確認ください。

次に監視するバッチファイルです。
対象サーバーに以下の記述を行ったバッチファイルを作成します。

その前に対象となるサービスの名前を確認しなければなりません。
対象サーバーのコマンドプロンプトで以下を実行し、名前を確認します。


 sc getkeyname **名前**


例えば"DHCP Client"ならば、


 sc getkeyname "DHCP Client"


と実行します。
すると以下のような画面が表示され、名前が"Dhcp"であることがわかります。


その名前を利用し、以下内容のバッチファイルを作成します。
申し訳ありません、コマンド内容についてはここでは触れませんので、ご了承ください。


 @ECHO OFF
 set dt=""
FOR /F "USEBACKQ" %%i IN (`sc query ^| findstr /i "名前"`) DO @SET DT=%%i
 IF %DT%=="" GOTO error
 GOTO end
 :error
 cd c:\curl\bin
 curl -i -H "Content-type: application/json" -X POST -d  "{\"creator\":\"名前\",\"stamp\":\"サーバー名\",\"time\":\"%date% %time%\"}" -u "ノーツユーザー名":ノーツパスワード
http://サーバー名/ノーツファイル名.nsf/api/data/documents?form=log
 :end


curl部分は、前回作成したバッチファイルをそのまま転用しています。
ノーツアプリケーションもコピーして少し修正して済まそうという魂胆です。
タスクスケジューラーに「名前」のタスクが実行してなければ、error処理が発生し、curl以降が実行されるというものです。

ちなみにノーツアプリケーションのフィールドには、以下内容がセットされることになります。

 creator : サービスの名前
 stamp : サーバーの名前
 time : 日時

あとはタスクスケジューラーに毎日実行するタスクとしてこのバッチファイルを登録しておきます。

続いてノーツアプリケーションです。
先の通り、「ログオン管理」をコピーして使用します。
とは言っても、先のバッチファイル側で制御していますので、コピーするだけで既にerror処理が発生すれば、文書が追加されてきますので、テストしてみてください。

あとはビューやフォームを少しさわるだけで完成しました!!

まずはビューから


すいません、サーバー名とサービス名をぼかしたので、わかりにくいですね(汗

続いてフォームです。


結構、いい感じに仕上がっているかと思います。

それでは文書が新規作成された際に、メールを飛ばすエージェントを追加します。
新規エージェント作成にて、シンプルアクションを使用します。


シンプルアクションでは、「メールメッセージの送信」を選択し、宛先・件名・文面を記述します。
また「メッセージに文書リンクを含む」にチェックしておきます。



最後にトリガーですが、シンプルアクションではイベントでの検知ができない(?)・・・詳しい方、フォローお願いします。
また今回は1日1回9時にバッチファイルを実行するイベントとして設定したため、「一日一回以上」のスケジュールとして、登録しました。


エージェントの実行間隔を23時間とし、有効時間帯を9:30~9:50としましたので、おそらくは、

 9:00 タスク実行・・・サービスが起動していない場合、ノーツデータベースに文書が追加される
 9:30 エージェント実行・・・文書が追加されていた場合、文書リンクのついたメールが送信される⇒次回起動予定は翌8:30ですが、有効時間帯の9:30を待ってエージェントが実行される

というイメージになります。

今回届いたメールは以下のような感じになります。



以上で組み込みは完了となります。

テストは9時前に意図的にタスクを落としてノーツに文書が追加され、メールが発信されるかどうかを2日続けて実施する必要があります。

なお実際の運用では、サービスダウンを検知した際に、該当のサービスを起動する記述をバッチファイルに組み込めば、検知後にサーバーにログインしてサービスを起動するという必要もなくなります。
ただ自動で再起動してしまうと、落ちていたことを知る機会がログを見なければなりませんので、このようなノーツアプリケーションへの連携は効果があると考えます。

また今回は1日1回としましたが、さらに細かく監視したいという場合もあるかと思います。
その場合はタスクスケジューラーに必要間隔で登録し、エージェントの間隔も考慮すれば、ある程度は細かく対応できるようになります。

以上、あまりにも簡単なのですが、まだまだ使い方は増えそうですよね。
また何か思いついたら紹介させて頂きます。


2019年3月11日月曜日

#LIVENESS #AccessView データ活用

I would like to develop the data acquired by LIVENESS AccessView introduced in the previous article in BI and evaluate the degree of utilization.

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

先週末にLIVENESS AccessView の製品概略とインストール手順を記載致しましたが、せっかくですので今回は得られたデータをBIに展開してみようと思います。

早速ですが、2月27日よりログ取得開始した弊社の「取得済ログの参照」画面です。


設定では2Mごとにファイルを作成するようにしておりましたが、現在は3つ目のログファイルが作成され、書き込まれ続けている状態のようです。

監視しているアプリケーションは途中で増やしながら、現在6個です。


なお出来上がったログファイルを直接エクスプローラーで確認したものが下記になります。


今回はノーツアプリケーションを使わず、BIサーバーへログファイルをコピーして使ってみます。

弊社で使用しているBIツールはQlikSenseになりますが、こちらを紹介する記事ではございませんので、詳細は割愛させて頂きます。

まずは一覧です。
以下のように設定したフィールド、アプリケーションタイトルのほか、ユーザー名やレベル(Create、Open、Update、Delete)、UNIDも取得されていました。


アプリケーションごとに[Field_1][Field_2]・・・に設定したものが異なりますので、ちょっとこのままではわかりにくい状態かと思います。

【掲示板(業務)】だけに絞ってみました。


見やすくなりましたね。
これならいろいろと使えそうです。

続いていくつかチャートにしてみました。


左の棒グラフはアプリケーション別のアクセス推移です。
さすがに日報がダントツに多いことがわかりますね。

右上の円グラフはユーザー別アクセス数(トップ10のみの表示)
右下がユーザー別アプリケーション別の分布図になります。

続いて日報に限定した担当者/レベルのピボットテーブルです。


この画面では全員が[Open]を行っていますが、半数ほどが[Create]していない・・・つまり日報を書いていないということが判明します。
もっとも全社員が対象になっているため、内勤者が半数いるとするとそれなりに活用されていると判断できるかと思います。

たとえばフィールドにカテゴリなどを設定すると、さらにおもしろいチャートが得られそうです。

実際に使用してみて感じたことです。

  • アプリケーションを指定できる点は大きなメリットと感じました
  • フィールドが指定できる点もメリットではありますが、できればログファイルがアプリケーションごとに分割されているとエクセルでも簡単に分析できていいかもしれません。
  • サーバーの負荷も気になりますが、この程度の量でしたらまったく影響ありませんでした。但しアプリケーション数を増やすことにより、どうなるのかは検証してみる必要があるかと思います。
  • 弊社では全ユーザーが削除権限を与えられていないため、今回検証はできませんでしたが、こちらも有効な機能かと思います。
  • アクセス数だけでなく、作成数、編集数でユーザーのレベル監視もできそうです。(閲覧のみのユーザーにも、作成等作業を促す)
  • 日報についても他人の日報を見ないユーザーが特定できたため、活用方法などを教えるヒントになりました。
  • 10個のフィールドの選択をしっかり選定することで、質のいいログが得られます。

以上、使い始めて1週間程度ではありますが、当初考えた以上の効果が得られたと感じています。
単なるログですと、なかなか活用までには至らないのですが、本製品はログファイルの活用を前提とした設定を行うことができ、今まで見えなかった考察を得ることができるツールです。

先にも書きましたが、ご興味ございましたら、株式会社ライブネス様へお問い合わせください。
本製品以外にも魅力的な製品がありますので、きっとノーツの価値を上げて頂けるはずです。