受注生産の中小製造業における仕入管理は、だいたいこうなっている

はじめに

受注生産、少量多品種、手作業多め。こういう中小製造業で材料の仕入れがどう管理されているか、という話をまとめておく。

生産管理や原価管理の教科書的な話ではなく、現場で実際にどう回っているかという視点で書いている。結論から言うと、よくできた運用が多い。

受注番号をキーにして仕入を紐づける

受注生産の工場では、受注が入ったら番号を採番して、その番号に紐づけて仕入を入力するのが基本になる。どの案件のために何をいくらで買ったかが追える状態を作るわけで、これが個別原価の土台になる。

受注番号をキーにして、仕入だけでなく外注費や工数もぶら下げれば案件ごとの原価が見える。ただ実際のところ、すべてを厳密に紐づけているケースは少なくて、仕入をざっくり紐づけて大まかに原価を把握している工場が多い。

直接材と間接材で管理を分ける

仕入には案件に直接紐づく材料と、ボルトやナットのような共通の消耗品がある。前者は受注番号をつけて管理するが、後者をいちいち案件に紐づけるのは手間に見合わない。

よくある割り切りとしては、主材料や特注部品は受注番号で追い、共通の消耗品は間接材として別枠にする。案件原価には直接材だけ載せて、間接材は一律で上乗せするか配賦しないかのどちらかになる。

原価の粒度と仕入の粒度は一致しない

現実には、原価として追いたい粒度と仕入の粒度が合わない場面が出てくる。たとえば鋼材を1本買って、それを2つの案件で使うことがある。仕入台帳には製番を「123/124」のように併記して、両方の案件に使われたことは記録する。でも何割ずつ使ったかまでは追わない。

正確にやろうとすると、材料を切り出すたびに使用量を記録して、端材も管理する必要がある。少量多品種で手作業中心の現場にその負荷をかけるのは割に合わない。大外れしていないかのチェックができれば十分、という割り切りは合理的だと思う。

積算と実績は突き合わせられない、けど困らない

見積は鋼材単価や重量ベースで積み上げるのに対して、仕入の実績は仕入先から買った単位で記録される。しかも1つの仕入が複数案件にまたがることもある。積算の根拠と実績の粒度が違うので、見積と実績を突き合わせて精度を検証するといったことは構造的にできない。

ただ、見積は経験値でそれなりの精度が出ているケースがほとんどで、実務上はこれで困っていないことが多い。積算と実績を繋ぐために仕組みを複雑にするより、見積の精度を経験で磨く方がこの規模の製造業には合っている。

買掛や支払いは会計ソフトの仕事

買掛管理や支払いの管理は会計ソフト側の領域になる。中小製造業だと弥生会計やfreeeなどの会計ソフトを自社で回すか、税理士に丸投げするかのどちらかが多い。

仕入台帳から会計ソフトへ連携する際は、明細行のまま取り込むのではなく、仕入先ごとに合算して1行にまとめるのが一般的だ。会計側は仕入先ごとの買掛残高と支払いが合っていれば十分で、明細は業務側の台帳に残っていればいい。

業務システムは案件ごとの原価を追う場所、会計ソフトはお金の出入りを追う場所。この棲み分けを明確にしておくと、それぞれがシンプルに保てる。

仕入帳Excelが業務の中心に座っている

こうした仕入管理はExcelで運用されていることが多い。仕入台帳シートの他に発注書の雛形シートを同じブックに入れて、台帳から行を選んで発注書を作れるようにしてあるケースもある。仕入台帳が発注データのマスタも兼ねている形だ。

さらにその仕入帳が個別原価の集計元になっていたり、月次原価の帳票と結合していたり、買掛のエクスポート元になっていたりする。1つのExcelブックが複数の業務のデータソースとして機能している。

導入コストゼロで、現場の人が理解できて、壊れても直せる。中途半端にシステム化するより実用的に回っている現場は多い。

Excelの伏魔殿問題はある

もちろんExcelならではの問題はある。行をコピーして使う運用が入り込み、セルの色づけがステータス管理を担い、暗黙のルールが積み重なる。黄色は発注済み、ピンクは検収待ち、みたいなやつだ。本来データとして持つべき情報がExcelの書式として業務フローに組み込まれてしまう。

同時編集できない、編集履歴が追えない、列を追加するとどこが壊れるかわからない。こうしたExcelあるあるの課題は確かに存在する。

それでもシステム化が正解とは限らない

ではシステム化すべきかというと、そう単純ではない。

