株式会社COTSUBU
kintone

建設業の原価管理をkintoneで作る方法|実行予算と実際原価の差を現場ごとに見る

宇田川 将也|12分
kintone建設原価管理工事原価プラグイン

工事原価の管理で本当に知りたいのは、「この現場は実行予算に対して、いま何%使ったか」の1つです。これを見るために必要なのは、案件・発注・支払・日報の工数の4つを、同じ案件番号でつないで持つことだけです。kintoneならこの形を1ヶ月ほどで作れます。

実際に動かしている見本は建設会社のkintoneにあります。この記事は、その中の「原価」の部分をどう設計したかの話です。

工事原価をExcelで管理するときに詰まるところ

Excelが悪いわけではありません。1人で1現場を見ている間は、Excelのほうが速いです。詰まるのは、現場が増えて人が増えたときです。

詰まるところ 現場で起きること
ファイルが現場ごとに分かれている 全現場の原価をまとめるのに、毎回ファイルを開いて手で足す
発注書が紙・メール・FAXに散る 「発注済みだが原価表に入っていない」金額が常にある
日報が紙で、翌週に出てくる 労務費の反映が1週間遅れる
誰かが開いていると編集できない 現場から入力できず、事務所に戻ってからまとめて入れる
原価が固まるのが完工後 赤字に気づくのが引き渡しのあと

最後の一行が一番重い問題です。原価は「あとで集計するもの」ではなく「発注した瞬間に確定するもの」として持てると、予算超過に着工中に気づけます。

実行予算と実際原価の差を見るには、何を持てばよいか

工事原価は一般に、材料費・労務費・外注費・経費の4つに分けられます。この4つを「どこから入ってくるか」で並べると、必要なアプリが決まります。

原価の種類 どこで発生するか kintoneでの持ち方
材料費 資材の発注時 発注アプリに1発注=1レコード
外注費 協力会社への発注時 同上(業者名と工種を持つ)
労務費 自社の職人が現場に入った日 作業日報の作業時間 × 単価
経費 都度(仮設・運搬・保険など) 発注アプリに区分を足して同じ場所に

つまり新しく作るアプリは、発注と日報の2つです。実行予算は見積(受注時の金額の内訳)から持ってくるので、見積アプリがあれば足ります。

「予算」と「原価」を比べられる形にしておく

差を見るために最低限そろえたいのは、案件番号(すべてのアプリに同じ番号を持たせる)・工種または費目(予算と原価で同じ言葉を使う)・実行予算の金額・発注金額と支払予定日・支払状況の5つです。

2つめの「予算と原価で同じ言葉を使う」が、実は一番ここで失敗するところです。見積では「木工事」、発注では「大工」と書いていると、機械では突き合わせられません。工種はドロップダウンにして、見積・発注・工程・日報で同じ選択肢を使ってください。

アプリの持ち方

見本では6つのアプリを使っていますが、原価だけを見るなら次の4つです。

アプリ 1レコードの単位 主な項目
① 案件台帳 1現場 案件番号・現場名・施主・工種・着工日・完工予定日・受注金額・状況
② 見積 1見積 見積番号・案件番号・明細(工事項目・数量・単価・金額)・見積合計
③ 発注・原価 1発注 案件番号・現場名・業者名・工種・発注日・発注金額・支払予定日・支払状況
⑤ 作業日報 1人1日1現場 作業日・案件番号・現場名・作業者名・作業時間・天候・作業内容

原価をサブテーブルに持たない

「案件アプリの中に原価の明細テーブルを作る」形は、最初は楽です。ただ発注は1現場で何十行にもなり、次の3つができなくなります。

  • 業者ごとの発注額の集計(「今期、この協力会社にいくら出したか」)
  • 支払予定日での絞り込み(「今月払うもの」の一覧)
  • 支払状況ごとの色分け

サブテーブルの中身は、kintoneの一覧・絞り込み・グラフの対象になりません。「あとで横に集計したくなるもの」は別アプリにするのが基本です。判断の基準は6章 複数アプリのつなぎ方と5章 アプリ設計の基本にまとめています。

つなぎ方は、ルックアップ+関連レコード一覧

  • ルックアップ:発注アプリで案件番号を選ぶと、現場名が自動でコピーされます(→kintoneルックアップ機能の使い方)
  • 関連レコード一覧:案件を開くと、その現場の見積・発注・工程・日報が下に並びます

