株式会社COTSUBU
kintone

kintoneのフィールド設計|後から直せなくなる前に決めること

宇田川 将也|12分
kintoneフィールド設計アプリ設計フィールドコードノーコード

kintoneのフィールドで後から直せないのは「型」「フィールドコード」「重複禁止の後付け」の3つです。この3つだけは、アプリを作るときに決めきってください。

残りは運用しながら足せます。逆に言えば、最初から完璧な項目一覧を作ろうとする必要はありません。直せないものだけ先に決め、直せるものは現場に使わせてから足すのが、いちばん早く進みます。

後から直せるもの・直せないもの

決めること 後から 直すときに何が起きるか
フィールドを足す 直せる 既存レコードは空欄のまま。すぐ足してよい
フィールド名(画面の表示名) 直せる 表示が変わるだけ。コードは変わらない
必須にする・外す 直せる 既存レコードは空欄のまま残る(編集時に埋めることになる)
選択肢を増やす 直せる 影響なし
選択肢を減らす 直しにくい その値のレコードが、一覧の絞り込みやグラフの分類から外れる
フィールドの型 できない 新しく作り直し、CSVで値を移す
フィールドコード 直せるが危険 計算式・一覧の絞り込み・JS・プラグイン設定・CSV・APIが同時に壊れる
値の重複を禁止する 直しにくい すでに重複があると設定を保存できない。先に全件を直す必要がある
フィールドを消す 取り消せない 中のデータごと消える

フィールドの型の選び方(迷いやすいところだけ)

入れたいもの 使う型 理由
金額・数量・時間数 数値 集計・グラフ・計算の対象になる
電話番号・郵便番号・品番・伝票番号 文字列(1行) 数値にすると先頭の0が消え、カンマが入る
契約日・納期 日付 文字列だと並び替えも残日数の計算もできない
開始・終了の時刻がある予定 日時 日付+時刻を別々に持つと、重なりの判定ができない
状況・区分(1つ選ぶ・4つ以下) ラジオボタン 画面で全部見える。押す回数が1回
状況・区分(1つ選ぶ・5つ以上) ドロップダウン 画面が縦に伸びない
該当するものを複数 チェックボックス 集計はしにくい(後述)
担当者 ユーザー選択 「自分の担当だけ」の権限と絞り込みが使える
取引先・品目・現場 ルックアップ(+マスタアプリ) 選択肢が業務で増減するものはフィールドにしない
備考・経緯 文字列(複数行) リッチエディターは書式が混ざって検索しづらい

「文字列にしてはいけないもの」を先に潰す

現場のExcelをそのまま持ち込むと、日付・数値・選択肢がすべて文字列になります。これが後でいちばん効いてきます。

  • 日付が文字列 → 並び替えが「2026/1/5 より 2026/10/1 が先」になる。残日数も出せない
  • 数値が文字列 → 合計・平均・グラフが出せない
  • 選択肢が文字列 → 「完了」「完了 」「済」が別物として集計される

この3つは、型を作り直すしか直す方法がありません。 移行前のExcel側の掃除については11章 Excelからの移行にまとめています。

選択肢にするか、マスタにするか

分かれ目は「その選択肢は、現場の人が増やしたくなるか」です。

中身 置き場所
状況(未対応/対応中/完了) ドロップダウン。増えない
反響元(ポータル/飛び込み/紹介) ドロップダウン。年に数回増える程度
取引先・物件・品目・現場 マスタアプリ。毎週増える。住所や単価も一緒に持つ

選択肢を増やすにはアプリの設定変更(=アプリ管理権限)が要ります。現場が自分で増やしたいものは、設定ではなくレコードとして持たせるのが原則です。マスタと記録の分け方は6章 複数アプリのつなぎ方、引き方はルックアップの使い方と設計のコツにあります。

チェックボックス・複数選択の落とし穴

「該当するものすべて」を1つの項目に入れると、集計が素直に出ません。 1レコードに複数の値が入るので、「件数の合計が母数と合わない」状態になります。

分類ごとの件数をグラフで見たいなら、1つだけ選ぶ型(ドロップダウン・ラジオ)に直すか、集計したい分類だけを別のフィールドに切り出してください。

フィールドコードの命名

フィールドコードは、画面には出ないが、計算式・JavaScript・プラグイン設定・CSV・APIがすべて参照している名前です。既定のままだと 文字列__1行__0 のような名前になります。

良い例 悪い例 理由
bukken_code 文字列__1行__0 何の項目か分からない
chinryou 金額 どの金額か分からない。アプリ間で衝突する
keiyaku_kaishi_bi 日付 同上
jokyo 状況1 全角数字・連番はあとで意味を失う