仕入帳が月次原価帳票などの他の業務とガッツリ結合している場合、仕入だけ切り出して先にシステム化するという段階的な移行ができない。月次原価を同時に作る必要が出てくるが、年商数億規模の工場の月次原価はそう簡単な数字ではない。材料費、外注費、労務費の配賦、仕掛品の扱い。それらがExcelの中に暗黙知として埋まっている。

システム化のコストは開発だけではない。既存ロジックの棚卸し、移行期間の二重運用、現場への教育、保守。すべて乗ってくる。同時編集できない程度の不満ではとても割に合わないことが多い。

動いている運用は正しい

業務フローとして安定して回っているなら、それは正しい運用だ。Excelの限界は認識しつつも、それを超えるコストを払う理由がなければ無理にシステム化する必要はない。

動くタイミングがあるとすれば、Excelを保守できる人がいなくなったとか、案件数が限界を超えたとか、月次原価の仕組み自体を見直す契機が来たとか、そういう外的な要因が生まれたときだ。

受注番号ベースで仕入を紐づけ、直接材と間接材を分け、会計とは役割を棲み分ける。この構造がしっかりしていれば、器がExcelであっても業務は回る。大事なのは器ではなく構造の方だ。

多品種少量・受注生産の中小製造業に、全工程スケジューリングはいらない

全工程スケジューリングが合わない現場

生産スケジューリングと聞くと、全工程の開始・終了を計画してガントチャートで管理する姿を思い浮かべがち。 しかし多品種少量の受注生産で手作業が多い中小製造業にこれを当てはめようとすると、たいていうまくいかない。 作業時間は人によっても製品によってもバラつくし、段取りや作業順の入れ替えは日常的に発生するし、そもそも正確な標準時間のマスタを整備し続けること自体が非現実的。

計画を立ててもすぐ崩れ、再計画してもまた崩れ、管理コストだけが膨らんで現場が疲弊していく。 全工程の詳細スケジューリングを導入したものの結局使われなくなった、というのは中小製造業でよく聞く話。

管理するポイントを絞る

全工程を管理する代わりに、主要なポイントだけをスケジューリングする方法がある。 ポイントスケジューリングと呼ばれていて、たとえば出荷と組立だけスケジュールするような形。 中小だと出荷日だけ管理しているケースも実は多い。 顧客との約束は納期、つまり出荷日だけで、社内工程は現場リーダーが経験と勘で段取りしている。 製品の種類やロットサイズの変動が大きく、細かく組んでもどうせ崩れてしまう。

出荷日だけの管理でなんとか回っている現場は、どこかに暗黙的な在庫バッファが存在しているから成立している。 それを意識的に設計するかどうかで大きく変わってくる。

管理ポイントの置き場所は在庫バッファの手前

ポイントの置き場所として筋がいいのは、在庫としてバッファを持てる場所の手前。

たとえば機械加工と組立がある製造業なら、加工品は比較的汎用的で在庫として持てるが、組立は受注仕様ごとの個別対応になる。 この間に置く中間在庫が自然なバッファポイントになっている。

素材 → 機械加工 → [中間在庫] → 受注組立 → 出荷

在庫で前後を分断できると、それぞれを独立して管理できるようになる。 バッファの後ろ側、つまり組立から出荷までは受注に紐づけて引っ張り、バッファの前側の部品加工は在庫補充として計画的に回す。 受注の変動があっても在庫が吸収して前工程は安定するし、前工程でトラブルが起きても在庫が吸収して出荷は守れる。 スケジューリングの精度が多少荒くても在庫が許してくれる。

在庫として持てるかどうかは、半製品の共通性が高いか、劣化しないか、保管コストが許容できるか、需要がある程度読めるか、といった条件次第。

結果として管理ポイントは3つになる。 出荷日は顧客との約束、バッファへの到着期限は出荷日からの逆算、投入日はバッファ到着期限からリードタイムの逆算。 中間の工程は現場の裁量に任せる。

これはDDMRP的な考え方とも通じていて、戦略的にバッファ在庫を置く場所を決め、その消費と補充をトリガーに生産を回すという発想。 全工程を精緻にスケジューリングするよりも、どこにバッファを置くかの設計の方が重要になってくる。

現場に任せる、ただし条件付き

手作業中心の現場にはスケジューラーが持っていない情報がある。 この製品とあの製品は治具が同じだからまとめた方が早いとか、あの人は今日調子がいいからこっちを任せようとか、この材料は少しクセがあるから慎重にいくとか。 こういった判断を計画に反映しようとするのは非現実的で、現場の判断の方が正しいことが多い。

ただし放任とは違う。 最低限、3つの条件が必要になってくる。 どの仕事がバッファに届いていないかが見えること、優先順位が現場に伝わっていること、投入量がコントロールできていること。

