先に正直なところを書きます。kintoneの標準機能に、ガントチャートの表示はありません。 ただし工程管理で本当に事故になるのは「工程表がきれいに引けないこと」ではなく、同じ職人を2つの現場に入れてしまうことです。そこはkintoneで止められます。
この記事では、ガントが要る場合/要らない場合を分けたうえで、重なりを防ぐ作り方を書きます。実際に動かしている見本は建設会社のkintoneにあります。
ガントチャートは、本当に要るのか
要る/要らないを、用途で分けます。
| やりたいこと | ガントが要るか | kintoneでどうするか |
|---|---|---|
| 施主・元請に見せる工程表を作る | 要る | Excelや専用ツールで作図。kintoneは実績の記録に使う |
| 作業どうしの前後関係(先行・後続)を管理する | 要る | 標準では扱えない。有償プラグインか外部ツール |
| 今週どの現場に誰が入るかを知る | 要らない | 一覧を「開始」で並べ替え、担当職人で絞り込む |
| 職人のダブルブッキングを防ぐ | 要らない | 保存前に期間の重なりを判定して止める |
| 遅れている作業を見つける | 要らない | 進捗が「遅延」の行を色で出す |
| 現場ごとの作業の進み具合を見る | 要らない | 案件台帳の関連レコード一覧に工程を並べる |
下の4つ、つまり日々の運用で毎日見るものは、一覧と色分けで足ります。上の2つ、つまり対外的な工程表と、前後関係のある工事計画は、kintoneの標準では作れません。
ここを混ぜて「kintoneで工程表を作りたい」と始めると、たいてい途中で止まります。「工程表の作図」と「工程の管理」は別のものとして分けてください。
カレンダー表示でできること・できないこと
kintoneの一覧には、表形式のほかにカレンダー形式があります。
| できること | できないこと |
|---|---|
| 日付フィールドを1つ基準に、その日のレコードを升目に出す | 開始から終了まで横棒でつなぐ |
| 升目に出す項目(作業名など)を選ぶ | 作業どうしの依存関係を線で結ぶ |
| 絞り込み条件を付けて、現場や職人でしぼる | 複数の日付フィールドを同時に見る |
| 月をまたいで前後に移動する | 1日の中の時間帯を表示する |
「その日に始まる作業」は見えるが、「その日に動いている作業」は見えない、と考えるのが正確です。1日で終わる作業が中心ならカレンダーで足ります。数日〜数週間またぐ作業が中心なら、一覧を「開始」で並べ替えて見るほうが実用的です。
「期間が重なる」とはどういう条件か
職人のダブルブッキングを防ぐには、期間の重なりを判定します。ここを間違えると、動いているように見えて穴が開きます。既存の予定(9/22〜9/24)に対して、新しい予定がどこに入るかを並べます。
既存の予定 |----------| 9/22 ── 9/24
A 前にある |--| 9/18 ── 9/20 重ならない
B 後ろに食い込む |------| 9/23 ── 9/26 重なる
C すっぽり入る |--| 9/23 ── 9/23 重なる
D またぐ |---------------| 9/20 ── 9/28 重なる
E 後ろにある |--| 9/26 ── 9/28 重ならない
この5つを1つの式で拾える条件が、次の1行です。
既存の開始 < 自分の終了 かつ 自分の開始 < 既存の終了
建設の工程でとくに見逃されるのが D です。「養生で1週間押さえる」ような長い作業が、その中に入っている短い作業と衝突しても気づけません。判定の考え方はkintoneで予約のダブルブッキングを防ぐ方法に詳しく書いています。
端(さかいめ)の扱いを先に決める
「9/24に終わる作業の次に、9/24から始まる作業を入れてよいか」は、業務で答えが違います。
| 持ち方 | ふつうの答え | 理由 |
|---|---|---|
| 日付(◯日〜◯日)で持つ | 入れてはいけない | その日は一日その現場にいる |
| 日時(◯時〜◯時)で持つ | 入れてよい | 午前でA現場、午後でB現場がある |
半日単位の応援がある会社は日時で持ってください。 日付で持つと「午前だけ手伝う」が登録できなくなります。見本では日時で持っています。
JavaScriptで書くとどうなるか
同じ職人(ユーザー選択)の工程が重なるときに、保存前に止める最小の例です。
(() => {
'use strict';
const WORKER = '担当職人'; // ユーザー選択
const START = '開始'; // 日時
const END = '終了'; // 日時
kintone.events.on(
['app.record.create.submit', 'app.record.edit.submit'],
async (event) => {
const r = event.record;
const users = r[WORKER].value || [];
if (!users.length || !r[START].value || !r[END].value) return event;
if (r[START].value >= r[END].value) {
r[END].error = '終了が開始より前になっています';
return event;
}
const codes = users.map((u) => `"${u.code.replace(/"/g, '\\"')}"`).join(', ');
// 重なる = 既存の開始 < 自分の終了 かつ 自分の開始 < 既存の終了
const query =
`${WORKER} in (${codes})` +
` and ${START} < "${r[END].value}"` +
` and ${END} > "${r[START].value}" limit 10`;
const resp = await kintone.api('/k/v1/records', 'GET', {
app: kintone.app.getId(), query, fields: ['$id', '作業名'],
});
const selfId = String(kintone.app.record.getId());
const hit = resp.records.filter((x) => x.$id.value !== selfId);
if (hit.length > 0) {
r[WORKER].error =
`同じ職人に重なる予定があります(レコード番号 ${hit[0].$id.value})`;
}
return event;
}
);
})();
40行ほどです。重なり判定をクエリの and 2つに落とし込んでいるのがポイントで、全件を取ってきて突き合わせる必要がありません。ユーザー選択は複数人を持てるので in で書きます。JavaScriptの基本は13章 JavaScript・API・外部連携にまとめています。
実運用で足りなくなるところ
| 足りないところ | 何が必要になるか |
|---|---|
| 中止・保留の工程まで止めてしまう | 進捗の条件をクエリに追加 |
| 「止める」ではなく「確認して保存できる」にしたい | 確認ダイアログと、無視して保存する経路 |
| 一覧のインライン編集からの保存 | app.record.index.edit.submit を別に指定 |
| 通信に失敗したとき | 保存を止めるべきではない(チェックのせいで現場が止まる) |
最後は見落とされがちです。現場の電波が悪いときにチェックが失敗して保存できなくなると、職人は「kintoneが壊れた」と受け取り、翌日から使われなくなります。
JavaScriptでもプラグインでも避けられない限界
どちらもブラウザ側の判定です。 2人がまったく同じ瞬間に保存した場合、両方が「重なりなし」と判定してすり抜ける可能性があります。工程を入れるのが工務担当の1〜2人なら実質起きませんが、各現場監督が同時に入れる規模になったら、入力の窓口を絞る運用のほうが確実です。
設定だけで済ませる:期間重複チェック(無料)
COTSUBUが公開している無料プラグイン期間重複チェックは、上の内容を設定画面だけで実現します。
- 同じ対象(職人・重機・現場など)で、期間が重なる予定を保存前に検出
- 日付(◯日〜◯日)と日時(◯時〜◯時)の両方に対応
- 「終了と次の開始が同じ」を重なりとみなすかを選べる
- 対象は複数の項目の組み合わせにできる。ユーザー選択にも対応
- ルールごとに「保存を止める」か「確認して保存できる」かを選べる
- 調べる途中で通信に失敗した場合は、保存を止めない
無料・会員登録不要・外部と通信しません。 kintoneの公式APIだけで動くので、閉じた社内ネットワークでも使えます。設定は4ステップです。
- アプリの設定 →「プラグイン」→「期間重複チェック」の歯車アイコン
- 「+ ルールを追加」で、対象に「担当職人」、期間に「開始」「終了」を選ぶ
- 端の扱いと、「保存を止める」か「確認して保存できる」かを選ぶ
- 「保存する」→「アプリを更新」
建設では、対象を変えたルールを複数作るのが実用的です。「担当職人」で人の重複を、「重機名」で重機・車両の取り合いを、「現場名+工種」で同時に進められない作業の重なりを、それぞれ別のルールとして止められます。
実際の画面
工程アプリの一覧です。進捗が「遅延」の行は赤くしています(条件書式)。

