株式会社COTSUBU
kintone

建設業の工程管理をkintoneで作る方法|職人の重複を防ぐ。ガントチャートは要るのか

宇田川 将也|11分
kintone建設工程管理ダブルブッキングプラグイン

先に正直なところを書きます。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ステップです。

  1. アプリの設定 →「プラグイン」→「期間重複チェック」の歯車アイコン
  2. 「+ ルールを追加」で、対象に「担当職人」、期間に「開始」「終了」を選ぶ
  3. 端の扱いと、「保存を止める」か「確認して保存できる」かを選ぶ
  4. 「保存する」→「アプリを更新」

建設では、対象を変えたルールを複数作るのが実用的です。「担当職人」で人の重複を、「重機名」で重機・車両の取り合いを、「現場名+工種」で同時に進められない作業の重なりを、それぞれ別のルールとして止められます。

実際の画面

工程アプリの一覧です。進捗が「遅延」の行は赤くしています(条件書式)。

kintoneの工程アプリの一覧画面。現場名・作業名・開始・終了・担当職人・進捗が並び、進捗が遅延の行の背景がうすい赤になっている

工程は案件台帳とつながっているので、現場を開けばその現場の作業だけが並びます。データはすべて架空です。全部の画面は建設会社の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ユーザー)は別途、サイボウズ社とのご契約です。

宇田川 将也/ 代表取締役

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

経歴を見る

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

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

30分相談を予約する