古いけど動いてる現場 を救う!Python製シリアル通信ダッシュボードの使い方と導入例

Modern Serial Communication システム構成 レガシー機器 製造装置 RS-232C (20-30年前) 検査装置 RS-485 (高額設備) TCPブリッジ socket://host:port Modern Serial Communication Python + Textual TUI リアルタイム モニタリング データ送受信 & 統計表示 CSV保存 設定ファイル 拡張可能 オープンソース Excel連携 CSV出力 自動分析 ダッシュボード TUIインターフェース スパークライン表示 将来の拡張 WebSocket対応 MQTT統合 クラウド連携 主な活用シーン 製造業 旧型検査装置 データ自動収集 Excel分析 DX化の第一歩 教育現場 技術学校実習 プロトコル解析 Python学習 実践的教材 開発支援 ファームウェア デバッグ UARTログ監視 効率向上 🔗 GitHub: github.com/superdoccimo/modern-serial-communication MITライセンス・オープンソース

なぜ私はこのツールを開発したのか──その理由は意外なところにあります。

今の時代、技術ブログといえばAI、クラウド、生成系の最新ネタが主流です。
しかし、私が選んだテーマは“シリアル通信”、それもRS-232やRS-485といった、いわゆるレガシー技術に関するものでした。

「なぜそんな古い分野を?」と聞かれることもあります。
でも、私はこう答えます。

“それでも現場では、まだ確実に必要とされているからです。”

製造業や計測機器の現場では、今も数十年前の装置が日々稼働しています。
これらは高額な設備であり、簡単に入れ替えられるようなものではありません。
「動いている限りは触らない」──これが、多くの現場で共有されている常識です。

現実に即した、見過ごされがちな“理由”

この分野に取り組む価値は、決して懐古主義ではありません。
むしろ、現場で日々奮闘している技術者の視点に立てば、この領域は今も“戦場”です。

たとえば──

製造装置や測定器の多くが、20〜30年前の機器をいまだに使用している
それらはRS-232CやRS-485など、シリアル通信を通じて制御されている
更新するには数百万円〜数千万円、時には億単位の費用が発生する

こうした現実がある以上、単に「新しい技術に置き換えればいい」という話では済まされません。
“動いているものを、無理に止めない”というのは、コスト管理だけでなく、品質管理・納期・トラブル回避においても非常に合理的な判断です。

中小企業・地方工場ではどうか?

問題はそれだけではありません。
たとえば地方の工場や、長年現場を支えてきた中小企業では、次のような事情もあります。

IT予算がごく限られており、最新ソリューションの導入が難しい
現場ではVBAとExcelがいまだ現役。これ以外は「わからない」
Pythonや.NETへの全面移行は、外注費と教育コストがかかるため現実的でない

こうした現場で大切なのは、“今ある資産を活かしつつ、段階的に未来へつなげる手段”です。
私は、それこそが真に現実的な技術支援だと考えています。

このような背景を踏まえて、「Modern Serial Communication」というツールを開発しました。
次は、このツールがどのように役立つのか──その戦略的価値とともに、より詳しくご紹介します。

戦略的な価値──なぜ“レガシー対応”が今こそ重要なのか

あなたが今この記事を読んでいるということは、
すでに“最新技術”よりも、“今動いているシステムをどう守るか”に強い関心がある方かもしれません。

そして、そうした方々が検索してこの記事にたどり着いたという事実こそ、
この分野にニッチでありながら、確実なニーズが存在している証拠です。

そのような背景に対して、私たちができることは明確です。

──段階的な移行パスを用意すること。

「全部をいきなり新しくする」のではなく、
「今の資産を活かしつつ、無理なくステップアップする道筋を示す」こと。

これが、Modern Serial Communicationが担う最大の価値だと考えています。

既存資産を活かし、未来につなげる“橋渡し”ツール

このツールは、いきなりWebベースの巨大なダッシュボードを導入するのではありません。
まずはPython + Textualを使ったターミナルUIからスタートすることで、

  • 古いPCでも動作可能
  • セットアップが非常に軽量
  • 既存のCOMポートやTCPブリッジにそのまま接続できる

という、“現場にやさしい第一歩”が実現できます。

そこから、

  • CSVエクスポートによるExcelとの連携
  • JSON Linesログによる自動解析の導入
  • MQTTやWebSocketによるクラウド接続(将来的に)

と、段階的にスケールアップすることができます。

