この記事でいう「工程管理」は、製造工程(切断→曲げ→溶接→検査など)の進捗をリアルタイムで追跡するアプリを指しています。IT業界のプロジェクト管理ツールとは異なり、製造現場の作業ステータスを全員で共有することを目的としています。
工程の進捗をExcelで管理していると、こんなことが起きませんか。
「どのファイルが最新版かわからない」「現場からの入力が遅れて午後になっても状況がつかめない」「月末になって手集計に1日かかる」。
私が製造業の生産管理を担当していた7年間、この問題を繰り返してきました。工程表のExcelファイルが3つ4つ乱立して、担当者が自分のPCで更新したまま誰とも共有されない。これ、どこの現場でもある話ではないでしょうか。
アプリにしてしまえば全員が同じ画面を見られる、と頭ではわかっていても「どうやって作ればいいのか」という壁があって動けない方も多いと思います。
この記事では、工程管理アプリを自作する方法を2つのルート(ノーコードとPython)に絞って解説します。読み終えたあとには「自分の現場ではどちらを選ぶべきか」が判断できる状態になるはずです。
工程管理アプリを自作する前に確認すること
工程管理で本当に管理すべき項目
アプリを作る前に、管理する項目を決める必要があります。ここを曖昧にしたまま作り始めると、後から「この項目がない」「使いにくい」という事態になります。
製造現場での工程管理に最低限必要な項目は以下です。
| 項目 | 内容例 |
|---|---|
| 工程名 | 切断・曲げ・溶接・検査 |
| 担当者 | 田中・鈴木・佐藤 |
| 予定日時 | 2026/05/07 10:00 |
| 実績日時 | 2026/05/07 11:30 |
| ステータス | 未着手 / 進行中 / 完了 / 異常 |
| 備考 | 材料遅延あり、など |
「製品番号」や「ロット番号」を加えるかどうかは現場次第ですが、まず上記6項目が揃っていれば工程の流れを追うことはできます。
小さく始めて、使いながら項目を増やしていくのが一番うまくいくパターンです。最初から完璧なものを作ろうとして挫折するより、「まず動く」を優先するのが得策です。
「Excelで十分では?」という疑問への回答
この記事を読んでいる方の中には、「そもそもExcelのままじゃだめなのか」と思っている方もいるかもしれません。
実際、私のまわりの製造現場でも「Excelで十分」という人は多いです。ただ、次のどれかに当てはまるなら、アプリ化を真剣に考えた方がいいと思っています。
- 工程表の最新版がどれかわからなくなったことがある
- 複数人が同時に開いてしまい、上書き競合が起きたことがある
- 現場のPC・タブレットからExcelを開かせるのが難しい
- 月次・週次で集計作業に時間がかかっている
この状態が続くと、ミスが起きたときの原因追跡が難しくなりますし、管理者が「今どうなっているか」をリアルタイムで把握できないまま意思決定しなければならなくなります。
自作の方法は2つ:ノーコード vs Python
工程管理アプリを自分で作る方法は、大きく2つに分かれます。
ノーコード(AppSheet・kintone・Power Apps)のメリット・デメリット
メリット
- プログラミングの知識がなくても作れる
- 見た目が整ったUIが最初から使える
- スマートフォン対応が標準でついてくる
- チームメンバーへの展開がしやすい
デメリット
- 月額費用がかかる(AppSheetは無料枠あり、kintoneは1ユーザーあたり約1,500円〜)
- カスタマイズ範囲に制限がある
- 自社のExcelデータとの連携に手間がかかることがある
- ツール依存になるため、サービス終了・値上げのリスクがある
Python(Streamlit・Flask)のメリット・デメリット
メリット
- 費用がゼロ(サーバー代も社内LANなら不要)
- カスタマイズが完全自由(既存ExcelのデータをCSVで読み込むなど)
- ChatGPTを使えばコードが書けなくても作れる
- 社内サーバーに置けるのでデータが外に出ない
デメリット
- 最初の構築に1〜3時間かかる
- 動かなくなったときに自分で直す必要がある
- 見た目のデザインが限られる
どちらを選ぶべきか:判断基準チェックリスト
以下のどちらに当てはまるかで判断するのが一番わかりやすいです。
ノーコードを選ぶべきケース
- チーム全員がスマホで入力する場面がある
- 技術的なメンテナンスを自分以外の人に任せたい
- 導入後すぐに使わせる必要がある(1日でセットアップしたい)
Pythonを選ぶべきケース
- 既存のExcelやCSVデータをそのまま連携したい
- ツール費用をゼロにしたい
- ChatGPTを使った自動集計など、独自機能を追加したい
- 社内ネットワーク内だけで使うのでクラウド接続が難しい
どちらが正解かは現場によって違います。まず「費用をかけたくない+Excelデータ連携が必要」ならPython、「技術に自信がない+スマホ対応が必要」ならノーコードで始めるのがおすすめです。
ノーコードで工程管理アプリを作る手順(AppSheet編)
AppSheetで必要な準備(Googleスプレッドシート設計)
AppSheetはGoogleスプレッドシートをデータベースとして使います。準備するのはシート1枚だけです。
Googleスプレッドシートに以下の列を作ります。
ID | 工程名 | 担当者 | 予定日 | 実績日 | ステータス | 備考
1行目にこのヘッダーを入れたら、AppSheet(appsheet.com)でGoogleアカウントでログインし、「Create → App → Start with existing data」でそのシートを選択します。
AppSheetが自動でアプリの画面を生成してくれます。あとは「ステータス」列の入力タイプを「ドロップダウン」に変更して、「未着手」「進行中」「完了」「異常」の選択肢を設定するだけです。
工程ステータス管理の画面作成手順
- Tableビュー: 工程一覧をテーブルで表示(管理者が全体を確認する画面)
- Formビュー: 担当者がスマホからステータスを入力する画面
Shareボタンからチームメンバーにメールで招待するだけで、スマホから工程状況を入力できるようになります。
Googleアカウントを持っている人数が10人以下であれば、AppSheetは無料プランの範囲内で使えます。大きな費用をかけずに試せるので、まず動くものを作ってみたい方にはこのルートが向いています。
Pythonで工程管理アプリを作る手順(Streamlit編)
必要な環境とインストール
Pythonがインストールされていれば、Streamlitは以下のコマンド1行で使えます。
pip install streamlit pandas
Pythonのインストール方法はWindowsPCでPythonを始める方法で詳しく解説しています。
工程ステータス管理の最小コード(コピペOK)
以下は工程の一覧表示とステータス更新ができる最小構成のコードです。28行で動きます。
import streamlit as st
import pandas as pd
# 工程データの初期設定(初回起動時のみ)
if "processes" not in st.session_state:
st.session_state.processes = pd.DataFrame({
"工程名": ["切断", "曲げ", "溶接", "検査"],
"担当者": ["田中", "鈴木", "佐藤", "山田"],
"ステータス": ["未着手", "未着手", "未着手", "未着手"],
"備考": ["", "", "", ""]
})
st.title("工程管理ボード")
# ステータス更新フォーム
with st.form("update"):
process = st.selectbox("工程を選択", st.session_state.processes["工程名"])
status = st.selectbox("ステータス", ["未着手", "進行中", "完了", "異常"])
note = st.text_input("備考(任意)")
submitted = st.form_submit_button("更新する")
if submitted:
idx = st.session_state.processes[
st.session_state.processes["工程名"] == process
].index[0]
st.session_state.processes.at[idx, "ステータス"] = status
st.session_state.processes.at[idx, "備考"] = note
st.success(f"「{process}」を「{status}」に更新しました")
# 工程一覧の表示
st.subheader("現在の工程状況")
st.dataframe(st.session_state.processes, use_container_width=True)
このコードを app.py という名前で保存して、以下のコマンドで起動します。
streamlit run app.py
ブラウザが自動で開き、工程ボードが表示されます。工程名・ステータス・備考をフォームから更新すると、下の一覧テーブルにリアルタイムで反映されます。
このコードは「動く最小構成」なので、CSVへの保存機能やExcelとの連携はまだ含まれていません。また、st.session_stateを使っているため、アプリを停止・再起動するとデータが初期化されます。実運用ではCSVへの書き出しやSQLiteなどのデータベース連携が必要になります。まず動きを確認してから、必要な機能を追加していくのが一番うまく進みます。
より本格的な実装(CSV保存・Excel出力・複数ユーザー対応・ガントチャート)については、Streamlitで業務アプリを作る方法で詳しく解説しています。
LAN内で社員全員が使えるようにする方法
Streamlitは起動したPCのIPアドレスを使って、同じLAN内の別端末からアクセスできます。起動コマンドを以下に変えるだけです。
streamlit run app.py --server.address 0.0.0.0
起動後にターミナルに表示される「Network URL」(例:http://192.168.1.10:8501)を社内チャットやメールで共有すれば、他のPCやタブレットからブラウザで開けます。サーバーもクラウドも不要で、自分のPCを起動したままにしておくだけです。社内ネットワーク内で完結するので、データが外部に出る心配もありません。
現場で使われるアプリにするための設計ポイント
アプリを作っても「結局誰も使わなかった」というのは、製造業の現場でよくある失敗パターンです。生産管理7年の経験で見てきた「使われないアプリ」に共通していた問題は3つです。
入力のハードルを下げる(スマホ対応・選択肢式入力)
現場の作業者が「入力に手間がかかる」と感じた瞬間に、Excelの手書きに戻ります。自由記述の入力欄は最小限にして、ステータスは必ずドロップダウン選択にしましょう。担当者名も手打ちではなく選択肢から選べるようにします。
Streamlitは st.selectbox() を使えば選択肢式の入力に変えられます。AppSheetも「Enum」型を使えば同様の設定ができます。
管理者が見やすい集計・可視化の工夫
進捗状況を一目で把握できる画面がないと、管理者が「結局自分でExcelで集計する」という状況に戻ります。最低でも「ステータス別の工程数(完了:3件、進行中:2件、未着手:1件)」が一目でわかる表示を作りましょう。Streamlitなら st.metric() や st.bar_chart() を使えば数行で追加できます。
定着させるための展開方法
作ったアプリを社内で使ってもらう展開手順については、社内の非エンジニアにPythonツールを展開する方法で詳しくまとめています。「使われない」を防ぐ具体的な説明方法も書いているので、合わせて確認しておくのをおすすめします。
よくある質問
費用はかかるか?
Pythonを使う場合は費用ゼロです。Streamlit・Flaskはともに無料で使えます。LAN内公開であればサーバー費用も不要です。
AppSheetはGoogleアカウントを持っているユーザー数が10名以下であれば無料プランで使えます。10名を超えると有料プランへの移行が必要です(月額数百〜数千円/ユーザー)。※プラン構成は変更されることがあるため、最新情報はAppSheet公式サイトで確認してください。
kintoneは初期費用が必要で、標準コースで月額1,500円/ユーザーが目安です。機能が豊富な分、費用も高くなります。
プログラミング未経験でも作れるか?
Streamlitのコードは、ChatGPTに「こんな画面を作りたい」と伝えれば雛形を出してくれます。コードを読めなくても、コピーして動かすことは十分できます。
ただし、エラーが出たときに自分で直すのは最初は難しいです。「動かない場合にChatGPTにエラー文を貼り付けて聞く」というサイクルで進めると、プログラミング未経験でも動くものを作れます。コードを書かずにAIだけで業務ツールを作る方法は、AIで業務ツールを作る方法でも詳しく解説しています。
kintoneとAppSheetどちらがよいか?
Googleアカウントが社内に浸透しているならAppSheetが導入しやすいです。Microsoftアカウント(Office365)が主流なら、Power AppsがAppSheetと同様のことができます。
kintoneはカスタマイズ性が高い分、設定の自由度があります。ただし導入・設定コストも高いので、まずはAppSheetで試してみて、物足りなければkintoneを検討するのが現実的なルートです。
まとめ:自分の現場に合った方法を選ぼう
- ノーコード(AppSheet): スマホ対応重視・費用は若干かかる・設定は簡単
- Python(Streamlit): 費用ゼロ・カスタマイズ自由・最初の構築に少し時間がかかる
どちらにしても、最初から完璧なものを作ろうとしないことが大事です。まず「工程名・担当者・ステータス」の3項目だけ管理できる画面を作って、使いながら改善していく。このサイクルで進めた現場の方が、最終的にうまくいっているケースが多いです。
ExcelのバージョンがN個に分裂したまま月末集計を繰り返す状態は、作業ミスが起きてから本格的に動くことになります。そうなってからでは、対応のコストが何倍にもなります。
まず1つ、動くものを作ってみてください。
関連記事・次の一歩
- Streamlitで業務アプリを作る詳しい手順 → 【製造業Python】Streamlitで業務アプリを作る方法
- FlaskでLAN公開ツールを作る方法 → Flask 社内ツール 作り方
- 工程管理以外の業務もWebアプリ化する → 製造業でWebアプリを自作する方法
- Pythonを製造業全体で活用する全体像 → 製造業でPythonを導入するとどう変わるか
- 作ったアプリを社内展開する手順 → 社内の非エンジニアにPythonツールを展開する方法