---
title: 202407 のの会@関数Talk 57th | Talks around @Functions in Notes and Domino
tags:  #domino #notes #dominoforever #lotus notes #のの会 #@関数 #@doclength  
author: [あう゛](https://www.docswell.com/user/abesat)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/4JZ12QZRE3.jpg?width=480
description: Notes Dominoの@関数を取り上げながら、調べたこと、経験したことを雑談してゆきます。  第57回は @DocLength について
published: January 30, 26
canonical: https://www.docswell.com/s/abesat/52QX2E-202407-function-talk-57th
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/4JZ12QZRE3.jpg)

@
-notes knows community- 2024/07/11
@関数Talk
第57回
公開版
✔ @DocLength
@
阿部 覚
(X:) @abesat
Talks around @Functions in Notes and Domino
57th


# Page. 2

![Page Image](https://bcdn.docswell.com/page/YE6LV6Z17V.jpg)

@
@DocLength
で放談
@


# Page. 3

![Page Image](https://bcdn.docswell.com/page/GE51D6WLJ4.jpg)

@DocLength
@
この関数をネタにしたのは
とある興味からですが
ひとまずは基礎的なところ
@


# Page. 4

![Page Image](https://bcdn.docswell.com/page/97218MQ3ER.jpg)

@
@DocLength
ヘルプによれば
「文書の推定サイズをバイト数で返します。」
構文
@DocLength
@


# Page. 5

![Page Image](https://bcdn.docswell.com/page/DJYZ6XW8EM.jpg)

@DocLength
@
推定ってどういうことかについて、ヘルプでは
「・推定サイズはユーザーデータのみを表します。文書や
フィールドの見出しや式など、固定のものはサイズに含まれ
ていません。
・データベースでは、記憶領域は 64 バイト単位で割り当て
られます。文書に割り当てられたこの 64 バイトの一部が使
用されていないこともあります。」
「通常、開いている文書は、閉じている文書より多くの記
憶域を使用します。@DocLength から返される値は、この
関数を実行している文書が開いている文書か、あるいは閉
じている文書か (ビューレベルで選択された文書など) に
よって変わります。」
@
イマイチのみこみづらいところありますが要するに


# Page. 6

![Page Image](https://bcdn.docswell.com/page/V7N3Z19978.jpg)

@DocLength
@
要するに
「・推定サイズはユーザーデータのみを表します。文書や
フィールドの見出しや式など、固定のものはサイズに含まれ
ていません。
一部がサイズに含まれない
・データベースでは、記憶領域は
64 バイト単位で割り当て
られます。文書に割り当てられたこの 64 バイトの一部が使
用されていないこともあります。」
「通常、開いている文書は、閉じている文書より多くの記
憶域を使用します。
@DocLength から返される値は、この
文書画面での値＞ビューでの値
関数を実行している文書が開いている文書か、あるいは閉
じている文書か (ビューレベルで選択された文書など) に
よって変わります。」
@
という理解でいいかな?


# Page. 7

![Page Image](https://bcdn.docswell.com/page/YJ99Z523J3.jpg)

@DocLength
@
じゃあ実際に見てみましょう
ビューの列でシンプルファンクションの
「サイズ（バイト）」を選べば
@
式としての @DocLength です


# Page. 8

![Page Image](https://bcdn.docswell.com/page/GJ891Y5LED.jpg)

@DocLength
@
じゃあ実際に見てみましょう
文書フォームには、計算結果テキストで
@DocLength を置いてみます
@
フォーム内の計3か所に置いてみました


# Page. 9

![Page Image](https://bcdn.docswell.com/page/LJLWQ4YQ7R.jpg)

@DocLength
@
もうひとつ
@DocLength をプロンプト表示するエージェントを
用意しました
@
戻り値が数字なので @Prompt と使うに際して
@Textを行っています


# Page. 10

![Page Image](https://bcdn.docswell.com/page/47M91KDKJW.jpg)

@DocLength
@
とある「文書ライブラリ」のデータベースで
これらの設計変更を行い、
ビューを見ると…
@


# Page. 11

![Page Image](https://bcdn.docswell.com/page/P7RGLX46J9.jpg)

@DocLength
@
でも、前掲のエージェントによるアクションで
選択している文書のサイズを出すと
@
値が同じじゃないよ？


# Page. 12

![Page Image](https://bcdn.docswell.com/page/PJXXW62DJX.jpg)

@DocLength
@
その文書を開いてみます
置かれた場所によって
計算結果テキストの
@DocLengthの結果値が
少々異なっており
@


# Page. 13

![Page Image](https://bcdn.docswell.com/page/3JKWV1MDJD.jpg)

@DocLength
@
さらにエージェントのアクションが出してくる値も違う
@


# Page. 14

![Page Image](https://bcdn.docswell.com/page/LE31MQYP75.jpg)

@DocLength
@
ただ、この文書を編集オードにすると、
一時的に統一されます
@
あくまで一時的
保存してからまた普通に開くと別々の値です。。


# Page. 15

![Page Image](https://bcdn.docswell.com/page/8EDX6953JG.jpg)

@DocLength
@
とまあこんな次第で
@DocLength の推定値は、
画面がビューか文書かなんて違いにとどまらず
出し方によってすら、ずれがあるようなので
結論はヘルプ通りですが
あくまで推定値、というのをご留意ください
実際に使う側としては
「厳密ではないがおおよそのサイズがわかる」
というレベルでの捉え方でよいのだと思います
@


# Page. 16

![Page Image](https://bcdn.docswell.com/page/V7PPYZGP78.jpg)

@DocLength
@
ネットを調べると
ほかに
特にファイルが添付されている文書に関して
圧縮によるサイズへの影響なども指摘されています
たとえばこの記事
@DocLengthが返す文書Size
| Lotus Notes/Domino (R) をこよなく愛して。。。。
https://ameblo.jp/iwama/entry-12101779977.html
@
なおこちらのBlog、重宝されてた技術者も多いはずだけど
閉鎖を予定との記事が今年(2024) 4月に出ています（泣）
チェックするなら今のうちかも
（せめてこのまま残して頂けないかしらん）


# Page. 17

![Page Image](https://bcdn.docswell.com/page/2JV2GW6VJQ.jpg)

@DocLength
@
ここからは少し趣向を変えます
@DocLength で、私が興味本位でやってみたかったこと
興味本位なのであまり仕事のお役には立たないと思いますが
ここまで話したように
調べれば調べるほど「推定値」であることが分かったので
以降のトライアルの正確性は疑わしいですが
@
でも、まあいいや、やりたかったことを続けてみよう


# Page. 18

![Page Image](https://bcdn.docswell.com/page/5EGR8DN1JL.jpg)

@DocLength
@
Notes Dominoの文書って、
どこまで小さくできるん？
≒
@DocLengthで、どこまで小さい
値をあらわせるか
@
@DocLengthは推定値なので、厳密でないのはわかってるけど
（「＝」イコールではなく「≒」ニアイコールだけど）
どこまで小さい値を出せるもんかな


# Page. 19

![Page Image](https://bcdn.docswell.com/page/4JQV91QN7P.jpg)

@DocLength
@
というわけで問題
今回私が
@DocLengthで表示させた
文書の最小値は
いくつでしょうか
@


# Page. 20

![Page Image](https://bcdn.docswell.com/page/K74MXRN3J1.jpg)

@DocLength
@
とにかく文書を小さくしたいと考えた場合
文書を新規作成し、何も入力せず保存したとしても
最低限保存されるものがあるので
それらを極力減らしてゆくことがポイントと考えました
減らす対象は、フィールドです
@


# Page. 21

![Page Image](https://bcdn.docswell.com/page/LJ18NQ5ZEG.jpg)

@DocLength
@
普通にフィールドが準備された業務のフォームで
文書を作成したら、たとえ何も入力せずに保存したとしても
（こちらは文書ライブラリのテンプレートを
使ったアプリですが）
たとえば、このくらいのサイズ感になるようです
@


# Page. 22

![Page Image](https://bcdn.docswell.com/page/GJWZ4M56J2.jpg)

@DocLength
@
であれば、
フィールドの数が少ないフォームがいい
そこで、DBに新規フォームを作成しまして…
@
フォームの名前を&quot;a&quot;と（短く）し、


# Page. 23

![Page Image](https://bcdn.docswell.com/page/4EZ12QNR73.jpg)

@DocLength
@
フィールドは…
ま、いっか！
@
何もせずそのままフォーム a を保存しちゃいます。


# Page. 24

![Page Image](https://bcdn.docswell.com/page/Y76LV681JV.jpg)

@DocLength
@
見出しもフィールドもなくていいの？
いいんです！
出来上がったフォーム a で
文書を作成し
のっぺらぼうで
入力できるフィールドないけど
Ctrl+S などで保存はできます!
@


# Page. 25

![Page Image](https://bcdn.docswell.com/page/G751D69LE4.jpg)

@DocLength
@
結果…
39バイト!
※今回は列式の@DocLengthで評価
文書には
Form と
$UpdatedBy の
2つの隠しフィールド
だけが存在します
@
39バイトの大半は、フォーム名(Form)と
作成ユーザーのID名($UpdatedBy)ではと思われ


# Page. 26

![Page Image](https://bcdn.docswell.com/page/9J218M237R.jpg)

@DocLength
@
$UpdatedBy
この文書を
誰が更新したかを表す予約フィールド（隠しフィールド）
新規保存した文書の場合は1名のIDが記録され
前回と違うユーザーが更新する都度IDが追加されます
つまり、通常なら最低でも1名のIDが記録されます
@
以上が、実験その①でした


# Page. 27

![Page Image](https://bcdn.docswell.com/page/DEYZ6XY87M.jpg)

@DocLength
@実験その②
同じように のっぺらぼうの フォーム b を作成します
@
フォーム a との
違いはココ


# Page. 28

![Page Image](https://bcdn.docswell.com/page/VJN3Z1P9J8.jpg)

@DocLength
@
同じように のっぺらぼうの 文書を作成し、保存すると
結果…
14バイト!
@


# Page. 29

![Page Image](https://bcdn.docswell.com/page/YE99Z533E3.jpg)

@DocLength
@
フォーム b は
Anonymousのフォームでした
匿名、文書の作成・更新者を内緒にする、記録しない、
というフォームです
文書プロパティを見ると$UpdatedByの代わりに
$Anonymousという隠しフィールドがセットされており
これが1バイトのみ、というのがポイントです
@


# Page. 30

![Page Image](https://bcdn.docswell.com/page/GE891YML7D.jpg)

@DocLength
@最後に実験その③
これはちょっとイレギュラーな、ずるいアプローチです
というのは、フォームや文書を作るのではなく
こんなLotusScriptのエージェントを作って
アクションとして実行します
@


# Page. 31

![Page Image](https://bcdn.docswell.com/page/LELWQ43QJR.jpg)

@DocLength
@
結果…
😏
@
3バイト!
こちらが今回の回答でした


# Page. 32

![Page Image](https://bcdn.docswell.com/page/4JM91KMKEW.jpg)

@DocLength
@
作成された文書のプロパティには
$Anonymous のみで Form もありません
（Formがないから、まともに開くこともできないんですが）
@


# Page. 33

![Page Image](https://bcdn.docswell.com/page/PJRGLXV6E9.jpg)

@
今回もお付き合い
ありがとうございました
😀
@