決めるのは3つだけです。

  1. 半角英小文字とアンダースコアにそろえる(日本語コードも動きますが、JSやCSVで扱うときに面倒が増えます)
  2. アプリをまたいで同じ意味には同じコードを使う(kokyaku_code はどのアプリでも顧客コード)
  3. アプリを作った直後に、全フィールドのコードを付け直す。運用が始まると触れなくなります

アプリの設定画面からコードの一覧を出せますが、アプリが増えてくるとブラウザのコンソールで一気に見るほうが早いです。

// アプリを開いた状態で、ブラウザのコンソールに貼って実行する(棚卸し用)
(async () => {
  const res = await kintone.api('/k/v1/app/form/fields', 'GET', {
    app: kintone.app.getId(),
  });
  const rows = Object.values(res.properties)
    .map((f) => ({
      コード: f.code,
      ラベル: f.label,
      型: f.type,
      必須: f.required ? '○' : '',
      重複禁止: f.unique ? '○' : '',
    }))
    .sort((a, b) => a.型.localeCompare(b.型));
  console.table(rows);
  // CSVで欲しいときは次の行を使う
  // console.log(rows.map((r) => Object.values(r).join(',')).join('\n'));
})();

既定のままのコード(文字列__ で始まるもの)が残っていないか、重複禁止を付け忘れたキーがないかを、この一覧で確認します。運用開始後は同じものをアプリの設定書として保存しておくと、引き継ぎのときに効きます(→kintoneを定着させる)。

一意(重複禁止)は最初に付ける

キーになる項目(顧客コード・物件コード・品番・契約番号)には、アプリを作った時点で「値の重複を禁止する」を付けてください。

後から付けようとすると、すでに重複しているデータがある限り設定を保存できません。運用が半年進んだ状態で数千件の重複を直すのは、現実的には止まります。

標準の重複禁止は1つの項目しか見ません。 「物件名+部屋番号」「会社名+電話番号」のような組み合わせで止めたいときは、無料の重複チェック Proを使います(→重複を禁止・チェックする方法)。

番号を人が手で入れる運用にすると必ず重複するので、契約番号・受注番号は自動採番で振ります。

テーブル(サブテーブル)を使う条件

テーブルの行は、1レコードの一部です。ここから使ってよい条件が決まります。

使ってよい 別アプリにすべき
見積の明細行(親が確定すれば行も確定) 行ごとに担当者・期限・状態がある
経費の内訳 行だけを検索して一覧にしたい
工程の予定(予定を並べるだけ) 行を軸に集計・グラフにしたい
行数が数行〜数十行 行ごとに承認・通知を回したい

判断の一文は「その行だけを開いて、誰かが仕事をするか」です。仕事をするなら、それはレコードです。

建設の見本では、見積の明細はテーブル、発注は別アプリにしています。発注を業者別・支払予定日別に集計したいからです(→建設会社のkintone)。製造の見本でも、製造指示の工程はテーブル、工程実績は別アプリです。実績には作業者と時間があり、重なりを止める必要があるからです(→製造業のkintone)。

テーブルの行番号は標準では出ないので、無料のテーブル行番号を使います(→テーブルに行番号を付ける方法)。

計算フィールドの限界

計算フィールドでできるのは、同じレコードの中の、数と日時の計算だけです。

やりたいこと 標準の計算 代わりの手
単価 × 数量 できる ―
テーブルの金額の合計 できる(SUM()) ―
条件で値を変える できる(IF()) ―
他アプリの値を使う できない ルックアップでコピーしてから計算
文字列をつなぐ(姓+名、住所の結合) 文字列(1行)の自動計算でできる(空欄の扱い・複数行は不可) 無料の文字列の結合
2つの日付の差(開始日〜終了日) できる(結果は秒なので /86400 で日数にする) ―
今日までの残日数 できない(計算は保存したときにしか走らず、翌日になっても値が変わらない) 無料の期限・残日数
営業日で数える できない 無料の営業日計算
月末・締め日を出す できない 無料の締め日・支払日
和暦・曜日で見せる できない 無料の日付計算

とくに「他アプリの値は計算に使えない」は設計に効きます。「案件アプリで、発注アプリの合計原価を出す」はできません。合計を持ちたいなら、集計する側に値を書き戻す作り(JavaScript)が要ります。ここは13章 JavaScript・API・外部連携の範囲です。

見本アプリのフィールド構成

不動産:物件台帳(/kintone/for/fudosan)

項目 型 なぜその型か
物件コード 文字列(1行)・重複禁止 ルックアップのキー。先頭0が消えては困る
賃料・共益費 数値 合計と平均を出す
状況 ドロップダウン 空室/申込あり/入居中。増えない
部屋番号 文字列(1行) 「101」「1F-A」が混ざる
担当者 ユーザー選択 自分の担当だけを見る一覧に使う

