2025/10/19

共通部品にチャレンジ:#13)LotusScript 実行ログ - クラスに書き換え

汎用ライブラリは、できる限り組み込みやすい状態するため、クラス化することをお薦めしました。今回は、これまでに作成したライブラリをクラス化する作業を行います。


クラスの新規作成

まずは、クラスの器を作成します。クラス名は StdLog とします。

スクリプトライブラリの Options セクションに Public Class StdLog と入力し、Enter キーを押します。新しいクラス StdLog が定義され、画面が切り替わります。


変数の移設

Declarations に定義した Private 変数から、クラスごとに値を保持させるべき変数宣言をクラス内に移動します。

NotesSession や 現在の DB(xndbCur)は不変的なので、Declarations に残したままとします。

ログ DB(xndbLog)は、将来ログ出力 DB を指定する機能を作成する可能性もあるので、クラス内に移動しています。


関数の移設

Initialize と Terminate を除くすべての関数をクラス内に移動します。

Public の関数はそのままでクラス外からアクセスできるメソッドとなり、Private な関数はクラス内だけで利用できる関数となります。

移設が完了するとスクリプトライブラリのオブジェクトは下図のようになります。


初期化処理の移設

Initialize の処理からクラス単位で行う処理をクラスの初期化処理に移設します。

具体的には、Declarations に残した変数 xns と xndbCur の処理(赤枠)以外をクラス内の New サブルーチンに移設します。

なお、クラス化に当たり、ログの名称はクラスの初期化で指定することとします。よって、New にログ名称を受け取る変数 vsLogTitle を引数として定義しています。

ログの名称は、クラス内の変数 xsLogTitle で保管します。下図の通り変数の定義と New の引数で受け取ったログ名称を保管するよう追加します(赤枠)。


LogOpen の修正

ログの名称を New で指定するように変更したので、LogOpen の引数を削除します(紫枠)。ログ文書の初期化処理では、前段で保管した xsLogTitle を使って処理するように変更します(赤枠)。


終了処理の調整

Terminate で行っていた終了処理をクラス内に移設します。初期化 Initialize と同様に Delete サブルーチンを追加して、その中に移動します。


クラス化完了

ここまでの作業が完了すると、下図のようにエラーのない状態になっているはずです。

最後は機能には関係しませんが、コードを見やすくするために命名規則にあわせる調整を行います。今回はクラス内に定義されたプライベートな変数と関数の接頭文字を修正します。変数の命名規則ついては こちら にまとめています(下表はその抜粋)。

接頭語 用途
x スクリプトライブラリやフォーム内で有効な変数(パブリックではない)。
z クラス変数などスコープがクラス内に限定される場合に指定。
x と区別するために z とする。

関数名の接頭文字を zx としました。修正作業が完了すると以下のようになります。インターフェースとなるプロパティやメソッドとクラス内の Private 変数、関数が分離されて表示されるので見やすくできます。

次回は、このクラスに合わせてサンプルエージェントを修正します。


前回 共通部品にチャレンジ


0 件のコメント:

コメントを投稿