特に投入量のコントロールが重要で、仕掛を入れすぎるとどれからやるか迷い、段取り替えが増え、リードタイムが伸び、さらに前倒し投入する、という悪循環に陥る。

溢れる工程が見えない問題

ポイントスケジューリングには1つ大きな弱点がある。 投入日と出荷日だけ見ていると、受注が積み上がったときにどの工程が溢れるか分からない。 納期に間に合うかは見えても、どこがボトルネックになるかは見えない。

ただしここで全工程スケジューリングに走る必要はない。 必要なのはスケジューリングではなく負荷の見える化。

やることはシンプルで、受注ごとにどの工程グループを通るか、おおよその工数はどれくらいか、この2つだけ持っておく。 週単位で工程グループごとに山積みすると、キャパを超えそうな週と工程が見えてくる。 工数の精度は粗くてよく、8時間ではなく半日、1日、2日くらいの粒度で十分回せる。 これならマスタ整備の負担も小さく保てる。

時間軸で見方を変える

数年先の受注も含めて、受注したら納期から逆算してだいたいの工程通過時期を出し、溢れそうかどうかを判断していく。 ただし遠い先と近い先では見方を変える必要がある。

数年から半年先は月単位で、人を増やすか、設備投資するか、といった経営判断の材料にする。 半年から1ヶ月先は週単位で、外注に出すか、残業で対応するか、納期を交渉するか、といった戦術的な判断に使う。 1ヶ月以内は日単位で、投入順序の調整や現場への優先度指示に落とし込んでいく。

遠くはぼんやり、近づくにつれて解像度を上げる。 2年先の受注を日単位でスケジューリングしても仕様変更で全部やり直しになるだけだし、逆に来週の溢れに気づけないと毎週が緊急対応になってしまう。

逆算の仕組み自体はどの時間軸でも同じで、工程グループごとの標準リードタイムさえあれば回る。 違うのは粒度だけ。

それでも残る課題

ポイントスケジューリングとざっくり負荷山積みの組み合わせで、中小製造業としてはかなり高いレベルに到達している。 ただしいくつか肉付けが必要な部分は残っている。

まず材料の手配タイミング。 工程の負荷は見えていても、着手するときに材料があるかは別の話で、リードタイムの長い鋳物や特殊鋼、海外調達品などは工程の逆算とは別に手配起点を管理する必要がある。

次に現場の優先順位判断の支援。 複数の仕掛品が並んだとき、どれが本当に急ぎか、どれをまとめると段取りが減るか。 仕組みとしての見える化がないと結局ベテラン頼みになってしまう。

それから管理ポイントの通過実績。 全工程の実績収集は不要だが、バッファを予定日までに通過したかどうかだけは見ないと改善のサイクルが回らない。

最後に溢れ検知後の対応ルール。 負荷が溢れそうなことが分かったとき、納期交渉するのか、外注するのか、残業するのか、受注を断るのか。 仕組みというより経営判断のルールで、事前に決めておかないと毎回バタバタしてしまう。

どれも大掛かりなシステムが要るものではなく、Excelやホワイトボードでも始められるレベル。 骨格としてのポイント管理とざっくり負荷把握が一番重要で、これらはその上の肉付けにあたる。 骨格なしに枝葉を頑張っても効果は薄いので、まずこの骨格を固めるところから始めるのがいい。

中小製造業に必要なのはAIではなく見積もりデータの再利用

ロジックでできることにAIを持ち込まない

生産スケジュールの話になると、AIで最適化という言葉が飛び交う。でも、生産スケジューリングの本質はあくまで確定的な計算で、リードタイム、工程順序、設備能力、在庫量といった入力が揃えばロジックで回せる。

AIが力を発揮するのは、認識、需要予測、文脈を踏まえた判断などルールを明文化しきれない領域。逆にロジックで十分なことをAIでやると、結果が確率的になってたまに間違えるし、ブラックボックス化して検証も難しくなる。コストも無駄に高くつく。

AIは万能の上位互換ではなく、ロジックでは届かない領域を補う道具として使ってはじめて価値が出る。

中小製造業の壁は製品マスタにある

ロジックで生産計画を回すにはBOM、工順、標準時間、設備能力といった製品マスタが不可欠で、これらがきちんと整備されていればシステムが計算してくれる。

ところが中小の現場ではこのマスタがほとんど揃っていない。BOMはベテランの頭の中にしかなく、標準時間は勘と経験で決まっている。設計変更があってもマスタは更新されないし、そもそもマスタを作って維持する人がいない。

