製造業のデジタル化を検討する際、必ずぶつかる壁があります。ERPは「何を作るべきか」を知っており、機械は「実際に何が起きているか」を知っている。しかしその間をリアルタイムに翻訳する層がどこにも存在しない——という壁です。この隙間を埋めるために存在するのがManufacturing Execution System(MES)であり、ISA-95ではLevel 4の計画層とLevel 1〜2の現場制御層の間、Level 3として定義されています。
simpliMESは、この隙間に対するSimplicoの答えです。ディスクリート生産(機械加工、組立、包装)とバッチ生産(熱処理、化学プロセス、プロセス製造)を、別々のシステムを後から連携させるのではなく、同一のデータモデルと同一の実行エンジンの上で動かす、単一のオンプレミスMESコアです。本稿では、実際に構築されている内容——アーキテクチャ上の判断、オペレーターの操作体験、データ収集、そしてシステム内で唯一のAI機能——を紹介し、今日出荷済みの機能とロードマップ上の機能を明確に区別して説明します。この区別は、個人情報保護法(APPI)やJ-SOXの内部統制要件、あるいは経済安全保障推進法が求める供給網・重要設備の可視性という観点からも、実装前に押さえておくべき重要なポイントです。
1. simpliMESとは何か
- ISA-95 Level 3。 Level 4(計画・購買・財務を担うERP)から作業指示を受け取り、Level 1〜2の設備——PLC、計測機器、SCADA——に対して実行を駆動します。
- サイトごとに1スタック、オンプレミス。 各工場は自社のDocker Composeスタックを運用します。クラウド依存なし、マルチテナントSaaSでもない——インターネットが落ちても現場は動き続けます。
- 単発プロジェクトではなく製品。 ERPとの接続はコネクタ契約を通じてのみ行われるため、ERPNext、SAP、Odoo、あるいはCSVファイルの取り込みも、すべて単なる「異なるコネクタ」に過ぎません。特定ERP固有の前提がコアに漏れ出すことはありません。
- ディスクリートとバッチを1つのモデルで。 機械加工・組立・包装は、熱処理・化学プロセス・バッチ製造と同じ
WorkOrderとステップのモデルを通じて実行されます。同一のラン・エンジンが両方を駆動します。
ここで境界を明確にしておく価値があります。同じ領域でSimplicoが提供する他の2つの製品と混同しないでください。SimpliMES Liteは、デジタル化の第一歩を踏み出す中小製造業向けの、より軽量で短期間で導入できるパッケージです。一方、simpliFactoryのIMCS/simpliInterfaceレイヤーは、計測データのルーティングと現場接続に特化した解決策です。simpliMESは、作業指示のディスパッチ、トレーサビリティ、複数プロトコルにまたがる設備連携を1つのシステムで必要とするプラントのための、フル機能の実行・トレーサビリティコアです。実際にsimpliMES導入の範囲決めと価格提示が行われるのは、SimplicoのMES開発サービスにおいてです。
2. アーキテクチャ:すべてを規定する設計判断
| 設計判断 | 重要な理由 |
|---|---|
| モジュラーモノリス | デプロイ単位は1つのコアアプリ(Django)だが、モジュール間の境界は厳格——モジュール同士は公開されたサービス関数とプロセス内イベントバスを通じてのみ会話し、互いのモデルを直接importすることはありません。運用はシンプルなまま、変更はクリーンに行えます。 |
| エッジI/Oは独立プロセス | 設備通信は、Webアプリのライフサイクルから独立したスタンドアロンの非同期サービス(コネクタ)として動作します。UIを再起動しても、計測値を1件も取りこぼしません。 |
| エッジでのStore-and-Forward | すべての計測値は、publishを試みる前にまずローカルディスクのスプールに書き込まれます。ブローカーやコアがダウンしていれば、計測値はディスク上に蓄積され、接続が回復した際に順序通りリプレイされます。取り込み処理は冪等に設計されているため、リプレイは安全です。「生産データを失わない」ことは希望ではなく設計要件です。 |
| DB管理のコネクタ設定 | コアが、各コネクタが何をポーリングすべきかの唯一の正となる情報源です。UIでタグを追加すると、バックグラウンドジョブが全設定をretained MQTTトピックに再publishし、コネクタはドライバーを再起動なしでホットリロードします。コネクタは設定をディスクにキャッシュもするため、コアがオフラインでも起動できます。 |
| 単一データモデル、2つの実行パス | WorkOrderのmodeは discrete か batch です。リリース時、ルーティング・オペレーション(discrete)またはプロセス仕様(batch)からステップが生成されます。同一のラン・エンジンが両方を駆動し、batchランは加えてライブテレメトリを仕様限界と照合します。 |
| 時間軸によるテレメトリと作業指示の紐付け | センサー計測値からランへの外部キーは存在しません。計測値は、ランの開始・終了イベントを基準にした時間範囲クエリによってランに関連付けられます——この設計はリプレイ再生やクロックのずれに対しても頑健です。 |
flowchart TD
ERP["ERP Level4計画層"]
CORE["simpliMESコア Djangoドメインロジック"]
MQTT["MQTTブローカー Mosquitto"]
CONN["コネクタプロセス asyncioエッジIO"]
TS["TimescaleDB タグサンプル"]
PLC["PLCと計測機器 OPC UA S7 Modbus"]
ERP -->|"作業指示"| CORE
CORE -->|"結果とsyncログ"| ERP
CORE -->|"公開された設定"| MQTT
MQTT -->|"設定のホットリロード"| CONN
CONN -->|"計測値"| MQTT
MQTT -->|"タグイベント"| CORE
CORE --> TS
CONN --> PLC
PLC --> CONN
1サイトは4つのプロセスで構成されます。core(Django——UI、API、ドメインロジック)、connector(asyncio——設備I/O)、Celeryワーカー、MQTTコンシューマーです。インフラはPostgreSQL + TimescaleDB、Redis、Mosquitto。coreとconnectorはMQTT経由でのみ通信し、直接APIを呼び出すことはありません——これが両者を独立して再起動できる理由です。
3. 作業指示とディスパッチ
作業指示はERPから取り込むか、手動で作成します。リリースすると、品目のルーティング・オペレーション(discrete)またはプロセス仕様(batch)からステップが生成されます。ディスパッチボードには、リリース済みの作業がワークセンターごとに順序立てて表示され、ステップは自動的に昇格します——1つが完了すると次が準備完了となり、最後のステップが完了すると作業指示全体が完了します。
4. オペレーター端末:縮小版デスクトップ画面ではなく本物のキオスク
/execution/terminal/には、chromeless(ブラウザUIを排除した)タッチ操作前提のキオスク画面があり、意図的にスタッフ向けUIとは分離されています。
- 端末はワークステーションに一度だけバインドされ、オペレーターはシフトごとにバッジまたはオペレーターコード+PINで本人確認します。
- 操作の流れは、ジョブと機械を選択し、開始 → 数量またはスクラップを理由付きで報告 → 一時停止/再開 → 完了。タップのたびにサービスへPOSTし、1つのパネルだけを再描画します——作業途中でページ遷移は発生しません。
- バッチランでは、パネルにライブの工程パラメータと仕様限界の対比——ソーク温度、扉の開閉状態など——がラン中の設備テレメトリから表示されます。
- すべての操作はトランザクション的で、監査ログを書き込み、ドメインイベントを発行します。どのオペレーターが、どのワークステーションで、どのランに対して行ったかという完全な帰属情報が記録されます。
5. 自動データ収集——3つのプロトコルに対応
- 本日時点で稼働中の産業用プロトコルは3つ: OPC-UA、Siemens S7、Modbus TCP/RTU。各ドライバーは、設備・タグキー・発信元タイムスタンプ・数値または文字列の値・品質情報を持つ共通タグモデルに正規化します。
- 計測値はTimescaleDBのハイパーテーブルに、タグと時刻をキーとして格納されます。
- デジタルインターフェースを持たない設備には手動入力で対応します。
- 理由コード付きのダウンタイム記録が、機械のライブ状態を駆動し、OEE風のダッシュボードにデータを供給します。
これはまさに、別稿で取り上げた現場のプロトコル分断問題と同じ課題です。現場のほとんどは実際には五つの方言を同時に話しています。simpliMESのエッジコネクタは、simpliFactoryのsimpliInterfaceと並んで、Simplicoが実際にこの問題に対するブリッジ層を構築している2つの場所の1つです。
6. 設備:階層構造、ライブ状態、実用的なフロアプラン
- 階層構造はISA-95に準拠——site、area、line、cell、unit——ただし純粋な標準用語ではなく平易な言葉で表現されます。
- ライブステータスボードは、全設備の現在状態(running、idle、down、setup)をエリアとコネクタごとにグループ化して自動更新表示します。
- ライブ状態はイベント駆動であり、ポーリングではありません。ランが開始すればrunningへ、終了すればidleへ、ダウンタイムが開けばdownへ(理由付きで)、閉じれば稼働中のランが残っていればrunningへ戻ります。設備モジュールは、バス上の実行イベントに反応するだけでこれを維持します。
- フロアプランは各設備の物理的な設置場所を、ライブ状態で色分けして表示します。エンジニアは編集モードでドラッグして設備を配置し、位置情報は設備レコード上に監査可能な座標として保存されます。
- 校正と保守は、期限付きの汎用校正記録、保守イベントログ、設備ごとの参考文書(マニュアル、仕様書)とそのテキスト抽出をカバーします。
7. トレーサビリティ——一部実装済み、そう正直に伝えます
原材料のロット/シリアル、消費記録(作業指示が何を消費したか)、親子ロットのリンクのためのデータモデルは構築済みです——これは作業指示やバッチをas-builtで原材料・設備までトレースするための土台です。次のリリースに向けて配線中なのは、ラン完了時の自動リンク生成、そして前方/後方トレースUIと完全なトレースレポートです。 もし評価の要件が今日完全なトレーサビリティレポートを前提としているなら、経済安全保障推進法が求めるサプライチェーンの可視性要件も含めて、範囲を確定する前にこの一点を直接確認する価値があります。
8. AI Analyze:完全にオプション、完全にオンプレミスのローカルLLMパネル
「AI Analyze」パネルは、run-detail、downtime-detail、equipment-detail、そしてフリート全体のcalibrationページに表示されます。
- 表示対象に応じたコンパクトな構造化サマリー——タグごとのテレメトリ統計、仕様限界の逸脱、状態・ダウンタイム・生産イベント、アップロードされた参考文書からの抜粋——を生成し、生データは決して送信しません。
- そのサマリーはローカルのOllamaモデル(デフォルトは3Bパラメータの小型モデル)に送られます。処理はバックグラウンドタスクとして実行されキャッシュされ、パネルは完了までポーリングします。
- 完全にオプションで完全にオンプレミスです——データはサイト外に一切出ず、ローカルモデルのエンドポイントに到達できない場合、ボタン自体が表示されません。これは個人情報保護法における越境データ移転の観点からも重要なポイントです。
- 2通りの方法で誘導できます。オペレーターは自由記述のフォーカスノート(「なぜスクラップが急増したのか」)を追加でき、アップロードされた設備マニュアルは、モデル自身の一般知識よりも優先して信頼すべき根拠情報として与えられます。
これは、simpliSOC側で現場ログを読ませるために採用しているのと同じアーキテクチャパターンです——構造化されたコンテキストを読み、平易な言葉でサマリーを生成する小型のオンプレミスモデルであり、あくまで助言のみで、設備への書き戻しは一切行いません。simpliMESのAI Analyzeパネルは、そのパターンをMES自体の内部に実装したものであり、セキュリティアラートではなく、ラン・ダウンタイム・校正にスコープを絞っています。
9. ERP連携:ERP前提のコアではなく、コネクタ契約
- 単一のコネクタ契約(
ErpConnector)だけがsimpliMESとERPを接続する唯一の手段であり、各実装は自己登録されます。ERPNextがリファレンス実装であり、汎用RESTコネクタも同梱されています。 - スケジュール実行されるプルがコネクタを駆動し、マスターデータおよびディスパッチサービスを通じてupsertを行い、エンティティごとに1行のsyncログを書き込みます——これにより、1件の同期失敗がバッチ単位の成功メッセージの陰に隠れることを防ぎます。
- ERPNext webhookエンドポイントは、定数時間比較の共有トークンで認証されたWork Orderイベントを受け付けます。
- 特定の顧客の確認がまだ必要なフィールドマッピング上の前提は、コード内に直接マークされ、コネクタ仕様書にも明記されます——暗黙のままにはしません。
10. レポート、2つのWeb体験、そしてライブ編集可能な設定
- バッチ証明書および品質証明書はバックグラウンドタスクでPDFとしてレンダリングされます。
- アプリ内ダッシュボードはサーバーレンダリングのHTMXで構築され、4つのタイルをカバーします。production(作業指示ステータス、稼働中のラン、期限内/超過)、equipment(running/idle/downのドーナツグラフ、現在のダウンタイム)、today(良品/不良品、理由別ダウンタイム)、attention(校正期限超過、同期エラー、滞留している作業指示)です。
- Metabaseは読み取り専用のデータベースロールに対して別コンテナとして提供され、固定ダッシュボードでは対応できないアドホックなBI用途に応えます。
- 2つの明確に分離されたWeb体験が2つの利用者層に対応します。スタッフシェル——左ナビゲーション、サーバーレンダリング、ロールでフィルタされたナビゲーションと各項目のツールチップ——と、前述のオペレーターキオスク(スタッフログインなしでアクセス可能)です。
- ライブ編集可能な設定ページは、AI Analyzeのモデル・URL・タイムアウト、サイト情報、そして設備やタグの変更がコネクタ設定を自動publishするかどうかをカバーします——すべて再デプロイなしで変更できます。
11. v1で実装済みのもの、意図的に先送りしたもの
この点を正確に伝えることは、個々の機能そのものより重要です。ロードマップ上の項目を現行機能として提示してしまうことは、導入途中でプラント側の信頼を失う最も早い道だからです。日本の製造現場では特に、J-SOXの内部統制評価や経済安全保障推進法に基づく重要設備の管理体制において、「今何ができるか」の正確な申告が求められます。
v1で出荷済み: discrete・batch両方の作業指示ディスパッチと実行、3プロトコルにわたる自動データ収集に加え手動入力とダウンタイム記録、ライブ状態・フロアプラン・校正・保守を備えた完全な設備階層、基本的なトレーサビリティと消費記録の追跡、バッチ証明書、アプリ内ダッシュボード一式、ERPNextおよび汎用RESTとの連携、そしてローカルLLMによるAI Analyzeパネル。
次回以降のリリースに先送り: 前方/後方トレースUIと完全なトレースレポート、ファイル/CSVおよびRESTウェブフックによるデータ収集の取り込み、工程内品質チェック、不適合・保留ワークフロー、完全なOEEダッシュボード群、規格別コンプライアンスパック(AMS2750、CQI-9パイロメトリ)、SPC、複数サイト集約、有限能力スケジューリング。
FAQ
simpliMESは今日、前方・後方の完全なトレーサビリティに対応していますか?
ロット、シリアル、消費記録、親子リンクといった基礎データは今日すでに取得されています。しかし、それらを参照するトレースUIと完全なトレースレポートはまだ構築中であり、現行リリースではなく次回リリースを予定しています。
AI Analyzeパネルが設備を操作したりセットポイントを変更したりすることはありますか?
ありません。構造化されたサマリーを読み込み、テキストを生成するだけです——平易な言葉での説明と、該当する場合は注目すべき点の提案です。PLCへの書き込み、セットポイントの調整、案件の自動クローズは一切行いません。人間が読んで判断します。
simpliMESはERPを一切接続せずに運用できますか?
可能です。作業指示はsimpliMES内で手動作成できます。ERPコネクタは付加的なものであり、日々の実行運用における必須の依存関係ではありません。
simpliMESにはSPCや完全なOEEが標準で含まれていますか?
まだ含まれていません。OEE風のビューはダッシュボードタイルと設備のライブ状態追跡を通じて今日でも利用できますが、完全なOEEダッシュボード群と統計的工程管理(SPC)は次回リリースへの先送り項目です。
12. シミュレーターと実際のデモへの道筋
リポジトリにはデバイスシミュレーターが同梱されています——OPC-UA炉、Modbusプレス機、S7焼き戻し炉——それぞれが共有レジストリを通じて、リアルなノイズを伴いながら目標値へ値を近づけていきます。加えて、信号ごとの手動オーバーライドとデバイスごとのシナリオボタン(加熱、ソーク、冷却、ジャム、過熱)を備えたWebコントロールパネルもあります。オートパイロットモードは、シミュレートされたフロア全体を指定時間、現実的なシナリオで巡回させた後、すべてを静止状態に戻します——実際のプラントを用意できないデモ、トレーニング、営業商談の場で、動作する実システムを見せたいときに有用です。
13. デプロイメントとスタック——実際に運用する人のために
工場サイトごとにDocker Composeスタックを1つ:core、connector、worker、MQTTコンシューマー、PostgreSQL/TimescaleDB、Redis、Mosquitto、Caddy、Metabase。CaddyはTLS終端とリバースプロキシを担い、connectorは設定をキャッシュし計測値をディスクにスプールするため、コアが保守のためダウンしてもサイトはデータを失わずに稼働し続けられます。
| レイヤー | 選択技術 |
|---|---|
| コアアプリ | Python 3.12, Django 5, Django REST Framework |
| エッジコネクタ | asyncio, OPC-UA/Modbus/S7クライアントライブラリ, ローカルSQLiteスプール |
| メッセージング | MQTT(Mosquitto)——coreとconnector間の唯一のチャネル |
| 時系列 | PostgreSQL + TimescaleDBハイパーテーブル |
| 非同期処理 | Celery + Redis、定期タスク用のスケジュールジョブ |
| ローカルLLM | Ollama、オプション、オンプレミス |
| UI | サーバーレンダリングDjangoテンプレート + HTMX、CDNなし、JSフレームワークなし |
| レポート | PDF生成、BI用Metabase |
14. 実際の導入プロジェクトにおける位置づけ
simpliMESはパッケージ化されたSKUではなく、プラントごとにスコープが決められます。SimplicoのMES開発サービスには、このような開発のためのティア構成、価格帯、週単位のパイロットロードマップが用意されています。もし現場がすでに複数プロトコル・複数世代の混在状態にあるなら——五つの方言問題——それはまさにsimpliMESが吸収するために作られたエッジレイヤーのスコープです。
チームへの連絡はhello@simplico.net、電話またはWhatsAppは(+66) 97 496 6397、LINEはID iiitum1984までお願いします。
出典:
- MES Development Service — Simplico
- SimpliMES Lite — Lightweight MES for Small & Mid-Sized Manufacturers
- 工場の現場は五つの方言を話している:OPC UAだけではプロトコルの分断は解決しない理由
最新の記事
- simpliRecycle徹底解説:計量から消費税インボイス発行まで、6つのアプリで回すスクラップヤード運営 August 29, 2026
- パスキーの「登録」が新しい攻撃面になる:Pass-the-Passkeyが IdP 運用に突きつけたもの August 22, 2026
- 攻撃者はすでにAIエージェントかもしれない — OpenAIとHugging FaceのインシデントがSOCに突きつけたもの August 17, 2026
- OCPI 2.2.1 実装ガイド:Locations、Sessions、CDR をどう構築するか August 7, 2026
- OCPIとは何か:CPOとeMSPがEVローミングのために本当に構築すべきもの August 7, 2026
- 工場の現場は五つの方言を話している:OPC UAだけではプロトコルの分断は解決しない理由 July 30, 2026