製造:品目マスタ(/kintone/for/seizo)

項目 型 なぜその型か
品番 文字列(1行)・重複禁止 受注・在庫から引くキー
標準原価 数値 受注にルックアップでコピーして原価計算に使う
在庫数・安全在庫 数値 割れたら色を付ける(条件書式)
区分 ドロップダウン 製品/部品/材料。増えない

マスタ側の型が、そのまま下流のアプリに効きます。 標準原価を文字列にしていたら、受注アプリで原価の合計が出せません。マスタのフィールド設計を先に固めるのは、このためです。

どうしても型を変えたくなったら

運用後に「この項目、数値にしておけばよかった」となったときの手順です。

  1. 新しいフィールドを正しい型で追加する(名前は 賃料(新) などで区別)
  2. 既存レコードをCSVで書き出し、値を新しい列に移して取り込む
  3. 一覧・グラフ・絞り込み・計算式・JavaScript・プラグイン設定の参照を新しいフィールドに直す
  4. 現場に周知し、入力を新しいフィールドに切り替える
  5. 古いフィールドをまず非表示にして1か月様子を見る。問題なければ削除する

件数が多いときは、一覧からまとめて書き換えられる無料の一覧からの一括更新も使えます。3が抜けると、古い値のままのグラフが残ります。 運用中にやると半日〜1日仕事になるので、最初に型を決めます。

まとめ

  • 後から直せないのは「型」「フィールドコード」「重複禁止の後付け」の3つ。ここだけ先に決める
  • 項目を足すのは後からでよい。最初から完璧な一覧を作ろうとしない
  • 電話番号・郵便番号・品番は数値ではなく文字列。日付・金額・選択肢を文字列にしない
  • 選択肢が業務で増えるもの(取引先・品目・現場)はフィールドではなくマスタアプリ
  • フィールドコードは半角英小文字でそろえ、アプリをまたいで同じ意味には同じ名前を使う
  • キーの重複禁止はアプリを作った時点で付ける。後からは重複データがあると設定できない
  • テーブルは「その行だけを開いて誰かが仕事をするか」で判断する。するなら別アプリ
  • 計算フィールドは他アプリを参照できない。今日を基準にした残日数も、保存時にしか計算されないので標準では出せない

→ kintone導入支援の詳細 → 5章 アプリ設計の基本 → ルックアップの使い方と設計のコツ → kintone無料プラグイン一覧

よくある質問

kintoneでフィールドの型は後から変更できますか

できません。文字列(1行)で作った項目を、あとから数値や日付に変えることはできません。変えたい場合は、正しい型のフィールドを新しく追加し、CSVで書き出して値を移し、古いフィールドを非表示にしてから削除する、という手順になります。運用を始めてからだと、一覧・グラフ・ルックアップ・JavaScriptの参照も一緒に直すことになります。

フィールドコードは後から変えても大丈夫ですか

設定上は変えられますが、変えた瞬間に、そのコードを参照している計算式・一覧の絞り込み・JavaScript・プラグインの設定・CSVの取り込みファイル・APIの呼び出しが動かなくなります。運用開始後のコード変更は、実質「変えられない」と考えて、アプリを作るときに読める名前を付けてください。

電話番号や郵便番号は数値フィールドにすべきですか

文字列(1行)にしてください。数値フィールドにすると先頭の0が消え、桁区切りのカンマが入り、ハイフンを含む表記が入りません。数値フィールドは「足し算・掛け算・集計をする数」にだけ使います。社員番号・伝票番号・品番も同じ理由で文字列です。

選択肢はドロップダウンとラジオボタンのどちらにすればいいですか

選択肢が4つ以下で必ず1つ選ぶならラジオボタン、5つ以上ならドロップダウンが目安です。選択肢が20を超える、または選択肢そのものが業務で増減する(取引先・品目・現場)なら、フィールドではなくマスタアプリにしてルックアップで引きます。

サブテーブルはどんなときに使ってよいですか

明細が親と一緒にしか意味を持たず、行だけを取り出して検索・集計・承認しないときだけです。行ごとに担当者や期限を持たせたい、行の状態を管理したい、行を軸に集計したいと思った時点で、それは別アプリにすべき明細です。テーブルの行は1レコードの一部なので、行単位の権限・プロセス管理・通知は持てません。

宇田川 将也/ 代表取締役

2024年に総務省の地域活性化起業人として島根県海士町に着任。役場に住み込んで業務改善に従事し、kintoneで電子決裁や定期健診管理を構築しました。

経歴を見る

この記事について相談する

貴社・貴団体の状況に合わせて、最適な進め方をご提案します。

30分相談を予約する