なぜ私はこのツールを開発したのか──その理由は意外なところにあります。
今の時代、技術ブログといえば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解析」をきっかけに、業務改善の新しい視点が育つ可能性もあります。
- 現場の声が見えるようになる
- データがたまっていく
- 分析ができるようになる
- 提案が通るようになる
つまり、技術だけでなく、風通しまで変わることだってあるのです。
セットアップ手順──最初の一歩をスムーズに
このツールは、Python 3.8 以上が動作する環境であれば、Windows・Linux・macOSのいずれでも動作します。
必要なのは、わずか数ステップです。
1. GitHubからプロジェクトをダウンロード
まずは公式リポジトリをクローンします。
(Gitを使わない方は、ZIPでダウンロードしても構いません)
git clone https://github.com/superdoccimo/modern-serial-communication.git
cd modern-serial-communication2. Python仮想環境(推奨)
他のPythonプロジェクトと分けて動作させるために、仮想環境を作成しておくと安心です。
python -m venv venv
source venv/bin/activate # Windows の場合: venv\Scripts\activate3. 依存ライブラリのインストール
必要なライブラリは 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の内容は以下のような構成です:
| timestamp | direction | data | length |
|---|---|---|---|
| 2025-06-05T17:32:12 | RX | SENSOR,1,25.30,TEMP | 21 |
| 2025-06-05T17:32:13 | TX | HEARTBEAT,01,ALIVE | 20 |
この形式により、Excel・スプレッドシート・BIツール等への取り込みも容易になります。
serial_config.ini で通信設定を柔軟に変更
より細かいポート設定やTCP接続先の変更は、
設定ファイル serial_config.ini を直接編集することで柔軟に対応できます。
たとえば、通常のCOMポート接続の設定:
[SERIAL]
port = COM1
baudrate = 9600
bytesize = 8
parity = N
stopbits = 1
timeout = 1.0VMや別マシン経由の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にデータを送信していますが、これまでの手順は:
- Windows XP + HyperTerminal でモニタリング
- 手動で画面を見て値を記録
- 時にはプリントスクリーンで紙に出力
という、まさに「属人化と紙運用の極み」といえる状態でした。
この現場で 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 から自由にクローン・変更・再配布が可能であり、以下の方法で貢献が可能です。
開発・改善に協力するには:
- GitHubリポジトリをフォークしてPull Requestを送る
https://github.com/superdoccimo/modern-serial-communication - Issueでバグ報告や改善提案を書く
- 自作の拡張コードを共有する(例:フィルタ拡張、Slack連携など)
- ドキュメントや翻訳を追加する
- 実際の利用事例を紹介する記事や動画を公開する
最後に──「古い技術」こそ、今求められている
多くの人は「AI」や「最新技術」に注目しがちです。
でも、本当に困っている現場に必要なのは、
すでにある資産を活かし、未来へつなぐ“橋渡し”の技術です。
Modern Serial Communication は、そうした現場の声に応えるために生まれました。
もしこの記事が少しでも役に立ったと感じていただけたなら、
ぜひGitHubでスターをつけたり、同じ課題を持つ人に共有していただければ嬉しいです。
Linuxでサーバーを起動するには以下の記事に続きます。