結果としてロジックで回せるはずの生産計画が回らず、ベテランの属人的な判断に頼り続けることになる。

しかもこれが悪循環していて、マスタ未整備でシステム化できないから人に依存する、でも忙しくてマスタ整備の余裕がない、だからマスタは未整備のまま、という繰り返しになっている。

中小にもAIをという声はあるけれど、マスタが整備されていなければAIもロジックも動かない。AIは魔法ではなく、正しいデータがあってはじめて機能する。

毎月新規品ならマスタ整備は無駄になる

ここでひとつ矛盾にぶつかる。

受注生産で多品種少量、手作業も多い。毎月ほぼ新規品が流れるような世界では、製品単位のマスタを整備しても使い捨てになってしまう。整備のコストが活用効果を上回るので、やる意味がない。

マスタがなければロジックは回らない、でもマスタを作っても使い捨て。完璧に作るか何もしないか、二択に見えてくる。

見積もりデータをそのまま簡易マスタにする

落とし所はマスタの粒度を変えること。

製品単位の完璧なBOMではなく、工程や作業レベルのマスタを持つようにする。製品は毎回違っても通る工程の組み合わせはある程度パターン化できて、切断から曲げ、溶接、塗装、組立といったパターンが実は数十種類に収まることが多い。

そして重要なのが、受注生産なら必ず見積もりをしているという事実。見積もり時に工程と時間と材料をざっくり出しているはずで、新規品であっても簡易的な積算はしている。そのデータをそのまま計画に流せば、それが簡易マスタになる。

現状では見積もりを作って受注したら、あとは現場に図面だけ渡して見積もりデータは死蔵されている。これを計画側に流すだけでよく、追加の作業はほぼゼロで見積もり時の入力フォーマットを少し整えるだけで済む。

完璧なMRP展開こそできないものの、大まかな負荷計画や納期回答の精度向上、ボトルネック工程の把握あたりは十分に回せるようになる。

100点の計画を捨てて、70点の計画を低コストで毎回出せる仕組みにする。現場のベテランが頭の中でやっている、この製品ならだいたいこの工程でこのくらい、という感覚を工程テンプレートとして外出しするイメージ。

実績を返せば精度は勝手に上がっていく

さらに見積もりに対して実績を返してやると、精度が自然に向上していく。

見積もりで溶接3時間と出したけど実績は4.5時間だったとする。次の類似品ではその差分を反映できるので、見積もりの精度が上がれば計画の精度も連動して上がる。

ベテランの頭の中にしかなかった感覚が、見積もりから計画、計画から実績というサイクルを回すことでデータとして蓄積されていく。

ここまで来ると、過去の類似品の見積もりデータを探して参考にする場面でAIが活きてくる。曖昧な条件から似たパターンを引き当てる作業はまさにAIの得意領域で、最初に書いたロジックでできることにAIを持ち込まないという原則の裏返しとして、ここにAIでしかできないことがある。

少量多品種・受注生産の現場で生き残るための「管理の落とし所」

中小製造業が抱える効率化のジレンマ

受注生産、少量多品種、手作業中心。 このビジネスモデルは顧客の細かなニーズに応えられる強みがある一方、現場の負荷は極めて高い。

こうした環境では、手間はかかるが「いくら儲かっているか見えない」という収益管理の課題が常につきまとう。

どんぶり勘定から抜け出せない理由

製造月の間接費を生産高に応じて正確に配布する原価計算は、多くの中小企業にとって理想論に過ぎない。 現実には、材料費に過去の経験則に基づいた「魔法の倍率」を掛けるだけのどんぶり勘定が横行している。

日報の精度が低く、誰がどの案件に何時間使ったかという工数データが圧倒的に不足している。 家賃や電気代、事務員の給与といった間接費を製品ごとに分ける作業は、膨大な事務手間を要する。

結果として、決算のための会計で手一杯になり、経営判断に使うための管理会計まで手が回っていない。 忙しいのに儲からない理由が不明なまま、言い値で受注を続けているのが実情である。

精度を70点まで引き上げる実戦的な原価計算

教科書通りの厳密な配賦を諦め、事務負担を最小限にして精度を出す方法がある。 それは、すべての経費を時間に集約する「アワーレート」の活用。

前年度の総費用を総労働時間で割り、自社の「1時間あたりの単価」を一度だけ固定して算出する。 これに、現場が15分単位で記録した作業時間を掛け合わせる。

「材料費 +(作業時間 × アワーレート)」というシンプルな式だけで、個別の案件が赤字か黒字かが見えてくる。 正確な1分を測るよりも、だいたいの15分を全案件で揃えることの方が、経営判断には価値がある。