工程は案件台帳とつながっているので、現場を開けばその現場の作業だけが並びます。データはすべて架空です。全部の画面は建設会社のkintoneで見られます。
運用を続けるためのコツ
- 工程の粒度を細かくしすぎない。 1日単位で全職人を入れると入力が終わりません。「誰がどの現場に何日入るか」の単位から始めるのが続きます
- 遅延は手で付けない。 進捗が「完了」でない、かつ終了が過ぎている、を色の条件にします(期限・残日数や条件書式)
- 色は2色まで。 遅延の赤と、今週の黄色くらいで止めないと、どこも色が付いて誰も見なくなります(→一覧で条件に合う行に色を付ける方法)
- 入力する人を決める。 工務担当が入れて、現場監督は見るだけ、という形が立ち上がりやすいです
工程の「予定」に対する「実績」は、作業日報から入ってきます。日報の作り方は建設業の作業日報をkintoneでスマホ入力にする方法に、そこから労務費を原価につなぐ話は建設業の原価管理をkintoneで作る方法に書きました。
進め方と費用
初回30分で業務を聞き、そこから1〜4週目で構築します。ここまでが0円です(1業務1アプリまで、最大1か月)。1ヶ月後に使うか使わないかを決めていただき、使うと決めた場合だけ月額5万円から(最低12ヶ月)で改善と追加を続けます。kintoneのライセンス料(スタンダードコース 1ユーザー月1,800円・税抜/最小10ユーザー)は別途、サイボウズ社とのご契約です。期間の目安はkintone導入にかかる期間にまとめています。
まとめ
- kintone標準にガントチャート表示はない。対外的な工程表の作図は別のツールに残す
- 日々の運用(誰が今週どこに入るか、遅れはどれか)は一覧と色分けで足りる
- カレンダー表示は「その日に始まる作業」は見えるが、期間を横棒でつなげない
- 事故になるのは職人の重複。判定は「既存の開始 < 自分の終了 かつ 自分の開始 < 既存の終了」の1行
- 半日の応援があるなら、工程は日付でなく日時で持つ
- 設定だけで済ませるなら無料の期間重複チェック。ユーザー選択も対象にできる
→ 建設会社のkintone(実際の画面つき) → 建設業の原価管理をkintoneで作る方法 → kintone導入支援の詳細 → kintoneで予約のダブルブッキングを防ぐ方法 → 町工場の生産管理をkintoneで作る方法(ERPとの線引き) → 不動産の反響・追客管理をkintoneで作る方法
よくある質問
kintoneの標準機能でガントチャートは表示できますか
できません。一覧の表示形式は表形式とカレンダー形式で、期間を横棒で表す表示はありません。ガントチャートが必要な場合は、有償のガントチャート系プラグインを入れるか、工程表の作図だけはExcelや専用ツールに残す形になります。
カレンダー表示では何ができますか
日付フィールドを1つ基準にして、その日のレコードをカレンダーの升目に表示できます。ただし「着工日から完工日まで」を横棒でつなぐ表示はできません。開始日を基準にすれば「その日に始まる作業」は見えます。
同じ職人の予定が重なるのを、kintoneの標準機能で止められますか
止められません。標準の「値の重複を禁止する」は1つのフィールドの値が同じかどうかを見る機能で、「期間が重なっているか」は判定できません。JavaScriptか、無料プラグインの期間重複チェックを使います。
協力会社の職人もkintoneのユーザーにする必要がありますか
必要ありません。ユーザーにしない場合は、担当職人をドロップダウンや文字列で持ちます。期間重複チェックはユーザー選択でも文字列やドロップダウンでも対象にできます。ライセンス費用を抑えたい場合は、社員だけユーザーにする構成が多いです。
作るのにいくらかかりますか
構築は1業務1アプリまで最大1か月0円です。使うと決めていただいた場合だけ、月額5万円から(最低12ヶ月)で改善と追加を続けます。kintoneのライセンス料(スタンダードコース 1ユーザー月1,800円・税抜/最小10ユーザー)は別途、サイボウズ社とのご契約です。


