kintoneで顧客管理アプリを作成したが「郵便番号の形式がバラバラなので、統一できるように入力を制限したい」ということはないでしょうか。
123-4567・1234567・全角の1234567など、入力ルールが統一されていないと、集計・分析やデータ連携の作業時に問題となることがあります。
本記事では、「半角数字7桁(ハイフンなし)」 に入力を統一するJavaScript カスタマイズのサンプルです。
内容:
動作確認は、2026年4月時点のkintone(スタンダードコース)です。
標準機能では対応できない理由
kintone の標準設定だけでは「半角数字・ちょうど7桁」を同時に満たすことができません。 (各フィールドの詳細はkintoneで利用できるフィールド一覧 | kintone ヘルプをご参照ください。)
| フィールド種別 | 設定できること | 問題点 |
|---|---|---|
| 数値 | 最小値・最大値の制限 | 半角数字のみだが、桁数を7桁に固定すると、「0」から始まる郵便番号に適さない |
| 文字列(1行) | 最小・最大文字数の制限 | 7桁に統一できるが、全角や数字以外も入力できてしまう |
「半角」「数字のみ」「ちょうど7桁」の3条件を同時に満たすには、JavaScriptによるカスタマイズが必要です。
このカスタマイズで実現できること
| 機能 | 概要 |
|---|---|
| リアルタイムチェック | 値が変わった瞬間に形式を判定し、フィールド直下にエラーを表示 |
| 保存時のブロック | 誤った形式のまま保存すると、画面上部にエラーを表示して中断 |
| PC・モバイル両対応 | スマートフォン・タブレットでも同様の検証(バリデーション)が動作 |
導入コード
以下のコードをテキストエディタ(「メモ帳」など)にコピーし、
- 文字コード:UTF-8(BOMなし)
- ファイル名:
zip_validation.js
として保存後、「JavaScript / CSSでカスタマイズ」の設定画面でアップロードしてください。 ファイル名は適当な名称で結構です。 アップロード手順の詳細はJavaScriptやCSSでアプリをカスタマイズする | kintone ヘルプをご参照ください。
(() => { 'use strict'; const ZIP_FIELD = '郵便番号'; // ← フィールドコードに合わせて変更 const ZIP_PATTERN = /^\d{7}$/; // 半角数字7桁のみを許可する正規表現 const ERROR_MSG = '郵便番号はハイフンなしの半角数字7桁で入力してください。'; // イベント設定(変更時と保存時) const events = [ `app.record.create.change.${ZIP_FIELD}`, `app.record.edit.change.${ZIP_FIELD}`, 'app.record.create.submit', 'app.record.edit.submit', `mobile.app.record.create.change.${ZIP_FIELD}`, `mobile.app.record.edit.change.${ZIP_FIELD}`, 'mobile.app.record.create.submit', 'mobile.app.record.edit.submit' ]; kintone.events.on(events, (event) => { const record = event.record; const zipValue = record[ZIP_FIELD].value; // 未入力時はチェックしない(必須にしたい場合はkintone標準設定で) if (!zipValue) { record[ZIP_FIELD].error = null; return event; } // 7桁数字チェック if (!ZIP_PATTERN.test(zipValue)) { record[ZIP_FIELD].error = ERROR_MSG; // 保存イベント(submit)の場合は、画面上部にもエラーを表示して中断 if (event.type.includes('submit')) { event.error = '郵便番号の形式が正しくありません。'; } } else { // 正常な場合はエラーを消去 record[ZIP_FIELD].error = null; } return event; }); })();
フィールドコードの確認方法 アプリ設定 → フォーム → 該当フィールドの歯車アイコン →「フィールドコード」を確認し、
ZIP_FIELDと一致させてください。
コードのポイント
1. PC・モバイルを一括管理するイベント配列
PC版とモバイル版ではイベント名のプレフィックスが異なります(app. vs mobile.app.)。両者を配列にまとめて渡すことで、対応漏れなく一元管理できます。
なお、JavaScriptファイルのアップロードは、同じものを「PC用のJavaScript / CSSファイル」「スマートフォン用のJavaScript / CSSファイル」のそれぞれにアップロードします。
2. 「リアルタイム表示」と「保存中断」の二段構え
- 変更イベント(change):フィールド直下にエラーをリアルタイム表示
- 保存イベント(submit):画面上部にも警告を出し、保存をブロック
二重のフィードバックで、気づかないまま保存を強行するリスクを防ぎます。
3. なぜ「ハイフンなし7桁」なのか
配送業者へのCSV出力・住所検索APIとの連携・他システムへのエクスポートなど、多くのユースケースで最もトラブルが少ない形式です。入力ルールを統一することで、データクレンジングの工数を大幅に削減できます。
運用時のアドバイス
- 必須項目にしたい場合:本コードは空欄を許容しています。入力必須にするには、kintone の標準設定(フィールドの設定 → 必須項目にする)を併用してください。
- メッセージのカスタマイズ:
ERROR_MSGを書き換えるだけで、社内ルールに合わせた案内文に変更できます。
まとめ
数十行のシンプルなコードで、標準機能だけでは実現できない「半角・数字のみ・ちょうど7桁」の3条件を PC・モバイル双方で確実に満たせます。 以上、kintoneのアプリ開発で、郵便番号を「ハイフンなし7桁」に統一!入力ミスを未然に防ぐバリデーション実装術でした。