機械レートの考え方と機会損失の罠

機械を動かせば動かすほど固定費を回収できるという考え方は、短期的には正しい。 しかし、安売りをしてでも稼働率を上げようとする行為には、大きな落とし穴が潜んでいる。

低いレートの仕事でスケジュールを埋めてしまうと、本来受けるべき高利益の仕事を断る「機会損失」が発生する。 手作業中心であっても、高価な設備を使う工程はレートを分けて考える必要がある。

「やらないよりマシ」な仕事が、実は会社の未来を食いつぶしている可能性がある。 フルコスト(間接費込み)のレートを把握した上で、戦略的に価格を判断する視点が欠かせない。

材料原価における定尺材と端材の扱い

受注生産で悩ましい定尺材や長尺材の扱いは、再利用の可能性でルールを決めるのが合理的。 めったに使わない特殊な材料であれば、たとえ半分余っても定尺1本分を全額チャージする。

汎用的な材料であれば、切り代や端材分を考慮して1.3倍程度の歩留まり係数を掛けて計算する。 この「少し多め」の計上が、端材の管理コストや切り捨てられる部分の補填になる。

材料費だけでなく、重い定尺材をクレーンで運んだり棚から引き出したりする「時間」も、本来は原価に含まれている。 目に見えない労務費が材料費の裏側に隠れている。

在庫が生み出す「幻の利益」の正体

在庫が増えると売上原価が圧縮され、PL上の利益は膨んで見えるマジックが起きる。 しかし、通帳の現金は材料費や給与として既に出ていっており、手元には残っていない。

受注生産であっても、フローの在庫(仕掛品)を利益と見なすのは、確実に現金化できる場合に限定すべき。 現場判断で作った予備や、手が空いたからという理由での前倒し分を利益と捉えるのは危険。

それは利益を稼いだのではなく、今月の経費をBS(資産)に押し込んで「後回し」にしただけ。 「利益はあるのに現金がない」という状態は、こうした在庫への甘い認識から生まれている。

生存を確認するための「資金繰り用簡易PL」

個別原価の計算だけでは、会社全体のキャッシュフローまでは追い切れない。 そこで、当月の売上、仕入れ、支払いを単純に比較する「資金繰り用簡易PL」を羅針盤として活用する。

これは税務署のための書類ではなく、経営者が「今月の稼ぎで飯が食えているか」を知るためのもの。 売上高から、材料・外注費(変動費)と、給与・家賃(固定費の支払い分)を差し引いて、手元に残る現金を算出する。

個別原価で「案件ごとの勝敗」を見極め、簡易PLで「会社全体の生存」を確認する。 このマクロとミクロの二階建て管理が、在庫の増減という会計マジックに惑わされない唯一の道である。

中小製造業における管理の「黄金の落とし所」

資金繰り用簡易PL、材料とアワーレートによる個別原価、そしてフロー在庫の限定的な利益評価。 この3点セットの運用は、中小製造業が到達できる実務上の最高到達点と言える。

これ以上に細かな管理を求めても、事務コストが増えるだけで利益には直結しない。 管理のための管理に陥らず、会社の心拍数と血圧を正しく把握できる仕組みを維持している。

この「中小の限界点」こそが、最も変化に強く、筋肉質な経営スタイルを支えている。

中小製造業は「脱属人化」ではなく「戦略的属人化」

コンサルが売る標準化の正体

なぜ外部コンサルや大手ベンダーは、判で押したように標準化や脱属人化を勧めてくるのか。その正体は、経営層の生産性を上げるための管理ツールに他ならない。

ERPの本質は、グローバルで統一されたKPIをリアルタイムで監視するためのツール。 その透明性を確保するために、現場には大量のデータ入力という不便を強いる構造になっている。

だからこそ、導入には強烈なトップダウンが必要になる。

コンサルが言う標準化は、管理する側にとっては正義だが、現場にとっては手足を縛る鎖になり得る。 この構造を理解せずに導入すれば、現場が疲弊してしまう。

中小製造業の生存戦略は戦略的属人化

特に受注生産・多品種少量の中小製造業において、この標準化は毒になる可能性がある。

中小企業の競争力の源泉はベテランの勘や柔軟な対応力といった属人化された部分にある。 これを標準プロセスに押し込めば、単なる代替可能な工場に成り下がる。

目指すべきは脱属人化ではなく、あえて属人化を許容する戦略的属人化。判断や職人技はそのまま残し、その前後にある情報収集や転記といった雑用だけをAIにやらせる。

