射出成形機のショットごとの条件と検査結果の記録から不良が出そうなショットを予測し、条件の調整の候補を生産の担当へ出す
射出成形機のショットごとの条件と外観検査の結果から、不良が出そうなショットを予測します。点数の上がった成形機について、押し上げた条件と、過去に良品が続いた条件の帯を並べ、調整の候補として生産の担当へ出します。
- 生成AI
- ChatGPT/Claude/Gemini
- 連携・自動化
- Python
- 対象業界
- 製造
- 対象部門
- 生産/研究開発
- 対象業務
- 内容確認・チェック/集計・分析
- 主な課題
- データ分析に時間がかかる/判断に時間がかかる/属人化している
- AIで行う処理
- 予測
- 主な効果
- 判断支援/属人化解消/工数削減
- 導入難易度
- ★★★★★
- 実装レベル
- 本格構成
- 費用感
- RAG・個別開発(大)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- シフトの始めと途中に、現場の担当が各成形機の画面で直近の成形条件のトレンドを見る
- 外観検査機の不良の数を見て、不良が増えている成形機を探す
- 不良が増えていれば、その成形機の直近数百ショットの条件のログを書き出し、表で振れを探す
- 材料の乾燥機の記録と、材料ロットの切り替わりの時刻を確かめる
- 生産技術の担当に連絡し、どの条件を調整するかを相談する
- 生産技術の担当が過去の同じ金型の条件を思い出すか、過去の記録を探して調整の幅を決める
- 条件を変えた内容と理由を、成形の日報に書く
- 自動15分ごとに、各成形機の直近のショットの条件のログと、外観検査の結果を集める
- 自動Python がショットごとに条件の特徴量を作る。直近の値に加えて、直近50ショットの平均と傾きを足す
- 自動勾配ブースティングのモデルが、そのショットが不良になるおそれを0〜1の点数で出す
- 自動成形機ごとに直近50ショットの点数を集計し、しきい値を超えた成形機に印を付ける
- 自動印の付いた成形機について、同じ金型・同じ材料で過去に良品が続いたときの条件の帯と、いまの値を並べる
- 自動Claude API が、並べた表から生産技術の担当へ渡す申し送りの文面を作る
- 人現場の担当が、印の付いた成形機を見に行き、部品と成形機の状態を確かめる
- 人生産技術の担当が、調整の候補を見て、条件を変えるかを決める。変えるのは人
- 人変えた内容と、変えなかった理由を記録する
- 自動その後の不良の数を記録し、印が当たったか外れたかを残す
各工程の詳しい説明を読む
- シフトの始めと途中に、現場の担当が各成形機の画面で直近の成形条件のトレンドを見る
- 外観検査機の不良の数を見て、不良が増えている成形機を探す
- 不良が増えていれば、その成形機の直近数百ショットの条件のログを書き出し、表で振れを探す
- 材料の乾燥機の記録と、材料ロットの切り替わりの時刻を確かめる
- 生産技術の担当に連絡し、どの条件を調整するかを相談する
- 生産技術の担当が過去の同じ金型の条件を思い出すか、過去の記録を探して調整の幅を決める
- 条件を変えた内容と理由を、成形の日報に書く
(a)不良が出てから調べ始める。 2番目の「不良が増えていれば」が、この流れの起点です。不良が増えるまでのあいだに、クッション量がじわじわ減っていた、計量時間が延びていた、という前触れは記録に残っていても、見る人がいません。 気づいたときには不良の箱が積まれています。
(b)振れに気づけるのが1人だけ。 「この金型でクッションが5ミリを切ると、そのうちショートが出る」という知識は、ベテランの頭の中にあります。同じ記録を見ても、ほかの担当には振れに見えません。
(c)20台分のログを追い切れない。 1台の数百ショットを表で見るのに数分かかり、20台を2シフトで見ると、それだけで1日が終わります。結局、不良が出た成形機だけを見ることになり、前触れの段階では誰も見ていません。
(d)過去の条件を探すのに時間がかかる。 「前にこの金型で良品が続いたときの保圧はいくつだったか」を調べるには、何か月も前のログを探します。探し当てるまでのあいだも、成形機は動いています。
- 【自動】 15分ごとに、各成形機の直近のショットの条件のログと、外観検査の結果を集める
- 【自動】 Python がショットごとに条件の特徴量を作る。直近の値に加えて、直近50ショットの平均と傾きを足す
- 【自動】 勾配ブースティングのモデルが、そのショットが不良になるおそれを0〜1の点数で出す
- 【自動】 成形機ごとに直近50ショットの点数を集計し、しきい値を超えた成形機に印を付ける
- 【自動】 印の付いた成形機について、同じ金型・同じ材料で過去に良品が続いたときの条件の帯と、いまの値を並べる
- 【自動】 Claude API が、並べた表から生産技術の担当へ渡す申し送りの文面を作る
- 【人】 現場の担当が、印の付いた成形機を見に行き、部品と成形機の状態を確かめる
- 【人】 生産技術の担当が、調整の候補を見て、条件を変えるかを決める。変えるのは人
- 【人】 変えた内容と、変えなかった理由を記録する
- 【自動】 その後の不良の数を記録し、印が当たったか外れたかを残す
8番目が、この設計の分かれ目です。 候補は「過去に良品が続いた帯」と「いまの値」の差で、変えれば不良が減るという保証ではありません。 材料の湿り、金型の摩耗、室温など、記録に無い理由で振れていることがあります。それを確かめるのは、成形機の前に立つ人です。
10番目を最初から組み込むのも、意図してのことです。 印の当たり外れが分からないと、しきい値を下げてよいのか上げるべきなのかが決まりません。
02今回想定するシステム構成
成形機20台の成形条件のログ(ショットごと) 外観の自動検査機(ショット番号付き) │ │ ▼【トリガー】15分ごとの定時実行 Python(pandas でショット番号により結合・特徴量の作成) │ 直近の値/直近50ショットの平均と傾き │ 金型ID・材料ロット・乾燥の経過時間 ▼ Python(scikit-learn の HistGradientBoostingClassifier) │ ショットごとの不良のおそれの点数(0〜1) ▼ 成形機ごとの集計 ── しきい値を超えたら印 │ ├──▶ 過去の良品の条件の帯(同じ金型・同じ材料)との比較表 │ ├──▶ Claude API ── 申し送りの文面(比較表から) ▼ 現場のモニター/生産技術の担当への通知 ▼ 【人が成形機を確かめ、条件を変えるかを決める】 ▼ その後の不良の数 ── 当たり外れの記録 ── 週1回の学び直し
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 実行環境 | Python(pandas・scikit-learn の HistGradientBoostingClassifier) | R、BigQuery ML |
| 生成AI | Claude API(比較表からの申し送りの文面) | OpenAI API、Gemini API |
| データの取得元 | 成形機の条件のログ、外観検査機の結果 | 成形機メーカーの集中管理の仕組み |
| 通知 | 現場のモニターと、生産技術の担当へのチャット | メール |
| 保存 | 工場内のデータベース | ファイルサーバー |
成形機にも検査機にも書き込みません。 この構成は、記録を読むだけです。成形機の条件のログの取り出し方は、メーカーと機種で違います。ショットごとの値がどの形で、どの間隔で取り出せるかを、最初に1台で確かめます。
モデルに HistGradientBoostingClassifier を選ぶ理由は3つあります。 1つ目は、欠けた値(NaN)をそのまま扱えることです。ドキュメントでは、学習のときに分岐点ごとに欠けた値のあるサンプルを左右どちらへ送るかを利得から学び、予測のときもその向きに送るとされています。成形機の記録は、センサーの瞬断や機種の違いで項目が欠けることがあり、欠けを埋めずに学べるのは大きな利点です。
2つ目は、金型IDや材料のグレードのような区分の値を扱えることです。categorical_features の既定は 'from_dtype' で、データフレームの列の型が Categorical なら区分の値として扱われます。区分の種類は max_bins 以下である必要があり、約120型の金型はこの範囲に収まります。
3つ目は、不良が少数でも重みを付けられることです。class_weight='balanced' で、クラスの頻度に反比例する重みが自動で付きます。不良率が1%を切るラインでは、重みを付けないと「全部良品」と答えるのが最も楽になります。
03どうやって実装するのか
処理の起点を決める
15分ごとの定時実行にします。 不良の前触れになる条件の振れは、数十ショットから数百ショットかけて進みます。サイクルタイムが30秒前後なら15分で約30ショットで、振れの傾きを見るのに十分な数がたまり、かつ不良の箱が積まれる前に知らせられる間隔です。
ショットごとの即時の判定にはしません。 1ショットごとに印を付け外しすると、現場のモニターが点滅し続けて誰も見なくなります。判定の単位は成形機で、直近50ショットの点数の集計で印を付けます。
シフトの始めには、別に一覧を出します。 前のシフトで印の付いた成形機、段取り替えの予定、材料ロットの切り替わりの予定を並べ、引き継ぎのときに見る場所を1つにします。
モデルの学び直しは週に1回、日曜の夜に行います。 金型の補修や材料の切り替えで、良品の条件の帯は少しずつ動きます。毎回学び直すと、点数の目盛りが15分ごとに変わって比べられなくなります。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 成形条件のログ | 成形機ID、ショット番号、日時、シリンダーの各ゾーンの温度、金型温度、射出の圧力・速度、保圧、射出時間、計量時間、クッション量、サイクルタイム | 成形機の条件のログ |
| 外観検査の結果 | ショット番号、良否、不良の区分(ショート、バリ、ヒケ、ウェルド、銀条) | 外観の自動検査機 |
| 段取りの記録 | 金型ID、段取り替えの日時、立ち上げのショットの範囲 | 成形の日報の表 |
| 材料の記録 | 材料のグレード、ロット、乾燥機への投入時刻 | 乾燥機の記録と材料の受け払いの表 |
| 条件の変更の記録 | 誰が、いつ、どの条件を、いくつからいくつへ変えたか | 成形機の変更の履歴、または日報 |
質を決めるのは、2行目のショット番号です。 検査の結果がショット番号で成形条件と結び付かないと、どの条件のときに不良が出たかが分かりません。 検査機と成形機で番号の数え方がずれていないか(立ち上げの捨て打ちを数えるか、取り数の多い金型で1ショットに何個できるか)を、最初に確かめます。
3行目の立ち上げのショットは、学習から外します。 段取り替えの直後は条件が安定せず、不良が多いのは当然です。ここを学ぶと、モデルは「段取り替えの直後は危ない」という分かりきったことを最も強く覚えます。
5行目の条件の変更の記録は、当たり外れを読むために要ります。 印が付いた後に担当が条件を変えて不良が出なかったのか、変えずに不良が出なかったのかで、印の評価が逆になります。
データの取得方法を決める
成形機の条件のログは、成形機のメーカーが用意する取り出し方に従います。機種によって、ファイルでの書き出し、集中管理の仕組み経由、産業用の通信規格での取り出しなどがあり、どれが使えるかは機種で決まります。 この部分は、利用する成形機に応じた個別実装が必要です。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| ショットごとの条件 | 成形機のログ | 直近の値と、直近50ショットの平均・傾き |
| 良否と不良の区分 | 外観検査機 | 学習の正解のラベル |
| 金型ID・立ち上げの範囲 | 成形の日報 | 区分の特徴量、立ち上げの除外 |
| 乾燥の経過時間 | 乾燥機の記録 | 材料の湿りの代わりの特徴量 |
特徴量は「いまの値」と「振れ」を分けて作ります。 不良の前触れは値の大きさよりも、同じ金型で普段の値から離れていく動きに出ます。
| 特徴量 | 作り方 |
|---|---|
| いまの値 | ショットごとの各条件の値 |
| 普段からの離れ | 同じ金型の過去4週の良品のショットの中央値との差 |
| 直近の平均 | 直近50ショットの平均 |
| 直近の傾き | 直近50ショットの値に直線を当てた傾き |
| クッション量の最小 | 直近50ショットの最小値 |
| 乾燥の経過時間 | 乾燥機に投入してからの時間 |
| 段取り後のショット数 | 立ち上げを除いた後の通算 |
| 金型ID・材料グレード | 区分の値として持つ |
正解のラベルは「そのショットが外観検査で不良」とします。 不良の区分ごとに別のモデルを作ることもできますが、最初は区分をまとめて1つのモデルにします。 区分ごとにすると、ショートやバリは件数が少なすぎて学べません。
AIへ渡す前に整形する
- ショット番号の照合 … 成形機と検査機のショット番号を突き合わせ、ずれがあれば立ち上げの捨て打ちの数で補正します。照合できないショットは学習から外します
- 立ち上げの除外 … 段取り替えから決めた数のショットまでを外します。数は金型ごとに日報から取ります
- 止まった時間の扱い … 成形機が止まった後の再開の数十ショットは、条件が戻るまで別の印を付けます
- 単位とゾーンの数のそろえ … 機種によってシリンダーのゾーンの数が違います。ノズルに近い順に番号をそろえ、無いゾーンは欠けた値のままにします
- 普段の値の計算 … 金型ごとに過去4週の良品のショットの中央値を出します。平均ではなく中央値にするのは、立ち上げの残りの外れ値に引っ張られないためです
- 時間順の分割 … 学習と検証を時間の順に分けます
- 区分の値の型 … 金型IDと材料グレードの列を
Categoricalの型にします
4番目で欠けたゾーンを0で埋めないでください。 0度のゾーンは現実にはありえず、モデルはそれを「温度が極端に低い」と読みます。HistGradientBoostingClassifier は欠けた値をそのまま扱えるので、埋めないことが正しい扱いです。
6番目の分け方には TimeSeriesSplit を使います。 時間順のデータで、ほかの分け方は未来のデータで学習して過去を評価することになるため不適切とされています。特徴量に直近50ショットを使うので、gap を空けて、検証の手前のショットを学習に入れないようにします。 空けないと、検証の答えを学習のときに見てしまい、検証だけ当たるモデルになります。
AIに処理させる
この構成の「AI」は3つの部品に分かれます。 点数を出すのは勾配ブースティングのモデル、調整の候補の帯を出すのは集計、文面を作るのが生成AIです。生成AIは点数も候補の値も作りません。
| 部品 | させること | させないこと |
|---|---|---|
| HistGradientBoostingClassifier | ショットごとの不良のおそれの点数 | 条件をどう変えればよいかの答え |
| 集計(Python) | 同じ金型・材料で良品が続いた条件の帯と、いまの値の差 | 帯の外の値の提案 |
| Claude API | 比較表を読みやすい申し送りの文面にする | 数値の計算、新しい値の提案 |
しきい値は precision_recall_curve で決めます。 この関数は、しきい値ごとに精度(印を付けたうち本当に不良だった割合)と再現率(不良のうち印を付けられた割合)を返します。現場が1シフトに見に行ける成形機の数から、精度の下限を先に決め、その中で再現率が最も高いしきい値を選びます。 再現率だけを上げると印が増えすぎ、精度だけを上げると前触れを見逃します。
どの条件が点数に効いているかは、permutation_importance で確かめます。 1つの特徴量の値をばらばらに入れ替えて、モデルの成績がどれだけ落ちるかで重要さを測る方法です。学習に使っていない検証用のデータで計算します。 ドキュメントでは、学習用のデータで重要でも検証用で重要でない特徴量は過学習の原因になりうるとされています。
ここに落とし穴が1つあります。 シリンダーの各ゾーンの温度のように互いに似た動きをする特徴量は、1つを入れ替えても残りから情報が取れるため、両方の重要さが低く出るとされています。ドキュメントは、相関の強い特徴量をまとめて1つだけ残す方法を挙げています。ゾーンの温度は「平均」と「ノズル側と供給側の差」にまとめてから重要さを見ます。
| 生成AIにさせないこと | 理由 |
|---|---|
| 比較表に無い条件の値を書く | 帯の外の値は、誰も試していない条件 |
| 「この値に変えれば不良が減る」と書く | 因果はモデルから出ない |
| 不良の原因を断定する | 材料・金型・室温など、記録に無い理由がある |
| 成形機ごとの優先順位を入れ替える | 順番は点数の集計で決まっている |
指示内容を固定する
あなたは射出成形の工場で、生産技術の担当への申し送りを書く立場です。
渡された比較表の数値だけを使って、申し送りの文面を作ってください。
【比較表の中身】
- 成形機ID、金型ID、材料グレード
- 直近50ショットの不良のおそれの点数の平均と、しきい値
- 点数に効いている条件(最大3つ)について、
いまの値/同じ金型・材料で良品が続いたときの帯(下限〜上限)/差
- 直近の材料ロットの切り替わりと、乾燥の経過時間
- 直近の条件の変更の記録
【書き方】
- 1行目に、成形機ID・金型ID・点数の平均としきい値を書いてください。
- 次に、帯から外れている条件を、外れの大きい順に箇条書きで書いてください。
各行は「条件名:いまの値(良品が続いた帯 下限〜上限)」の形にしてください。
- 最後に、現場で確かめることを最大3つ、問いかけの形で書いてください。
例:「材料ロットの切り替わり後に、乾燥の経過時間は足りていたか」
【厳守事項】
- 比較表に無い数値を書かないでください。計算して新しい値を作らないでください。
- 「この値に変えれば不良が減る」「原因は〜です」と断定しないでください。
帯との差を事実として書くだけにしてください。
- 帯の外の値を、調整の候補として書かないでください。
- 成形機の順番や点数を書き換えないでください。
- 比較表に「帯なし」とある条件は、帯を推測せず「過去の良品の記録が不足」と書いてください。
- 申し送りは300字以内にしてください。
【比較表】{comparison_table}
「帯の外の値を候補に書かない」が、この指示でいちばん大事な一文です。 生成AIに「保圧が帯の下限より低い」と渡すと、親切に「保圧を下限より少し高い値に」と書き、具体的な数値まで添えることがあります。 その数値は誰も試していない条件です。候補は帯そのもので、帯の中のどこに合わせるかは生産技術の担当が決めます。
「帯なし」の扱いを明記するのは、新しい金型で必ず起きるからです。 良品の記録が少ない金型では帯が作れず、何も言わなければ生成AIは似た金型から帯を推測します。
出力形式を固定する
次の形のJSONを、成形機ごとに作ります。 score_* と conditions は Python が埋め、handover_text を Claude API の構造化出力(output_config.format に type: "json_schema")で受け取ります。
{
"machine_id": "M-07",
"mold_id": "D-1123",
"material_grade": "PP-T20",
"window_end_shot": 48213,
"score_mean": 0.27,
"threshold": 0.18,
"flag": true,
"conditions": [
{ "name": "cushion_mm", "current": 3.1, "band_low": 4.2, "band_high": 5.0,
"gap": -1.1, "importance_rank": 1 },
{ "name": "metering_time_s", "current": 8.9, "band_low": 7.6, "band_high": 8.3,
"gap": 0.6, "importance_rank": 2 }
],
"material_lot_changed_min_ago": 42,
"dryer_elapsed_h": 2.5,
"handover_text": "",
"human_action": { "changed": null, "detail": "", "by": "", "at": "" }
}
1つ目の理由は、数値と文面を別の層に置けることです。 conditions の数値は集計が出し、生成AIは handover_text だけを書きます。文面に出てくる数値が conditions と一致するかを、受け取った後に Python で照合できます。 一致しない数値があれば、文面を捨てて比較表だけを出します。
2つ目は、人の行動を同じ記録に残せることです。 human_action に、条件を変えたか、何を変えたかが入るので、印の後に何をしたかと、その後の不良の数を1行で結び付けられます。
3つ目は、しきい値を記録に含めることです。 学び直しでしきい値が変わっても、そのときの threshold が残っているので、過去の印の重さを読み直せます。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 成形機の条件のログ | 機種ごとの取り出し方(読み取りのみ) | ショットごとの条件 |
| 外観検査機 | 結果の書き出し(読み取りのみ) | 良否と不良の区分 |
| 成形の日報・乾燥機の記録 | 表の読み取り | 段取り・材料・乾燥 |
| Claude API | API呼び出し | 印の付いた成形機の申し送りの文面 |
| 現場のモニター | 画面の表示 | 成形機ごとの点数と印 |
| 生産技術の担当 | チャットへの通知 | 比較表と申し送り |
成形機の設定値への書き込みはつなぎません。 候補が誤っていたときに、そのまま量産に入るからです。この構成の出力は、人が成形機の前に立つきっかけまでです。
生成AIに回すのは、印の付いた成形機だけです。 20台のうち印が付くのは1シフトに数台の想定で、全台分の文面を作っても読まれません。
人が確認する
印が付いた成形機は、現場の担当が必ず見に行きます。 点数は記録から出したもので、成形機の前でしか分からないこと(金型の汚れ、ガスの抜け、材料の色の変化)があります。
- 成形機と部品を見る … 外観検査を通った部品にも、境目の兆し(薄いヒケ、小さなバリ)が出ていないかを見ます
- 比較表を読む … 帯から外れている条件と、材料ロットの切り替わりや乾燥の経過時間を合わせて読みます
- 変えるかを決める … 条件を変えるのは生産技術の担当です。変えない判断も記録します
- 印を外す … 確かめて問題がなければ、担当が印を外します。外した理由を一言書きます
3番目で「変えない」を記録することを省かないでください。 変えなかったのに不良が出なかったなら、その印は空振りだった可能性が高く、しきい値を見直す材料になります。
目標は、1台・1シフトをならして3分です。 印の付いていない成形機はモニターで点数を流し見るだけで、印の付いた成形機に時間を使います。
例外に対処する
| 起きること | 対応 |
|---|---|
| 成形機のログが届かない | その成形機は点数を出さず「記録なし」と表示。記録なしを良品と扱わない |
| ショット番号が検査機とずれる | 照合できないショットは点数を出さない。ずれが続けば担当に知らせる |
| 段取り替えの直後 | 立ち上げの範囲は点数を出さない |
| 新しい金型で帯が作れない | 帯の欄を「過去の良品の記録が不足」とし、点数だけを出す |
| 新しい材料グレード | 学習に無い区分。点数を参考値と表示し、印は付けない |
| センサーの値が物理的にありえない | 値を欠けた値として扱い、担当に知らせる |
| 生成AIの文面に比較表に無い数値がある | 文面を捨てて比較表だけを通知する |
| Claude API が応答しない | 比較表だけを通知する。点数と印は止めない |
| 印が1シフトに多すぎる | しきい値の見直しが先。全部を見に行かせない |
5行目の新しい材料グレードは、点数が当てにならない典型です。 モデルは学習したことのない区分について、ほかの区分から推し量った点数を出します。その点数で印を付けると、現場は根拠のない呼び出しを受けることになります。
最後の行は、運用の最初の数週で起きます。 印が多すぎる状態を放置すると、担当は印を見ても動かなくなります。
記録を残す
- 15分ごとの成形機ごとの点数、しきい値、印の有無
- 印の付いた成形機の比較表(
conditions)と、生成AIに渡した内容・返ってきた文面 - 人の行動の記録(
human_action)。変えた条件と、変えなかった理由 - その後のシフトの不良の数と、印の当たり外れ
- 学習に使ったデータの期間、モデルの版、しきい値を決めたときの精度と再現率
permutation_importanceの結果(学び直しのたび)
5つ目でしきい値を決めたときの精度と再現率を残すのは、週ごとの比較のためです。 学び直しで精度が下がっていたら、金型の補修や材料の切り替えで、良品の条件そのものが動いたことを疑います。
3つ目の人の行動の記録は、ベテランの判断を残す場所になります。 どの比較表を見て、どの条件をどれだけ変えたか。数か月分たまると、ベテランが不在の日にも、似た場面の過去の判断を引けるようになります。
04実装レベルの3段階
半自動化だけでも、②の4分はほぼ消えます。 条件のログを書き出して表で探す代わりに、帯から外れた条件が並ぶからです。ただし、帯から外れる条件は毎シフト何十もあり、どれが不良につながるかは人が選ぶことになります。 本格構成で3分になり、この段階が本記事の想定です。 違いは、帯からの外れのうち、不良に効いているものだけが点数として上がってくることです。 段階を飛ばさないでください。 半自動化の一覧を1か月使うと、帯の作り方(期間、中央値の取り方、立ち上げの除外)の誤りが先に見つかります。帯がずれたままモデルを作ると、比較表が現場に信用されません。
05工数削減シミュレーション
導入後 800件 × 3分 ÷ 60 = 40 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 射出成形機を十数台以上持ち、ショットごとの成形条件(温度・圧力・時間・クッション量など)を成形機から記録として取り出せる工場。外観の全数検査の結果をショットの番号か時刻で成形条件と結び付けられる場合。不良の兆しに気づくのが熟練の担当者の経験に頼っていて、シフトや担当で見つけ方が違う場合。過去数か月分の条件と不良の記録が残っている場合。
- 成形機が数台で、担当者が全機の様子を常に見られる工場。成形条件がショットごとに記録されず、日報の手書きの値しか残っていない場合。検査が箱単位・ロット単位の抜き取りだけで、どのショットが不良だったかが分からない場合。なお、条件を実際に変えるかどうかと、変えた後の品質の判断は、この構成では代替できません。
07最小構成で試す方法
- 不良の多い金型を1型選び、その金型の過去3か月分の成形条件のログと外観検査の結果を書き出す
- ショット番号で両方を結び付けられるかを確かめる。ここで結び付けられなければ、先に進みません
- 不良が出たショットの前の100ショットと、良品が続いた区間の100ショットを、条件ごとに並べる
- 手元のAIサービスに表を貼り、「どの条件に差があるか」を聞く
- 出てきた差を、生産技術のベテランの見立てと比べる
この段階ではモデルを作りません。 確かめたいのは、記録の振れに、不良の前触れが出ているかどうかです。
| 出てきた内容 | 判断 |
|---|---|
| ベテランの見立てと同じ条件に差がある | モデルを作る段階に進む |
| 差は出るが、ベテランも知らなかった条件 | 現場で確かめる価値がある。1型でモデルを作って試す |
| どの条件にも差が出ない | 不良の理由が記録の外にある。材料・金型・室温の記録を足すのが先 |
3行目が出ることは珍しくありません。 銀条やヒケは、材料の湿りや金型の温調の不具合で出ることが多く、成形機の条件のログには出ないことがあります。 その場合は、乾燥機の記録や金型温調機の記録を足してから試し直してください。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 全部のショットの点数が低く、印が付かない | 不良が少数すぎる。class_weight='balanced' を付ける |
| 検証では当たるのに、本番で外れる | 時間の順を無視した。TimeSeriesSplit と gap で未来を見ない |
| 「段取り後のショット数」が最も効いている | 立ち上げを学んでいる。立ち上げの範囲を除外する |
| ゾーンの温度がどれも重要でないと出る | 相関で重要さが分かれた。ゾーンをまとめてから測る |
| 欠けたゾーンを0で埋めたら点数が荒れた | 埋めずに欠けた値のまま渡す |
| 印が多すぎて誰も見に行かない | しきい値を精度の下限から決め直す |
| 新しい金型で比較表が空になる | 帯が作れない。「記録が不足」と明示し、似た金型から推測させない |
| 申し送りに試していない値が書かれる | 指示で禁じたうえで、数値の一致を受け取り後に照合する |
| ショット番号がずれて、良品と不良が入れ替わる | 立ち上げの捨て打ち、取り数を確かめる。照合できないショットは学ばせない |
| 学び直したら先週と点数が比べられない | 学び直しは週1回に固定し、モデルの版としきい値を残す |
| 銀条が予測できない | 材料の湿りは条件のログに出にくい。乾燥機の記録を足す |
| 条件を変えた記録が残らない | human_action を通知の画面に置き、変えない判断も記録する |
上の5行が、予測の部分の失敗のほとんどです。 どれも、点数は出ているので動いているように見えます。permutation_importance の結果を学び直しのたびに見ると、立ち上げの学習やゾーンの相関に気づけます。
下の4行は、現場に使われるかを決めます。 申し送りに試していない数値が1度でも書かれると、生産技術の担当は比較表ごと信用しなくなります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 成形条件のログ、不良の記録、金型と材料の情報。個人の情報はほとんど含みませんが、金型ごとの良品の条件の帯は、量産の歩留まりを決めるノウハウそのものです。顧客から預かった図面に基づく金型の情報も含みます。
- 生成AIへ渡す範囲を比較表に限る … 渡すのは、印の付いた成形機の、効いている条件3つの値と帯だけです。全条件のログや、金型ごとの帯の一覧をまとめて外へ出さないでください
- 顧客との取り決めを先に確かめる … 顧客の部品の製造条件を外部のサービスに渡してよいかは、取引の契約で決まっていることがあります。生成AIを使う前に、品質保証と営業に確かめてください
- 成形機に書き込まない … 候補は人が見て、人が変えます。自動で条件を変える仕組みを、この構成に足さないでください
- 条件の変更の承認を変えない … 量産の条件の変更に社内の承認の手順があるなら、この構成の候補もその手順を通します。 候補が出たことは、承認を省く理由になりません
- 担当者の評価に使わない … 印を見に行ったか、条件を変えたかの記録は、現場の担当者の評価に使わないでください。 使うと、変えない判断が記録されなくなります
誤りが起きた場合のリスクは、前触れを見逃して不良を出すことと、空振りの印で現場の手を止めることの2つです。 前者はしきい値を精度の下限から決めることで、後者は印を外した理由を残すことで見えるようにします。どちらも、最後に人が成形機の前で確かめる設計で守ります。
10まず何から始めるか
1週目:1台でログの取り出しを確かめる
不良の多い金型が掛かっている成形機を1台選び、ショットごとの条件がどの形で取り出せるかを確かめます。あわせて、外観検査機の結果がショット番号で結び付くかを見ます。ここで結び付かなければ、検査機の番号の設定から直します。
2週目:1型の過去の記録で前触れを確かめる
その金型の過去3か月の記録で、不良の前の100ショットと良品の区間を並べ、ベテランの見立てと同じ条件に差が出るかを見ます。
3週目:良品の帯を作る
金型ごとに過去4週の良品のショットの中央値と帯を作り、立ち上げの除外を決めます。ベテランに帯を見てもらい、普段の値として違和感が無いかを確かめます。
4週目:半自動化の一覧を出す
全成形機の条件を15分ごとに集め、帯から外れた条件を一覧にします。この時点では点数を出しません。
2か月目: HistGradientBoostingClassifier で点数を出し、TimeSeriesSplit で時間順に検証し、precision_recall_curve で現場が見に行ける数からしきい値を決めます。3か月目以降: 申し送りの文面を足し、印の当たり外れと人の行動を記録します。permutation_importance の結果をベテランと読み合わせ、1台・1シフトの9分が何分になったかを実測した時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
HistGradientBoostingClassifier が欠けた値(NaN)をそのまま扱い、学習時に分岐点ごとに欠けた値の送り先を利得から学ぶこと。categorical_features の既定が 'from_dtype' で、Categorical 型の列を区分として扱い、区分の数が max_bins 以下である必要があること。class_weight='balanced' がクラスの頻度に反比例する重みを付けること。predict_proba がクラスごとの確率を返すこと | scikit-learn: HistGradientBoostingClassifier | 2026-10-06 |
precision_recall_curve がしきい値ごとの精度と再現率を返すこと。精度が tp / (tp + fp)、再現率が tp / (tp + fn) であること | scikit-learn: precision_recall_curve | 2026-10-06 |
| 並べ替えによる特徴量の重要さが、1つの特徴量を入れ替えたときの成績の落ち方で測るものであること。検証用のデータで計算すると汎化への寄与が分かること。相関の強い特徴量は両方の重要さが低く出ることがあり、まとめて1つだけ残す方法があること | scikit-learn: Permutation feature importance | 2026-10-06 |
TimeSeriesSplit が時間順のデータの分け方を作り、ほかの分け方は未来のデータで学習して過去を評価することになるため不適切とされること。gap で学習用の末尾を空けられること | scikit-learn: TimeSeriesSplit | 2026-10-06 |
構造化出力で output_config.format に type: "json_schema" を指定して応答をJSONスキーマに沿わせられること | Claude Docs: Structured outputs | 2026-10-06 |
成形条件を変えるかどうかと、その承認の手順は、生産技術と品質保証で決めてください。 本記事は製品の公開ドキュメントで確認できた範囲だけを扱っています。成形機のログの取り出し方は機種ごとに違い、本記事では確かめていません。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0499)についてのご相談はこちらから。