教育・コンサルティング機会としての広がり

そして、これは単なるソフトウェアの話にとどまりません。
このツールの導入を通して、社内でPythonを学ぶ技術者が生まれたり、
「自動ログ収集」や「CSV解析」をきっかけに、業務改善の新しい視点が育つ可能性もあります。

  • 現場の声が見えるようになる
  • データがたまっていく
  • 分析ができるようになる
  • 提案が通るようになる

つまり、技術だけでなく、風通しまで変わることだってあるのです。

段階的DX移行パス “いきなり全部新しく” ではなく “今の資産を活かしつつ無理なくステップアップ” 現状 レガシーシステム 手動モニタリング 紙ベース記録 属人化 今すぐ 軽量導入 ステップ1 Modern Serial Communication導入 TUIリアルタイム表示 CSVエクスポート 既存PC・ポートそのまま 設定ファイル管理 1-2週間 データ活用 ステップ2 Excel分析・業務改善 蓄積データの分析 JSON Lines自動ログ カスタムフィルタ Python学習開始 1-3ヶ月 拡張・連携 ステップ3 クラウド・IoT連携 WebSocket出力 MQTT統合 ダッシュボード 自動通知 プラグイン拡張 3ヶ月~ 完全DX化 未来 完全統合システム 予測保全 AI分析 全自動化 ROI最大化 6ヶ月~ 段階的移行の主なメリット 💰 コスト効率 ・初期投資最小限 ・既存設備活用 ・段階的予算 ・ROI早期実現 億単位の更新不要 🎯 リスク軽減 ・動作中システム保護 ・段階的検証 ・バックアップ確保 ・トラブル時復旧 “動いているものは触らない” 👥 人材育成 ・Python学習機会 ・段階的スキルアップ ・現場主導の改善 ・成功体験蓄積 Excel → Python へ自然移行 ⚡ 即効性 ・1週間で効果実感 ・軽量セットアップ ・すぐ使える機能 ・データ収集開始 古いPCでも動作 Modern Serial Communication – TUIインターフェース Modern Serial Communication Dashboard 🔌 接続制御 ポート: COM1 🟢 接続 ✅ 接続済み 📊 受信データテーブル TIME DIR DATA LENGTH 17:32:12 RX SENSOR,01,25.30,TEMP 21 17:32:13 TX HEARTBEAT,01,ALIVE 20 17:32:14 RX SENSOR,02,26.15,TEMP 21 📈 データフロー (スパークライン) 📈 統計情報 受信パケット: 1,247 送信パケット: 156 総バイト数: 28,945 経過時間: 00:15:23 平均レート: 31.4 B/s 最終更新: 17:32:14 📤 データ送信 SENSOR,01,25.30,TEMP 送信 プリセット: SENSOR STATUS CUSTOM 📝 ログ表示 [17:32:12] ✅ ポートCOM1に接続しました [17:32:12] 📥 RX: SENSOR,01,25.30,TEMP [17:32:13] 📤 TX: HEARTBEAT,01,ALIVE [17:32:14] 📥 RX: SENSOR,02,26.15,TEMP [17:32:15] 📥 RX: SENSOR,03,24.80,TEMP [17:32:16] 💾 データをCSVに保存しました [17:32:17] 📊 統計情報を更新しました [17:32:18] 📥 RX: STATUS,OK,READY ⚙️ 制御・設定 切断 再接続 設定 ファイル操作: CSV保存 (s) ログクリア (c) 現在の設定: ポート: COM1 ボーレート: 9600 データビット: 8 パリティ: None ● 接続中 Modern Serial Communication v1.0.0 Python 3.11 + Textual Help: F1 リアルタイム接続制御 COMポート・TCP対応 設定ファイル自動読込 リアルタイム統計 パケット数・転送量 パフォーマンス監視 双方向通信 データ送信機能 プリセット対応

セットアップ手順──最初の一歩をスムーズに

このツールは、Python 3.8 以上が動作する環境であれば、Windows・Linux・macOSのいずれでも動作します。
必要なのは、わずか数ステップです。

1. GitHubからプロジェクトをダウンロード

まずは公式リポジトリをクローンします。
(Gitを使わない方は、ZIPでダウンロードしても構いません)

git clone https://github.com/superdoccimo/modern-serial-communication.git
cd modern-serial-communication

2. Python仮想環境(推奨)

他のPythonプロジェクトと分けて動作させるために、仮想環境を作成しておくと安心です。

