WAGBY11 MANUAL / 06
文字数・バイト数・表示幅のチェック
文字列の長さを用途に合った数え方でチェックする方法を説明します。
最終更新日:
1. このページで伝える機能
「何文字まで入力できるか」は、文字の数、外部連携でのバイト数、表示上の幅によって意味が変わります。目的に応じた数え方と上限を指定し、超えたときに入力を見直してもらえます。
2. Wagby11で実現できること
簡略名は2〜4文字、連携先名称はShift_JISで8バイト以内、表示ラベルは半角1・全角2として幅8以内にします。「東京支社A」は、それぞれ5文字・9バイト・幅9となり、上限を超えます。

簡略名と表示ラベルを直しても、連携先名称が9バイトのままでは保存できません。この例のShift_JISによるチェックはサーバー側で判定します。

「東京支社」は4文字・Shift_JISで8バイト・幅8で、各条件を満たします。

文字数はUnicodeコードポイントで数えます。表示幅はフォントの実測幅ではなく、文字の種類に基づく換算値です。バイト数では文字セットを指定し、表現できない文字も検証対象になります。
3. AIへの指示例
最小限の指示例
簡略名は4文字まで、連携先名称はShift_JISで8バイトまで、表示ラベルは全角4文字分までにしてください。最小長、文字の数え方、あいまいな幅の文字の扱いなどをAIが類推して補います。「何文字」と「何バイト」を区別し、外部連携先の文字セットも伝えます。
より詳細な指示例
InputCheckのshortNameはUnicodeコードポイントで2〜4文字、externalNameはShift_JISで最大8バイト、labelTextは半角1・全角2の表示幅で最大8としてください。あいまい幅は2とします。保存列のlengthは100を保持し、入力チェックを別に設定してください。東京支社Aで上限超過、東京支社で上限内になることを確認します。Shift_JISのチェックは保存時のサーバー側の結果も確認してください。
既存のモデル・主キー・項目・データ・権限を保持し、必要なguide・referenceを確認してください。メニューと一般利用者向け操作マニュアルを更新し、設計情報の検証・コード生成・起動を行って、正常な入力とエラーになる入力を確認してください。4. 編集されるAppSchemaの例
以下は関連する定義の抜粋です。構文を覚えなくても、許可したい値とエラーにする条件をAIへ伝えられます。
entity:
attributes:
- name: 簡略名
name_en: shortName
type: string
length: 100
validation:
constraints:
- { id: SHORT_NAME_LENGTH, type: length, unit: code_points,
min: 2, max: 4, severity: error,
message_code: error.manual.short.length }
- name: 連携先名称
name_en: externalName
type: string
length: 100
validation:
constraints:
- { id: EXTERNAL_BYTES, type: length, unit: bytes,
charset: Shift_JIS, max: 8, severity: error,
message_code: error.manual.external.bytes }
- name: 表示ラベル
name_en: labelText
type: string
length: 100
validation:
constraints:
- { id: LABEL_WIDTH, type: length, unit: display_width,
ambiguous_width: 2, max: 8, severity: error,
message_code: error.manual.label.width }保存列のlengthと入力時の長さ制約は役割を分けます。上限の検証だけでは未入力を禁止しないため、入力も必須にする場合はpresenceを併用します。
5. 参考資料
- guide:文字数チェック
designer/docs/appschema/html/guide/04-validation/03-string-length.html- guide:バイト数チェック
designer/docs/appschema/html/guide/04-validation/04-byte-length.html- guide:表示幅チェック
designer/docs/appschema/html/guide/04-validation/05-display-width.html- reference:validation(入力チェック定義)
designer/docs/appschema/html/reference/11-validation.html