|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Lotus Notes/Domino 7 の自動保存のすべて |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Alaa Mahmoud , Software Engineer, IBM レベル:中級 原文の掲載:2005年8月23日 更 新 日:2005年11月25日更新 苦労して進めてきた作業をコンピュータのクラッシュで一瞬にして失ったことはありませんか。こういうときに限って、作業内容を保存していないものです。しかし、Lotus Notes/Domino 7 で導入された自動保存機能を使用すると、このようなことはなくなります。 たとえば、上司に提出するレポートをギリギリのタイミングで作成しているものとします。タイピング、書式設定、最終チェックに何時間もかかりました。このとき突然マシンのフリーズや他の予期せぬ事態が発生して、作業内容をすべて失ってしまったら・・・。その瞬間、「しまった、文書の保存を忘れていた」と気づきます。そして、「レポートを最初から作成し直すか、あるいは履歴書の更新でも始めるべきか」と自問します (時間は午前 2 時。まわりには誰もいないのに、思わず問いかけてしまいます)。もし、このようなことが発生したら、「自分には守り神がいて、ときどき作業を保存してくれないかなぁ。そうすれば、予期せぬ事態が起きても作業内容を失わずに済むのに」と思うのではないでしょうか。 自動保存こそ、この守り神なのです!自動保存は Notes 7.0 で導入された多くの優れた機能の中の 1 つです。自動保存を有効にすると、ユーザーが指定した間隔で Notes 文書がローカルデータベースに保存されます。これによって、もし、Notes またはコンピュータが何らかの原因でクラッシュしても、最新の作業内容が保持され、文書を復旧することができます。 この記事では自動保存機能を取り上げ、それがどのように設計されたのかを紹介します。また、自動保存機能の使い方についても説明します。準備はよいでしょうか。この記事は、熟練した Notes ユーザーの方を対象に書かれています。Notes 7.0 の各機能の詳細については、developerWorks: Lotus 記事『Lotus Notes と Domino Designer 7.0 の新機能』を参照してください。
自動保存の設計私たちが自動保存の開発を始めたとき、次のような目標を念頭に置きました。
一般的なシナリオ 自動保存の設計を開始するにあたり、私たちは次のようなシナリオを考慮しました。「文書での作業中に予期せぬ事態が発生し、作業内容を失うことがある。このような場合に、何をすればよいのか」
自動保存の使い方自動保存を使用するには、次のことを考慮する必要があります。
それぞれについて、次のセクションで詳しく見ていきましょう。 クライアントで自動保存を有効にする Notes 7.0 をインストールしたとき、自動保存はデフォルトで有効にはなりません。有効にしていない理由は、ユーザーが初めて自動保存機能を経験するときに、何が起こっているかを理解できない可能性があるからです。また、低速のマシンを使用するユーザーもいて、このようなマシンで大きな文書を自動保存すると、長時間かかることがあります。このため、自動保存を使用する場合は、[ユーザープリファレンス] ダイアログの新しいオプション (図 1 参照) を有効にする必要があります。 図 1. [ユーザープリファレンス] ダイアログ ![]() 私たちは、自動保存の有効/無効を切り替えるチェックボックスと保存間隔を設定するフィールドを追加しました。間隔は 1 ? 999 分の範囲で設定できます。自動保存に関するこれらのユーザープリファレンスオプションは、クライアントの Notes.ini ファイルの 3 つの変数に対応しています。オプションと Notes.ini 変数との対応は次のとおりです。
フォームで自動保存を有効にする 前述のように、静的保存を行うとイベントはまったく発生しません。自動保存で静的保存を使用するのは、自動保存を「シームレス」な動作にするためです。つまり、ユーザーは自動保存を有効にした後、予期せぬ事態が発生するまでそのこと忘れていてもかまいません。復旧する文書があることを自動的に知らせてくれます。イベントを発生させると (通常は、一部のケースでイベントが発生します)、文書が完了していない場合、エラーが生成されることがあります。また、イベントによってメールが送信され、予想外の結果となる可能性もあります。このため、文書を自動保存するときは、これらのイベントを発生させないようにしています。このことから、もしフォームがこれらのイベントに依存していたらどうなるのか、という疑問が生じるかもしれません。答えは簡単で、自動保存は機能しません! ![]() 自動保存が行われるのは、[自動保存を許可する] オプションが有効なフォームから作成された文書だけです。つまり、この方法を用いた場合にのみ、自動保存後に文書を復旧できます。多くの Notes/Domino アプリケーションでは、アイテムを作成したり、ロード時に検証を行うコードが Save イベントや Post Save イベントに定義されています。文書の自動保存時にはこれらのイベントが発生せず、イベントで定義されたアクションも実行されません。このため、自動保存された文書が「異常な」状態になることがあります。これによって、復旧後に文書のロードが失敗する可能性もあります。 保存時のイベントでアイテムに書き込むコードが定義されていて、アプリケーションがこれらのアイテムに依存する場合は、これらのアイテムにデフォルト値を生成するコードを Query Open イベントに追加してください。$AutoSaveRecovered というアイテムを検索することにより、復旧した文書だけを特別に処理することもできます。このアイテムは、復旧した文書において、Post Open イベントが発生するまでの間に利用できます。これ以降、このアイテムは削除されます。 プログラムから個々の文書の自動保存を無効にする別の手法として、$DontAutosave アイテムを追加する方法があります。このアイテムによって、文書の自動保存が無効になります。$DontAutosave を削除すると、文書は再び自動保存されるようになります。 メモ: Notes/Domino 7.0 では、製品に含まれるテンプレートのフォームで自動保存が有効になっているのは、Memo フォームだけです。
自動保存の正常な動作 Notes Client とフォームで自動保存を有効にすると、自動保存を使用する準備が整います。文書を開いて入力を開始するとタイマーがスタートし、ユーザーが設定した時間が経過するのを待ちます。このタイマーが開始するのは文書を保存する場合だけで、文書を表示するだけでは無効です。 指定した間隔が経過すると、自動保存はイベントを発生させずに静的保存を行います (前述のとおりです)。ローカルディスク上の自動保存データベースには、保存された文書のコピーが保管されています。このコピーには、障害発生後の文書の復旧に使用するいくつかのフィールドが追加されます。これらのフィールドを下表に示します。
自動保存が開始されると、次のメッセージがステータスバーに表示されます。 文書の自動保存中: <文書名>... 自動保存が完了すると、次のメッセージがステータスバーに表示されます (図 3 参照)。 自動保存完了 : <文書名>... 図 3. 自動保存のメッセージ 自動保存が完了すると、データが保存され、障害後に Notes を起動するときに、データを復旧できます。しかし、自動保存によって、大量の文書がローカルデータベースに保存されてしまうことはないでしょうか。この点についても考慮されています。保存された文書に対し、ユーザーが復旧、キャンセル、または送信を行うと、自動保存された文書が自動保存データベースから削除され、スペースが確保されます。また、ユーザーは復旧したい最新の文書だけを簡単に表示できます。 自動保存を有効にすると一定の間隔で文書が保存されるので、ユーザーは障害の発生時に救われます (障害発生の少し前に、自動保存が行われているはずです)。しかし、文書の編集時にコンピュータの調子が悪くなった場合はどうすればよいでしょうか (たとえば、画面がちらつく、カーソルがフリーズする、青いボックスが点滅するなど)。このような場合は、いつでも自動保存を強制的に実行できます。これを行うには、[ファイル] メニューで [自動保存] を選択し、[すぐに自動保存] をクリックします。これによって、自動保存がすぐに実行されます。 自動保存された文書を復旧する 障害の発生後、Notes Client を再起動したときに、何が行われるのかを順を追って説明します。まず、クライアントの起動時に、ユーザーの認証が行われた後、自動保存データベースに文書があるかどうかをチェックします。文書がある場合は、保存していない作業を復旧するかどうかを確認するプロンプト (図 4 参照) がユーザーに表示されます。 図 4. [未保存文書の確認] ダイアログボックス
図 5. [未保存文書の復旧] ウィンドウ ![]() [未保存文書の復旧] ウィンドウのフィールドには、文書が自動保存された時刻、文書のタイトル、オリジナルデータベースのパス名/ファイル名、データベースが保存されているサーバー名の各情報が表示されます。 オリジナルの Notes データベースのどのレプリカにもアクセスできない場合は、文書を復旧できないので、文書はそのままの状態で残されます。後で、復旧を再び試みることができます。最後の自動保存後に文書が変更されている場合は、クラッシュ後にオリジナルの文書が更新されていることがユーザーに示されます。ユーザーは、自動保存した内容で上書きするか、最新の内容を保持するかを選択できます。文書の復旧を選択すると、Notes で文書が開かれ、変更内容を破棄するか、保存するかを問われます。自動保存は、復旧後、ユーザーの代わりに自動的に文書を保存しない点に注意してください。
自動保存データベース私たちは当初、自動保存機能は Autosave.ntf から作成された単一のデータベース (Autosave.nsf) を使用するよう設計しました。これは暗号化されたデータベースです。しかし、このために潜在的な問題に遭遇してしまいました。初期のテスト中に、多くの Notes/Domino 環境で、複数のユーザーが同じ Notes データディレクトリを使用していることに気づいたのです。各ユーザーは、個別のロケーション文書を使用します。デフォルトでは、AutoSave.nsf はユーザーのデータディレクトリに置かれ、暗号化されます (中レベルの暗号化を使用)。このため、最初のユーザーが自動保存データベースを作成するときに、データベースはこのユーザーのキーで暗号化されます。結果として、他のユーザーはこのデータベースを使用できず、自動保存は無効になります。この状況を回避するために、メールファイルの場合と同様の命名規則を使用して、自動保存データベースを作成することにしました。つまり、データベース名の先頭に as_ を付加します。たとえば、Alaa Mahmoud の場合、自動保存データベースの名前は「as_Amahmoud.nsf」となります。すでに同じデータベース名が使用されているときは、名前に 1 を追加して再チェックします。この名前が存在するときは 2 を追加して再チェックし、さらに、3、4・・・と繰り返します。このようにして、自動保存データベースに固有の名前を付けます。 名前の競合を解決する この名前の付け方を使用すると、John Smith、Jane Smith、Jen Smith、Jon Smith などのユーザー名で競合が発生してしまいます。現在のユーザーに対して正しいデータベースを使用するために、ユーザー用のデータベースを作成した後で、ユーザーの Notes.ini ファイルに次のエントリを追加します。 AUTO_SAVE_USER,<短縮ユーザー名>=<データディレクトリからの相対パスでのデータベース名> たとえば、次のようなエントリを追加します。 AUTO_SAVE_USER,Alaa Mahmoud/Westford/IBM=as_AMahmoud2.nsf これによって、次の順番で処理が進められます。まず、ユーザーが特定の ID を使用して Notes を起動します。Notes はこのユーザー名のエントリがあるかどうかを Notes.ini でチェックします。エントリが存在する場合は、そのエントリで指定されているデータベースを使用します。データベースが存在しない場合は (ユーザーがデータベースを削除した場合など)、新しいデータベースを作成します。ユーザーがこのデータベースへのアクセス権を持っていない場合、ユーザーはエラーを受け取り、自動保存は無効になります。ユーザー名のエントリが見つからない場合は、前述の命名規則を使用して、エントリとデータベースを作成します。 ユーザーが ID を切り替えると、Notes は開かれているすべてのウィンドウを閉じます。このため、自動保存された文書が開かれていても問題にはなりません。
ポリシーを使用して自動保存オプションを設定するシステム管理者は、ポリシー文書を使用して、自動保存を有効または無効にすることができます (あるいは、ユーザー間で自動保存の間隔を同じ値に設定できます)。これを行うには、Domino Administrator で [ファイル] - [サーバーを開く] を選択します。次に、管理するサーバーの名前を入力します。指定したサーバーの Domino ディレクトリが開かれます。左側のナビゲーションペインで [設定] を選択します。次に、[設定の追加] - [デスクトップ] を選択するか、既存のデスクトップ設定文書を選択して [設定の編集] をクリックします。デスクトップ設定文書が開かれた後で、[プリファレンス] - [基本] タブを選択します (図 6 参照)。図 6. [デスクトップ設定] 画面 ![]() 自動保存に関連する次の 2 つのオプションを設定します。
まとめこの記事では、自動保存の優れた機能について説明しました。予期せぬ事態に備えて作業内容を保存するだけでなく、ユーザーは [ユーザープリファレンス] を使用して、またシステム管理者はポリシーを使用して自動保存を設定できます。設計者は、起動されないイベントにフォームが依存しないことを確認した後、フォームで自動保存を有効にする必要があります。自動保存は、暗号化されたローカルデータベースを使用するため、処理が速いだけでなく、セキュリティも確保されています。Notes 文書で作業しているときに、もう予期せぬクラッシュを心配することはありません。自動保存によって復旧できるからです。
リソース
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||