python -m venv venv
source venv/bin/activate   # Windows の場合: venv\Scripts\activate

3. 依存ライブラリのインストール

必要なライブラリは requirements.txt にすべて記載されています。

pip install -r requirements.txt

たったこれだけで、すぐに準備が整います。

4. シリアルダッシュボードの起動

いよいよ、リアルタイムのシリアル通信ダッシュボードを立ち上げてみましょう。

python serial_dashboard.py

起動すると、コンソール上にグラフィカルなTUIインターフェースが表示されます。
ここから、ポート名の入力やデータ監視がすぐに始められます。

ダッシュボードの使い方──接続から送信、ログまで一括操作

Modern Serial Communicationを起動すると、ターミナル上に美しいTUIインターフェースが表示されます。
以下が起動直後の画面イメージです。

接続パネル

画面左上の「🔌 接続制御」エリアに、使用したいポートを入力します。

  • COMポート(例:COM1, /dev/ttyUSB0 など)
  • 仮想環境やVMの場合:socket://localhost:5000 のようなTCPブリッジ

入力後、[🟢接続] ボタンをクリックすると、リアルタイムモニタリングが開始されます。
接続に成功すると、下部ログに「✅ 接続しました」の表示が出ます。

送信パネル

接続後は、右下の「📤 データ送信」パネルから任意の文字列を送信できます。

たとえば、次のようなデータを送ってみてください:

SENSOR,01,25.30,TEMP

送信後には、ログビューに青い送信メッセージが表示され、
同時に中央のデータテーブルにも反映されます。

受信ログとスパークライン表示

受信したデータは「📥 RX」ラベルとともにログに記録され、
スパークライン(折れ線グラフ)によりデータの流れ・密度が視覚的に確認できます。

さらに、右下の「統計情報」パネルでは、

  • 受信/送信パケット数
  • 合計バイト数
  • 経過時間と平均レート

といった情報が自動で更新され続けます。

受信データをCSVで保存する

リアルタイムで受信されたデータは、ただ画面に表示されるだけではありません。
ワンキーでCSVとして保存することができます。

キーボードで s を押すと、
現在のデータバッファがCSVファイルとしてエクスポートされます。

ファイル名は以下のように自動生成されます:

serial_data_20250605_173212.csv

出力されるCSVの内容は以下のような構成です:

timestampdirectiondatalength
2025-06-05T17:32:12RXSENSOR,1,25.30,TEMP21
2025-06-05T17:32:13TXHEARTBEAT,01,ALIVE20

この形式により、Excel・スプレッドシート・BIツール等への取り込みも容易になります。

serial_config.ini で通信設定を柔軟に変更

より細かいポート設定やTCP接続先の変更は、
設定ファイル serial_config.ini を直接編集することで柔軟に対応できます。

たとえば、通常のCOMポート接続の設定:

[SERIAL]
port = COM1
baudrate = 9600
bytesize = 8
parity = N
stopbits = 1
timeout = 1.0

VMや別マシン経由のTCPブリッジ接続の場合は、次のように設定します:

[NETWORK]
tcp_host = 192.168.0.100
tcp_port = 5000
use_tcp = true

このファイルは起動時に自動読み込みされるため、毎回コマンド引数を指定する必要はありません。

テスト送信スクリプトで動作確認する

手元に物理的なシリアルデバイスがなくても問題ありません。
本プロジェクトには、仮想ポート(例:COM2→COM1)を使って疑似データを送信するスクリプトが付属しています。

起動方法:

python test_data_sender.py

このスクリプトは、以下のような多様なデータを一定間隔でCOMポートに送信します。

  • センサーデータ(温度・湿度・圧力)
  • ステータス通知
  • JSON形式の複合メッセージ
  • 大量連続送信モード(BULK TEST)

これにより、実際の機器がなくても安心してテスト運用が可能になります。

差別化の鍵──“誰でも拡張できる”という圧倒的な柔軟性

市販されているシリアル通信ツールは、確かに安定していて高機能なものもあります。
しかし、多くは以下のような制限があります。

  • 機能がブラックボックス化されており、内部の処理が見えない
  • 特定のOS(主にWindows)にしか対応していない
  • 商用ライセンスが必要で、カスタマイズには別料金が発生
  • データ保存や外部連携は「上位エディション」のみで対応

これに対して、Modern Serial Communication は真逆の設計思想を持っています。