ただし、標準化=悪、属人化=善という単純な二項対立に陥ってはいけない。

誰がやっても同じであるべき作業は標準化した方が全員が楽になる。一方で、材料の選定判断や加工手順の組み立てのように、経験が品質に直結する領域は属人化を残すべき。

線引きの基準はシンプルで、その作業に判断が伴うかどうか。判断が不要な作業は標準化して手を抜き、判断が必要な領域には属人化を許容して力を集中させる。 この仕分けを現場のベテランと一緒にやることが、戦略的属人化の第一歩になる。

内製エンジニアと情報のワンストップ化

では、具体的にどうシステムを組むべきか。 答えは内製化と入力の一本化にある。

外部ベンダーに頼むと、どうしても管理しやすい標準を押し付けられる。 だからこそ、社内の業務を知る人間、内製エンジニアにAIツールを持たせ、現場の痒いところをかく小さなツールを爆速で作らせるのがいい。

狙うべきゴールは、入力が1回で済むデータの流れ。

現状、営業・技術・製造がそれぞれ別のExcelやシステムに同じデータを打ち込んでいる。 これがミスの温床であり、無駄の極み。

情報の最上流、つまり見積や受注の段階でAIを使ってデータを確定させ、あとはAIがそれを翻訳しながら下流へ流す。 人間は確認と修正だけを行う。

ERPの機能の9割は不要と割り切り、現場の強みを活かすための隙間を埋めるAIを自分たちで作る。 これが2026年現在、最もROIが高いIT投資の形と言える。

キラキラしたAIの話に踊らされず、自分たちの現場を起点に小さく、泥臭く始めること。 それが、2026年のAI活用における最も確実な一歩になる。

RAGブームの正体 ── 中小製造業がAIと付き合うための現実的な整理

AIで本当に成果が出ている領域は限られている

最近はなんでもRAG(Retrieval-Augmented Generation)という風潮がある。社内データをベクトルDBに入れてチャットボットを作れば業務が変わる、という話をよく聞く。

しかし実際にそういったシステムを導入した企業の声を拾ってみると、「探している情報が出てこない」「回答が的外れ」「結局自分で検索したほうが早い」という感想が大半だ。

では、エンタープライズ領域でAIが実際に成果を出しているのはどこなのか。整理してみると、大きく3つに絞られる。

1つ目はコード生成・開発支援。GitHub Copilot、Cursor、Claude Codeのような開発ツールは確実に生産性を上げている。

生成物が間違っていてもコンパイルエラーやテストで即座にわかるため、人間のチェックコストが低い。

2つ目は定型文書の下書き・変換。契約書のドラフト、議事録の要約、翻訳など。80点の出力を人間が100点に直すワークフローが自然に成立する。

3つ目は画像認識・分類。製造業の外観検査や帳票のOCRなど。「正常/異常」の2値判定のように、タスクが明確でAIの出力を目視で検証しやすい領域だ。

この3つに共通しているのは、AIの出力をそのまま使わず、人間が最終判断する前提で設計されているということ。逆に「AIに判断を任せる」方向は、どの領域でもまだ成果が出ていない。

チャットボットが期待外れに終わる構造的な理由

ChatGPTやClaudeのチャットは爆発的に普及し、検索の代替や壁打ちに日常的に使う人は増えた。

これが成功しているのは、ユーザー自身が「間違っているかもしれない」という前提で使っているからだ。間違っていても調べ直せばいいだけで致命的ではない。

ところが企業が「社内RAGチャットボット」を作ると、途端に期待値が変わる。ユーザーは「正確に答えてくれるはず」と思って使う。同じチャット形式なのに、求められるものがまったく違う。

回答の正確性を誰が保証するのか、間違った回答で業務判断した場合の責任は誰が取るのか。そういった問いに答えられないまま導入すると、結局使われなくなる。

皮肉なことに、ChatGPTやClaudeのエンタープライズプランをそのまま社員に使わせたほうがよかった、というケースは少なくないはずだ。RAGで社内チャットボットを自作する理由が「社内データの秘匿性」なら理解できるが、それ以外の動機なら既存のAIチャットで十分なことが多い。

ベクトルDBとRDBは「別の問題を解く道具」

見積RAGシステムを題材に具体的に考えてみる。見積データには材質・径・長さといった数値フィールドと、用途・備考といった自由記述テキストがある。

ベクトル検索が本当に力を発揮するのは、「ポンプ用の軸」と「回転軸(ポンプ向け)」を意味的に近いと判断できるような自由記述テキストの検索だけだ。