案件台帳の詳細画面はこの形です。

kintoneの案件台帳アプリの詳細画面。案件番号・現場名・施主・工種・着工日・完工予定日・受注金額が並び、下に「見積の履歴」「発注と原価」「工程」「作業日報」の関連レコード一覧が表示されている

ただし関連レコード一覧に合計は出ません。 レコードを並べるだけの機能です。合計を見る方法は次の2つです。

やり方 向いている場面
発注アプリのグラフ(集計)で、案件番号ごとに発注金額を合計する 全現場をまとめて見る。月次の会議
JavaScriptで案件の詳細画面に合計と消化率を出す 現場ごとに開いたその場で見る

グラフ機能の使い方はkintoneのグラフ・レポート機能にまとめています。

未払いと予算超過を、色で出す

数字が並んでいても、人は見ません。見てほしいものだけ色を変えるのが、原価管理を続けるコツです。

発注アプリの一覧では、支払予定日と発注金額に色を付けています。

kintoneの発注・原価アプリの一覧画面。現場名・業者名・工種・発注日・発注金額・支払予定日・支払状況が並び、支払状況が未払いの行の発注金額と支払予定日に色が付いている

これは無料プラグイン条件書式の設定だけで作っています。手順は4つです。

  1. アプリの設定 →「プラグイン」→「条件書式」の歯車アイコン
  2. 「+ ルールを追加」で「支払状況 が 未払い と等しい」を作る
  3. 色を付ける対象に「発注金額」「支払予定日」を選び、背景色を選ぶ
  4. 「保存する」→「アプリを更新」

日付や数値は文字の並びではなく大小で比べられるので、「発注金額が1000000より大きいなら濃い色」のような条件も作れます。色の付け方の考え方はkintoneの一覧で条件に合う行に色を付ける方法に詳しく書きました。

予算の消化率を詳細画面に出す(JavaScript)

案件の詳細画面に「実行予算に対して、発注済みの原価が何%か」を出す最小の例です。スペースフィールドを1つ置いておきます。

(() => {
  'use strict';
  const COST_APP = 3;          // 発注・原価アプリのID
  const KEY = '案件番号';
  const BUDGET = '実行予算';   // 案件アプリの数値フィールド
  const AMOUNT = '発注金額';
  const SPACE = 'cost-summary'; // スペースフィールドの要素ID

  kintone.events.on('app.record.detail.show', async (event) => {
    const el = kintone.app.record.getSpaceElement(SPACE);
    if (!el) return event;
    const no = event.record[KEY].value;
    const budget = Number(event.record[BUDGET].value || 0);

    const resp = await kintone.api('/k/v1/records', 'GET', {
      app: COST_APP,
      query: `${KEY} = "${String(no).replace(/"/g, '\\"')}" limit 500`,
      fields: [AMOUNT],
    });
    const cost = resp.records.reduce((s, r) => s + Number(r[AMOUNT].value || 0), 0);
    const rate = budget > 0 ? Math.round((cost / budget) * 100) : null;

    el.textContent =
      `発注済み ${cost.toLocaleString()}円 / 実行予算 ${budget.toLocaleString()}円` +
      (rate === null ? '' : `(${rate}%)`);
    el.style.color = rate !== null && rate > 100 ? '#c00' : '#333';
    return event;
  });
})();

30行ほどです。limit 500 を超える発注がある現場では、カーソルを使った取得に書き換える必要があります。JavaScriptカスタマイズの基本は13章 JavaScript・API・外部連携にまとめています。

実際の画面

案件台帳の一覧です。案件番号は年度ごとに自動で振られ(自動採番)、完工予定日までの残日数が自動で入ります(期限・残日数)。

kintoneの案件台帳アプリの一覧画面。案件番号・現場名・施主・工種・着工日・完工予定日・完工までの残日数・受注金額・状況が並んでいる

見積の明細には行番号が自動で振られ(テーブル行番号)、金額と見積合計は計算フィールドです。受注が決まったら単価と数量を編集できなくしています(条件付き入力禁止)。

kintoneの見積アプリの詳細画面。見積番号・現場名・案件番号・提出日・有効期限と、行番号つきの明細テーブル、見積合計が表示されている

データはすべて架空です。同じ画面は建設会社のkintoneで全部見られます。