誰でも、必要なときに、自由に書き換えられる

このツールはすべてPythonの標準構文+広く使われているライブラリで構成されています。
つまり、次のような拡張が現場のエンジニアや学生でも可能です。

  • 送信データのプリセット化
  • 受信データの自動フィルタリング
  • ログをS3やGoogle Driveに自動保存
  • エラー検出時に音声やSlack通知を飛ばす
  • 独自プロトコル(Modbusなど)との連携

これらは「ソースコードを数行変更するだけ」で実現できます。

実際に拡張されている例

たとえば既に一部のユーザーからは、次のような実装報告も届いています。

  • 小型Linux端末(Raspberry Pi)での24時間監視
  • IoTゲートウェイ経由でMQTTパブリッシュに変換
  • Textual UIを日本語から英語/中国語にローカライズ
  • 通信エラー時に自動で再接続を試みるカスタム版の作成

これらの活用例は、市販ツールではライセンス契約や開発依頼が必要になるようなものばかりです。

活用シーンと導入事例──現場で“今”使われている

このツールはまだ誕生して間もないプロジェクトですが、
既にいくつかの現場や開発プロジェクトにおいて実際に導入が始まっています。

その事例をご紹介します。

製造業:旧型検査装置との接続

ある地方工場では、1990年代に導入された温度・圧力センサー付きの検査装置が今も稼働中です。
この装置はRS-232経由でPCにデータを送信していますが、これまでの手順は:

  1. Windows XP + HyperTerminal でモニタリング
  2. 手動で画面を見て値を記録
  3. 時にはプリントスクリーンで紙に出力

という、まさに「属人化と紙運用の極み」といえる状態でした。

この現場で Modern Serial Communication を導入した結果、

  • データがリアルタイムでテーブル表示される
  • CSVとして保存でき、Excel処理が可能に
  • 数ヶ月分の記録もJSON Lines形式で蓄積

といった成果が得られ、現場の再教育なしでDX化の一歩が実現しました。

教育用途:技術学校でのプロトコル解析実習

ある高専では、情報通信分野の実習にこのツールが採用されました。
学生たちは2人1組で、1台のPCと2台のUSB-シリアル変換器を使い、

  • 一方で疑似センサーデータを送信
  • 他方でTUI上のログ表示・統計情報を観察

という「送信側と解析側の両方の立場を体験する」カリキュラムを実施しました。

市販ツールと異なり、内部コードがすべて読めるため教材としても適している点が評価され、
Pythonの基礎学習とも自然につながっているとのことです。

開発支援:ファームウェアデバッグ用途

組み込みエンジニアの一部では、
UART通信で出力されるデバッグログをこのツールで監視する活用がされています。

  • フィルタ付きのログ表示
  • エラーパターンの検出(文字列マッチ)
  • 特定のフレーズで色を変える拡張(Textual CSS)

といったカスタマイズを施すことで、日々の開発効率が格段に向上したという声も届いています。

このように、Modern Serial Communication は単なるモニターではなく、
“現場の課題に即した拡張可能な基盤”として評価されつつあります。

今後の展望──拡張性と継続開発のために

Modern Serial Communication は、現在も継続的に開発が進められており、
今後さらに広い分野での活用を目指しています。

以下は、現在予定されているアップデート・拡張項目です。

近い将来に追加予定の機能

  • WebSocket出力対応
     受信データをリアルタイムでブラウザに転送し、
     Webベースの可視化やクラウド連携が可能に。
  • MQTT統合(IoT対応)
     受信データを MQTT にパブリッシュし、
     Node-RED や Home Assistant との接続も視野に。
  • カスタムプロトコル用プラグインアーキテクチャ
     Modbus や独自バイナリプロトコルのデコード処理を柔軟に追加できる仕組みを整備予定。
  • 高度なフィルタリング機能
     受信データの一部のみを抽出・表示・通知することで、
     エラー検出や監視が効率化されます。

長期的な構想

  • WebベースGUIの選択肢
     TUIに加えて、ElectronやFastAPIベースのGUI版も提供検討中。
  • SQLiteやInfluxDBとの連携
     長期ログの蓄積・クエリ・時系列分析への対応。
  • 複数ポートの同時監視
     複数のCOMポートを1画面で統合表示するマルチチャンネル対応。
  • シリアルプロトコルデコーダーのテンプレート化
     たとえば「Modbus ASCII」や「NMEA 0183」などの定番プロトコルの組み込み

