大抵のNotes/Dominoのユーザーと管理者はNotesのカレンダー&スケジューリング(C&S)機能に慣れ親しんでいるとは思いますが、busytimeシステムと呼ばれる独立した専門のDominoシステムがあることは殆ど知られていません。このbusytimeシステムはユーザーや部屋やリソース(備品)それぞれについて利用可能性を正確に捉えることが目的で、C&Sが効率的に機能できるようにします。
この記事ではLotus Notes/Domino 6におけるbusytimeシステムの概要を紹介します。まず最初にNotes/Dominoのbusytimeシステムに関して基本的な説明を短く行います。そして、Lotus Domino 6における機能拡張について触れていきます。busytimeシステムをあまり知らない方でしたら、以前develperWorksで取り上げられたC&Sに関するLotusの記事を読んでおくと良いかもしれません。(最近の記事では“Lotus Notes カレンダーとスケジュールの詳細な説明 Part 1”と“Lotus Notes カレンダーとスケジュールの詳細な説明 Part 2”があります。)
Busytimeシステムは3つの機能的に分かれたコンポーネントから構成されています。ひとつはNotesクライアントとDominoサーバー。ひとつがスケジュール・マネージャー(SchedMgr)。そして、もうひとつがカレンダー・コネクター(CalConn)です。図1はbusytime要求がどのように処理されているかを示した概略図です。Notesクライアントからbusytime要求がひとつ、ホームサーバーへ送信されると、ホームサーバーは責任を持ってその要求を処理します。つまり、情報はローカルで見つけられ即座に戻ってくるか、あるいは、その要求を処理できるサーバーへ渡されるかのいずれかになります。busytimeデータがローカルで見つからない場合には、CalConnを使ってホームサーバーと適切なサーバーとの間で通信がなされます。
図 1. Busytime要求の処理

SchedMgrはbusytimeシステムのバックグラウンドのパートにあたります。SchedMgrはローカルのカレンダーのモニターとbusytimeデータベースをアップデートして、各人のカレンダーの内容と同期をとる作業を行います。SchedMgrはbusytimeの参照とは関係なく独立して動作しています。それはSchedMgrの役割がbusytimeデータのメンテナンスにあり、busytimeデータをサービスすることにはないからです。図2は各C&Sコンポーネント間の関係を示しています。
図 2. C&Sコンポーネント

Busytime要求はbusytimeデータを取得するユーザーのリスト、クライアントが要求する間隔、それにいくつかのパラメーターから構成されています。Dominoサーバーは、この要求を処理しますが、「誰がbusytimeを見られるか」といったアクセス・コントロールの設定を考慮して行います。指定された間隔の外にあるカレンダーエントリーについては、その情報は返されません。実際のカレンダーエントリーは別として、ユーザーのプロフィールで設定された勤務時間やタイムゾーンといった他の情報もまた要求を行ったクライアントに対して返されます。クライアントは返されてきた全てのデータを使って、各ユーザーの空き時間について正確にユーザーに見せる責務を負っています。クラスター化されたサーバーの環境では、希望するサーバーが利用できない場合には、要求は自動的に各クラスター化されたサーバーに送られます。つまり、ユーザーのホームサーバーがダウンしていても、busytimeの参照は、他のクラスターサーバーからデータを取得することで処理が続けられます。
Lotus Notes/Domino 6でのbusytimeシステムの変更
元々のbusytimeの設計は殆どのケースで便利なものですが、ひとつだけ設計上の制限があります。要求したユーザーに対する提供できる詳細な情報のレベルが「マリーは明日の9:30 AM - 11:00 AMは予定済みです」程度になっていました。つまり、その時間をブロックしている実際のカレンダーエントリーの詳細な内容がなにもなかったのでした。Lotus Notes/Domino 6ではbusytimeシステムが拡張され、これまで返されていたデータに加えて詳細なデータも返せるようになりました。つまり、他のユーザーの空き時間、そうでない時間の情報に加えて個々のエントリーに関して詳細なデータを見ることができるようになりました。
この機能を有効にするには、Domino管理者はまず最初にサーバー設定文書のオプションを設定する必要があります。デフォルトではプライバシー保護の観点からこの機能は無効になっています。この機能を有効にして設定を行うには、Domino管理者はサーバー設定文書の基本タブにある「カレンダーの詳細を抽出」のオプションを選択する必要があります。カレンダーエントリーから収集できるデータはDomino管理者が選択できます。デフォルトでは議長とカテゴリーと場所と会議室です。
図 3. サーバー設定文書