材質の完全一致や径の範囲検索はRDBのほうが正確だし、価格のように「1円の狂いも許されない」データを確率的な近さで扱うのはリスクが高い。

結局、ベクトルDBとRDBは優劣ではなく適用領域が異なる。構造化データはRDBで正確に引き、RAGは文章にしか残っていない知見の検索に使う。この使い分けを無視して「全部RAGで」と言うから期待外れになる。

中小製造業にとっての最適解

まず、事務員全員にAIのライセンスを配るのは費用対効果が悪い。PCスキルにばらつきがあり、「何を聞けばいいかわからない」という壁がある。日常業務が定型作業の繰り返しなら、AIに聞く場面がそもそも少ない。

一方で、内製のエンジニアにAIをがっつり使わせて、社内システムを高速で作るというアプローチは噛み合っている。見積管理、在庫・発注管理、作業日報の入力・集計。

こういった「あれば便利だけど外注すると数百万」だったシステムが、エンジニア+AIで現実的な工数で作れる。業務を理解している人間が作るので要件のズレも少ない。

中小製造業の本当のボトルネックは「やりたいことはあるけど作る人がいない」という部分であり、AIでコーディングが加速するなら、そこが一番効く。

バズワードとの付き合い方

少し前のクラウドやDXと同じパターンで、「全部AIで」という過剰な期待がいずれ幻滅に変わり、最終的に「使う場所を選べば確実に価値がある」という地味な結論に落ち着く。

クラウドが「オンプレとのハイブリッド」に着地したように、AIも「人間とのハイブリッド」に着地するのだろう。

数年後に振り返れば、「コード生成と下書き支援が当たり前になった」というだけの話になっている気がする。それはそれで十分に価値があることだ。

ベクトルDBとRDB――「意味の検索」と「値の検索」は土俵が違う

RAGで使われるベクトルデータベースは、従来のSQLとはそもそも解決する問題の種類が違う検索エンジンである。SQLのLIKE演算子が「文字の並び」をパターンで照合するのに対し、ベクトルDBは「言葉の意味」を多次元空間の座標に変換し、座標同士の近さで検索する。一文字も合っていなくても、「犬」と「ドッグ」を同じ近所に配置できるのは、AIが単語の背後にある概念を捉えているからだ。

この「文章を座標(点)にする」仕組みには、特有のルールがある。長い文章をそのまま1つの点にすると意味が薄まってボヤけてしまうため、適度な長さの「チャンク」に細かく刻んで保存するのが定石だ。日本語であれば200〜500文字程度が一つの目安だが、最適な分量は言語・モデル・用途によって変わる。いずれにせよ、数百次元から数千次元に及ぶ計算空間の中で、その情報の個性を鮮明に描き出せるサイズ感を探ることが肝要となる。ただし、この座標は使用する「埋め込みモデル」固有の地図。モデルを変えれば地図の縮尺も方角も変わるため、データは全て計算し直しになる。

文章を点にする際、AIは単語をバラバラにするだけでなく、文脈の「味わい」を数値に凝縮している。例えば「材質:SS、Φ400」という簡素なラベル形式よりも、「材質はSSです。直径は400です」という自然な文章形式の方が、AIにとっては「何が何であるか」の関係性が読み取りやすく、精度の高い座標が打てる。検索時の短い問いかけも同じ空間の点となり、意味の近いチャンクを高速で探し出していく。この「近さ」の測り方にも複数の流儀があり、ベクトルの向きで比較するコサイン類似度、距離で比較するユークリッド距離、内積で比較するドット積など、用途に応じて使い分けられている。

しかし、ここで一つの疑問に突き当たる。データが完璧にクレンジングされ、「材質」や「寸法」が整理されているなら、そもそもベクトルDBを使わずとも、これまでのRDB(関係データベース)の検索で事足りるのではないか。事実、数値の厳密な比較や特定の型番検索において、RDBの正確性とコストパフォーマンスにベクトル検索は勝てない。ただし逆に、構造化されたデータであっても、ユーザーの問いかけが自然言語である限り、「軽い素材」という曖昧な検索語からアルミやチタンを引き当てるような意味の橋渡しは、SQLの得意分野ではない。両者は優劣ではなく、得意な問題の領域が異なるのだ。

この議論を「積算業務へのAI活用」に当てはめると、より現実的な使い分けが見えてくる。1円の狂いも許されない単価の特定や計算に、確率的な「近さ」で答えを出すRAGをそのまま使うのはリスクが高い。積算における理想の形は、正確なスペック検索はRDBに任せ、過去の特記事項や現場の勘所といった「文章の中にしかない知見」をRAGで呼び出すハイブリッドな構成だ。