貢献の方法──誰でも参加できるオープンな開発へ

Modern Serial Communication は、完全にオープンソース(MITライセンス)で提供されています。
GitHub から自由にクローン・変更・再配布が可能であり、以下の方法で貢献が可能です。

Modern Serial Communication 活用事例と拡張性 実際の導入事例 🏭 製造業での活用 地方工場 – 検査装置データ収集 導入前 Windows XP + HyperTerminal 手動記録・紙運用 属人化の極み 導入後 リアルタイム表示 CSV自動保存 Excel分析可能 成果 ✅ 1990年代設備を活用したDX化の第一歩 ✅ 再教育なしで効果実現・数ヶ月分のデータ蓄積 🎓 教育現場での活用 高専 – プロトコル解析実習 実習内容 学生A 疑似センサー データ送信 学生B TUIログ 統計観察 共同作業 コード解析 Python学習 ✅ 送信側・解析側の両方を体験 ✅ 内部コードが読める教材 ✅ Pythonの基礎学習と自然に連携 ✅ 市販ツールとは異なる学習効果 ⚙️ 開発支援での活用 組み込みエンジニア – ファームウェアデバッグ 標準機能 UART通信監視 デバッグログ表示 リアルタイム受信 カスタム拡張 フィルタ付きログ エラーパターン検出 色分け表示 実際のカスタマイズ例 • 特定フレーズでの色変更 (Textual CSS) • 文字列マッチによるエラー検出・日々の開発効率向上 拡張性とカスタマイズの可能性 Modern Serial Communication Python + Textual ベース MITライセンス・完全オープンソース “誰でも、必要なときに、自由に書き換えられる” 📊 データ処理拡張 • 送信データのプリセット化 • 受信データの自動フィルタリング • CSV/JSON/XML変換 • 統計分析機能 • データバリデーション ☁️ クラウド連携 • S3・Google Drive保存 • MQTT・WebSocket対応 • InfluxDB・SQLite連携 • REST API提供 • IoT プラットフォーム統合 🔔 通知・アラート • エラー検出時の音声通知 • Slack・Teams・メール送信 • 閾値監視・アラーム • ダッシュボード連携 • 予測保全アラート 🔧 プロトコル対応 • Modbus ASCII/RTU • NMEA 0183 • 独自バイナリプロトコル • プラグインアーキテクチャ • パケット解析・デコード 🎨 UI・UX拡張 • Webベース GUI版 • Electron デスクトップ版 • 多言語対応(i18n) • テーマ・カラーカスタム • 複数ポート同時監視 実際の拡張実装例 Raspberry Pi 24時間監視 🔸 小型Linux端末での運用 🔸 無人データ収集 🔸 定期CSV出力 🔸 リモート監視対応 ※ 既に導入報告あり IoTゲートウェイ連携 🔸 MQTT パブリッシュ変換 🔸 Node-RED フロー統合 🔸 InfluxDB 時系列保存 🔸 Grafana ダッシュボード ※ コミュニティ開発中 多言語ローカライズ 🔸 英語・中国語UI対応 🔸 Textual CSS カスタム 🔸 国際展開対応 🔸 文字コード自動判定 ※ 海外ユーザー要望 自動再接続機能 🔸 通信エラー検出 🔸 指数バックオフ再接続 🔸 エラーログ詳細出力 🔸 通知機能統合 ※ 安定性向上要望

開発・改善に協力するには:

  • GitHubリポジトリをフォークしてPull Requestを送る
    https://github.com/superdoccimo/modern-serial-communication
  • Issueでバグ報告や改善提案を書く
  • 自作の拡張コードを共有する(例:フィルタ拡張、Slack連携など)
  • ドキュメントや翻訳を追加する
  • 実際の利用事例を紹介する記事や動画を公開する

最後に──「古い技術」こそ、今求められている

多くの人は「AI」や「最新技術」に注目しがちです。
でも、本当に困っている現場に必要なのは、
すでにある資産を活かし、未来へつなぐ“橋渡し”の技術です。

Modern Serial Communication は、そうした現場の声に応えるために生まれました。
もしこの記事が少しでも役に立ったと感じていただけたなら、
ぜひGitHubでスターをつけたり、同じ課題を持つ人に共有していただければ嬉しいです。

Linuxでサーバーを起動するには以下の記事に続きます。

タイトルとURLをコピーしました