サーバー設定文書でオプションの設定が保存されると、SchedMgrが各ユーザーのメール・ファイルのカレンダーエントリーから指定した項目についてデータの収集を始めます。Notes 6のメール・テンプレートは、データを収集する機能を無能にすること、それから誰が収集したデータを見ることができるかを制御することの双方についてできるように更新されています。この機能があることでNotes 6のユーザーは自分が所属する部の限定したユーザーのみがbusytimeを見ることができ、さらに自分のグループの人だけがカレンダーエントリーの詳細なデータを見ることができるようにする、といったことができるようになります。
C&Sのユーザーの中にはカレンダーエントリーの件名に全てのデータを入力する癖を持った人がいるかと思います。例えば週次のチームミーティングなどではそのようなデータは親切なものでしょう。しかし、あまり詳細を入れすぎると潜在的にセンシティブな情報や、誰にも見せたくない機密データを入れてしまう可能性があります。このような理由から、Lotus NotesではSchedMgrが各カレンダーエントリーの件名の内容を取り出すか否かをユーザーが選択できるようにしています。受信ボックス/カレンダーエントリーの画面で、「アクション」-「ツール」-「プリファレンス」でユーザーは誰でもその選択が行えます。プリファレンスのダイアログボックスで「アクセス/代理」のタブを選択し、「スケジュールへのアクセス」のサブタブを選択します。
図 4. 「スケジュールへのアクセス」設定

SchedMgrが有効になると、SchedMgrは各カレンダーエントリーについてデータを収集し、それをbusytimeに格納します。しかしながら、ユーザーがカレンダーのプリファレンスでこの機能を無効にしていると、その作業は行われません。また、メール・テンプレートがNotes 6かそれ以降でない場合もまた行われません。後者が処理されない理由は、この機能をユーザーが無効にできないこと、また誰がデータを見ることができるかの設定ができないためです。テンプレートが更新されれば、プリファレンスの設定に従ってデータが収集されるようになります。
Busytimeシステムは各ユーザーのカレンダーエントリーの詳細情報を提供できるように拡張されましたが、ところでその情報はどのようにして見ることができるのでしょうか?拡張されたBusytimeシステムに対応して、Lotus Notes/Domino 6ではNotesクライアントのGUIを拡張して、busytimeデータをよりよく表示できるようにしています。
Lotus Notes 6で新規に会議招集を作成すると、招集したユーザーの名前とbusytimeデータを表示した大きなスケジューラーコントロールを見ることができます。
図 5. スケジューラーコントロール

この新しいコントロールにより、招集した各ユーザーの空き時間について全体像が見えやすくなりました。ユーザーの塞がっているエントリーのどれかで右クリックをすると、そのクリックした時間に入っているカレンダーエントリーの数を見ることができます。また、各エントリーについて詳細を見ることもできます。図6は一番上のユーザーについて11 AM - 12 PMのスロットで右クリックした時にどのように見えるかを示したものです。
図 6. Busytime情報のメニュー

あなたが見ようとしているユーザーがLotus Notes 6を使っており、情報収集の機能を無効にしていないならば、選択したエントリーの詳細について記したダイアログボックスが見えるはずです。
図 7. Busytimeの詳細

各エントリーの利用可能な情報に依存しているため、全てのエントリーが同じアイテムを表示しているわけではありません。一部埋められているエントリーの場合は、その見え方は図8のようになります。
図 8. Busytimeの詳細 (一部の情報が埋められている)

