本文へ移動
Wagby11
マニュアルのグループを選ぶ

WAGBY11 MANUAL / 06

文字数・バイト数・表示幅のチェック

文字列の長さを用途に合った数え方でチェックする方法を説明します。

最終更新日:

入力チェックの小目次へ

1. このページで伝える機能

「何文字まで入力できるか」は、文字の数、外部連携でのバイト数、表示上の幅によって意味が変わります。目的に応じた数え方と上限を指定し、超えたときに入力を見直してもらえます。

2. Wagby11で実現できること

簡略名は2〜4文字、連携先名称はShift_JISで8バイト以内、表示ラベルは半角1・全角2として幅8以内にします。「東京支社A」は、それぞれ5文字・9バイト・幅9となり、上限を超えます。

文字数と表示幅が上限を超えた入力を確認する画面。
文字数と表示幅が上限を超えた入力を確認する画面。

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

Shift_JISで8バイトを超えた連携先名称の入力エラー。
Shift_JISで8バイトを超えた連携先名称の入力エラー。

「東京支社」は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