正直に言っておく限界

限界 どうするか
会計ソフトとリアルタイムには繋がらない CSVで受け渡す。まずCSVで運用を固める
労務費の単価を人ごとに持つと給与情報になる 職種ごとの標準単価にして、個人単価は持たない設計が多い
原価の「締め」の概念がない 状況フィールドで「確定」を持ち、確定後は条件付き入力禁止で編集を止める
無料プラグインはパソコンの画面のみ対応 原価の入力は事務所で行う前提にする。現場からの入力は日報に寄せる
発注が数千件を超える現場 集計をグラフ機能に寄せ、JavaScriptでの全件取得は避ける

会計ソフトとの連携を最初から作り込むと、運用が始まる前に時間を使い切ります。まずは「発注した瞬間に原価が1件増える」状態を作るほうが、効果が出るのが早いです。労務費のもとになる作業時間は日報から入ってきます。日報の作り方は建設業の作業日報をkintoneでスマホ入力にする方法に、職人の配置と工程の管理は建設業の工程管理をkintoneで作る方法に分けて書きました。

進め方と費用

初回30分で業務を聞き、その場で画面の形を出します。そこから1〜4週目で構築し、動くアプリを現場の声で直します。ここまでが0円です(1業務1アプリまで、最大1か月)。1ヶ月後に使うか使わないかを決めていただき、使うと決めた場合だけ月額5万円から(最低12ヶ月)で改善と追加を続けます。

kintoneのライセンス料(スタンダードコース 1ユーザー月1,800円・税抜/最小10ユーザー)は別途、サイボウズ社とのご契約です。使い続けるといくらかかるかは2章 費用の全体像にまとめています。

まとめ

  • 知りたいのは「実行予算に対して何%使ったか」の1つ。そのために案件・発注・日報を同じ案件番号でつなぐ
  • 工種・費目の言葉を見積と発注でそろえる。ここがずれると比較できない
  • 原価は案件のサブテーブルではなく別アプリに持つ。業者別・支払予定日での集計ができるようになる
  • 関連レコード一覧に合計は出ない。合計はグラフ機能かJavaScriptで出す
  • 未払いと予算超過は条件書式で色を付ける。見てほしいものだけ色を変える
  • 会計ソフトとの連携はCSVから。作り込みは運用が回ってから

→ 建設会社のkintone(実際の画面つき) → 建設業の工程管理をkintoneで作る方法 → 建設業の作業日報をkintoneでスマホ入力にする方法 → kintone導入支援の詳細 → kintone無料プラグイン一覧 → 製造業の在庫管理をkintoneで作る方法 → 賃貸管理(入居中〜退去・原状回復)をkintoneで作る方法

よくある質問

kintoneで工事原価の管理はできますか

できます。ただし「原価管理ソフト」がそのまま入っているわけではなく、案件台帳・発注(原価)・作業日報の3つを自分で作り、案件番号でつなぐ形になります。実行予算と実際原価の差を見るのが目的なら、この3つで足ります。

原価は案件アプリのサブテーブルに持ってはいけませんか

件数が少なければ持てますが、おすすめしません。発注は1案件に何十行も増え、業者ごとの集計や支払状況の絞り込みができなくなるためです。発注は別アプリにして案件番号でひも付けると、業者別・工種別の集計ができます。

関連レコード一覧に原価の合計は出せますか

標準では出せません。関連レコード一覧はレコードを並べる機能で、合計は表示されません。合計を出したい場合は、発注アプリのグラフ(集計)で案件番号ごとに合計するか、JavaScriptで詳細画面に合計を表示します。

会計ソフトと連携できますか

CSVでの受け渡しが現実的です。発注・原価のデータを会計側の形式で書き出せるようにしておくと、入力が二重になりません。APIのある会計ソフトなら直接つなげますが、まずはCSVで運用を固めることをおすすめします。

作るのにいくらかかりますか

構築は1業務1アプリまで最大1か月0円です。使うと決めていただいた場合だけ、月額5万円から(最低12ヶ月)で改善と追加を続けます。kintoneのライセンス料(スタンダードコース 1ユーザー月1,800円・税抜/最小10ユーザー)は別途、サイボウズ社とのご契約です。

宇田川 将也/ 代表取締役

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

経歴を見る

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

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

30分相談を予約する