サーバーメッセージを見ることも多くあることでしょう。
図 9. Busytime情報が利用できない旨のメッセージ

これは以下のような複数の要因によるものです。
- ユーザーがNotes 6以降のメールテンプレートを使っていない場合。
- ユーザーがNotes 6以降を使っているが、詳細情報の収集機能を無効にしている場合、あるいは詳細情報へアクセスできないように設定している場合。(それでも、時間が塞がっているかどうかは見ることができます。)
ユーザーに対する要求がNotes 6以前のサーバーに渡された場合を見てみましょう。この場合、拡張されたbusytime要求をサーバーが理解できないので、詳細情報を取得するように要求することはできません。
最後に何度も聞かれる内容として、カレンダーエントリーにプライベートのマークが付けられていた場合について触れておきましょう。ScheMgrはこのエントリーについては詳細情報を収集しません。そのため、あるエントリーは詳細情報が返ってきても、あるエントリーでは詳細情報がなく、その代わりに以下のメッセージが表示されることがあります。
図 10. Busytime情報のプライベートである旨のメッセージ

APIプログラムからもDominoのBusytimeにアクセスすることができます。そのため、どのようなデータ型でもいくつでもプログラムからは要求することができます。これらのアイテムはデフォルトのサーバー設定文書で収集が設定されており、またユーザーが詳細情報収集の機能を無効にしていなければ、データが返されます。APIを使ったプログラムでbusytime APIにアクセスするものについては、詳細データを取り扱いますが拡張されていることから、現在トラブルになることはまずありません。
Notes 6のグループカレンダー機能からはこの機能のすべてを活用できます。そのため、マネージャーがグループカレンダーで自分の部下のエントリーを入れ、素早く簡単に彼らが何をしているかについて多くの情報を見ることができます。
busytimeデータを管理できるサイズに保つために、繰り返しのミーティングのインスタンスにつき一回だけデータを取り出すようになっています。また、各アイテムのコンテンツのサイズは最大1KBに制限されています。つまり、一年間繰り返し行われる複数の週次ミーティングがあった場合、データのコピーはたったひとつだけ収集されます。
また、各カレンダーエントリーの詳細情報の収集機能の意図は、C&Sやグループカレンダーの機能をよりユーザーフレンドリーにするためです。(サーバー上にあるそのユーザーのカレンダーエントリーを開いたりする必要はなく、ただエントリーがチームミーティングであることが分かれば良いのです。) もし、詳細の全てを見たい場合には、実際のカレンダーエントリーを読むことになります。結局の所、ある特定のミーティングの議長が誰かだけを知ろうとしているときに、5.2KBのデータが入ったダイアログボックスでもがきたい人が本当にいるのか、ということなのです。
この記事では、基本的なbusytimeシステムコンポーネントと、Lotus Notes/Domino 6で紹介されている関係する機能をみてきました。後者には詳細情報の収集機能の設定や個人での制御、Notes 6でのインターフェースを扱いました。多くのユーザーがNotes 6のC&Sを使っていますが、右マウスボタンの下に隠された素晴らしい新機能をしらないユーザーもいることでしょう。Lotus Notes 6を使うことで、相互にユーザーのカレンダーにある情報にアクセスできるようになりましたので、いつ会議を開いたら良いか決めるにあたって情報を得た上で判断できるようになりました。
- developerWorks Japan: Lotus: Lotusの日本の技術情報サイトです
- developerWorks: Lotus(US) : Lotusの英語の技術情報サイトです
- The developrWorks: Lotus記事、“Lotus Notes カレンダーとスケジュールの詳細な説明 Part 1” および、“Lotus Notes カレンダーとスケジュールの詳細な説明 Part 2,” では、Notes/Dominoのカレンダー&スケジューリング動作について解説されています。
- developerWorks ブログを通して developerWorks コミュニティに参加できます。