結局のところ、ベクトルDBは「整理しきれない人間のニュアンス」を扱うための道具であり、議事録や現場報告のような非構造データに対しては、負債の先送りどころか正当な解法となる。一方、美しくクレンジングされたデータセットがあるのなら、無理にベクトル化するのではなく、SQLでスマートに引くのがエンジニアリングとしての正攻法。大切なのは、どちらかを選ぶことではなく、それぞれの土俵を見極めて適材適所で組み合わせることだ。

Mattermost サーバー移行

Mattermostは最低限のスペックで試験運用中だったため、前回Jitsiを入れた高スペックサーバーに引っ越し。

直インストールから、Caddy + Docker運用へ変更。
バージョンは現行の10.12.4のまま移行。

旧サーバー

・Mattermost停止
systemctl stop mattermost
(起動する場合は、systemctl start mattermost)

・MySQLダンプ
mysqldump –no-tablespaces –default-character-set=utf8mb4 -u mattermost_user -p●●● mattermost_db > backup.sql

・データベース名を調べる
mysql -u mattermost_user -p●●●
show databases;

・データディレクトリ圧縮
cd /opt/mattermost
tar czvf mattermost_data.tar.gz data/
(/opt/mattermost/data/をカレントディレクトリにmattermost_data.tar.gzという圧縮ファイルにして保存)

・設定ファイルコピー(復旧に使うわけではない予備)
cp /opt/mattermost/config/config.json ./
(Mattermostの設定ファイルを今いるディレクトリにコピー)

・移行先サーバーにアップロード

新サーバー

・Caddy(既に運用状態で設定ファイルだけ変更)

cd /home/caddy
vim Caddyfile
docker compose down
docker compose up -d

・Mattermost

cd /home
mkdir mattermost
cd mattermost
vim docker-compose.yml

docker compose up -d

・データインポートのためDocker停止
docker stop mattermost-app

・SQLリストア
docker exec -i mattermost-db mysql –default-character-set=utf8mb4 -u mmuser -p●●● mattermost < backup.sql

・別ターミナルでプロセス確認する場合
docker exec -it mattermost-db mysql -u mmuser -p●●● -e “SHOW PROCESSLIST;”

・dataディレクトリ展開
※tarをdocker-compose.ymlと同じ階層に保存。
cd /home/mattermost
tar xzvf mattermost_data.tar.gz -C ./volumes/mattermost/
(tarを./volumes/mattermost/に解凍。tarにdataディレクトリを含んでいる)

・パーミッション
chown -R 2000:2000 /home/mattermost/volumes/mattermost/

・Docker開始
docker start mattermost-app

・エラーになる場合、AIプラグイン削除
rm -rf /home/mattermost/volumes/mattermost/plugins/mattermost-ai
docker restart mattermost-app

・DNSレコードのIPアドレス変更

VPS Caddy Jitsi Meet 設定メモ

社内コミュニケーションにMattermostを利用しているが、会話なら一瞬で済む内容でも、テキストベースだと時間がかかってしまう。

かといってZoomやMeetを立ち上げるほどではないという場面のために手軽に呼び出せるJitsiプラグインを導入することにした。

Caddy

・共通ネットワーク作成
docker network create localproxy

・フォルダ準備
cd /home
mkdir caddy
cd caddy

・Caddyfile

vim Caddyfile

・docker-compose.yml

vim docker-compose.yml

・コンテナ起動
docker compose up -d

Jitsi Meet

・フォルダ準備
cd /home
mkdir jitsi
cd jitsi

・docker-compose.yml

vim docker-compose.yml

・コンテナ起動
docker compose up -d

・ufw
ufw allow 10000/udp

DNS

jitsi.●●●.comのAレコードをサーバーIPアドレスに向ける。

Mattermost

https://github.com/mattermost-community/mattermost-plugin-jitsi

Releasesからtar.gzをダウンロード。
システムコンソール>プラグイン管理>プラグインをアップロードする

プラグインを有効にする>設定

Jitsi Server URL:https://jitsi.●●●.com
Embed Jitsi video inside Mattermost:無効
Show pre-join page:有効
Jitsi Meeting Names:Random
Use JWT Authentication for Jitsi:有効
App ID for JWT Authentication:mattermost
App Secret for JWT Authentication:Jitsiと同じ秘密鍵

 

VBA vbac.wsf インストール

https://github.com/vbaidiot/ariawase
からzipをダウンロード、vbac.wsfを取り出す。

という構成にして、
cscript vbac.wsf decombine
を実行する。

インポートは
cscript vbac.wsf combine
を実行する。