2026 年 8 月 31 日更新: Python 3.14 で従来の .exe フルインストーラと py ランチャーが非推奨になり、Python Install Manager に置き換わったことを STEP 2 に反映しました。あわせて、STEP 2 に埋もれていた「管理者権限がない」「社内プロキシ」「閉域網」を独立章(4 章)に引き上げ、図解 3 点の追加、リンク切れ 1 件の差し替え、推奨書籍の版情報の更新を行っています。あわせて、3.1 に「入っていなかった人の最短手順」、4.3 にオフライン導入のコマンド、10 章の直前に 5 STEP 進級チェックリスト、記事末に参考文献ブロックを追加しました。
1. はじめに — Web 系の学習ルートとは途中で分かれる
「Python を学ぶ」という言葉は世の中にあふれていますが、その大多数は Web 開発、データサイエンス、機械学習を主軸にした学習体系です。書店に並ぶ Python 入門書、動画講座、解説記事——いずれも、Django で Web アプリを作る、scikit-learn で予測モデルを作る、自動化スクリプトでファイルを整理する、といった文脈で語られます。
これらは確かに有益です。しかし、製造業の現場で Python を活かそうとした瞬間、Web 系の学習体系では足りないことに気づきます。基礎を終えた先で、進む道が分かれるからです。
製造業エンジニアが直面する固有の課題
本サイトの想定読者である生産技術者・設備保全・社内 SE・品質管理エンジニアの方々は、Python を学ぶ過程で次のような壁に必ずぶつかります。
- 社内ネットワークから pip install ができない。プロキシサーバー、ファイアウォール、社内 PyPI ミラー(PyPI = Python 公式のライブラリ配布サイト。その社内コピーのこと)——一般的な入門書には登場しない問題(4 章)
- 配布先の現場 PC は Windows、しかも文字コードは CP932。サンプルコードをそのままコピペすると、日本語のログが文字化けする(STEP 2)
- 現場 PC は古い世代の Windows、たまに 32bit、ネットワークも限定。最新ライブラリはおろか、最新の Python すら対象外のことがある(STEP 2)
- ユーザーは IT に詳しくない。「ログファイルを開いて確認してください」が通じない世界(STEP 4)
- 連続稼働するアプリが必要。「動いた」で終わらせず、24 時間メモリリークなく動かす設計が要る(STEP 4)
- 機器との通信が前提。PLC、産業センサー、計測器——Web の入門書に socket 通信は出てきても、Modbus や MC プロトコルは扱われない(STEP 3)
結果として、Web 系の入門コースを完走しただけでは、現場で「で、これで何ができるの?」となってしまいます。
「目的逆算型」の学習が必要
本ロードマップは、製造業の現場で Python を使うことを最終目的に置き、そこから逆算して学習する範囲を絞り込んでいます。
- Web フレームワークは扱いません(製造業の現場では稀)
- 機械学習も初期では扱いません(必要になってから学ぶ方が効率的)
- その代わり、Windows 環境、産業機器との通信、24 時間運用、配布——これら現場固有の要素に踏み込みます
各 STEP の区切りは「何を勉強したか」ではなく「終わったときに手元に何が残るか」で決めています。全体像は次の図のとおりです。
5 つの STEP を合計すると 18〜26 週、およそ 4〜6 ヶ月が目安です(業務時間外に週 5〜10 時間を確保できた場合。所属や前提知識で前後します)。
進みが遅くても焦る必要はありません。各 STEP の末尾に置いた判断基準を満たしてから次へ進む方が、結果的に速く到達します(全 26 項目の一覧)。本サイトの方針として、すべての記事は「動くもの」を作ることを最優先にしています。「完璧に理解してから次へ」ではなく「動かしながら理解を深める」アプローチです。
2. STEP 1: Python 基礎を最短で押さえる
学ぶ目的
後続ステップの土台を作ります。自分で書いたコードが何をしているか説明でき、エラーメッセージを読んで対処できるレベルが目標です。「Python とは何か」の哲学的理解は不要、「とにかく書ける」を優先します。
習得すべき範囲
- 文法: 変数、制御構文(if、for、while)、関数定義、クラス定義、インデント
- データ型: list、dict、tuple、set、str、int、float、bool、None
- ファイル I/O:
open()、with構文、CSV ファイルの読み書き - 例外処理:
try / except / finally、独自例外 - 標準ライブラリ:
os、pathlib、datetime、json、csv、logging、argparse - 仮想環境とパッケージ管理:
venv、pipの基本、requirements.txt
クラス継承、メタクラス、デコレータ、ジェネレータの深い理解は、この段階では不要です。必要になった時に戻ってきて学べば十分です。
推奨教材
この段階は無料の一次情報だけで十分足ります。書籍を買う場合の版の選び方は 8 章にまとめました。
- Python 公式チュートリアル(無料・日本語)— 一次情報。全 16 章で全体像を掴めます
- Microsoft Learn「Python プログラミングの概要: パート 1 - 基礎」(無料・日本語)— 4 モジュール構成のラーニングパス。3 つ目が「Visual Studio Code のインストールと構成」で、そのまま STEP 2 につながります
ハマりどころ
- 完璧主義の罠: 「全部完璧に理解してから次へ」と思うと永遠に進みません。基礎で 8 割理解したら次のステップへ。残り 2 割は実装中に補完される
- 写経で満足してしまう: 教材通り写すだけでは身につかない。必ず「自分なりの目的で書き直す」「動かない時にどう調べるか」を経験する
- Pythonic な書き方を意識しすぎる: リスト内包表記、ジェネレータ式、デコレータ——これらは慣れれば便利ですが、最初は
forループでベタ書きで構いません。読みやすさを優先してください - 環境構築で挫折: Python バージョンの混在、PATH 問題、pip エラー。ここで止まる人がもっとも多いのですが、原因は自分の理解不足ではなく会社の PC の制約であることが少なくありません。STEP 2 と 4 章で扱います
次のステップへ進む判断基準
以下のチェックリストの全項目に YES と答えられたら、STEP 2 へ進んでください。
- CSV ファイルを読み込んで、ある列の合計値を出力できる
- 関数とクラスを使い分けられる(最低限「関数 = 操作」「クラス = 状態を持つもの」の感覚があれば OK)
try / exceptで例外を捕捉して、エラーメッセージをログに記録できるvenvで仮想環境を作り、pip installでライブラリを入れて、スクリプトから利用できる- エラーメッセージ(Traceback)を読んで、どの行のどの問題かを特定できる
3. STEP 2: Windows 開発環境を整える
学ぶ目的
製造業の現場 PC は、ほぼ例外なく Windows です。「自分の PC では動くけど、現場 PC では動かない」を防ぐため、Windows 上での Python 開発・運用に特有の設定と落とし穴を押さえます。
3.1 【2026 年版】py ランチャーと従来インストーラが非推奨に — Python Install Manager(PyManager)への移行
ここは、少し前に書かれた入門記事と食い違う点です。Python 公式ドキュメントの「Using Python on Windows」を 2026 年 8 月 31 日に確認しました。これまで標準だった python.org の .exe フルインストーラと py ランチャーは、どちらも Python 3.14 で非推奨(deprecated)になっています。節タイトルからして「The full installer (deprecated)」「Python launcher for Windows (deprecated)」です。
置き換え先は Python Install Manager(通称 PyManager)で、根拠となる PEP 773 は Status: Final。置き換え対象は従来の .exe フルインストーラと py ランチャー、および Windows ストア版です。一方で NuGet パッケージについては「変更しない」と明記されています(原文は "No changes will be made to the NuGet packages.")。社内のビルドサーバーで NuGet 経由の Python を使っている場合、そちらは今回の変更の対象外です。
ここで「py はもう使えない」と読まないでください。非推奨は「今後はこちらを使ってほしい」という案内であって削除ではなく、3.14 時点では従来のフルインストーラも py も動きます。実際、本記事冒頭のコマンドは Python 3.12.10 の環境で py --version がそのまま通っていますし、PyManager 側でも py.exe は引き続き提供されます。正確な言い方はこうです。従来インストーラは 3.16 以降は作られないと公式が明記しているので、これから覚えるなら PyManager 前提のほうが手戻りが少ない。すでに従来インストーラで入れた環境を今すぐ入れ直す必要はありません。
ただし現場向けに、当サイトとして断定できない点があります。PyManager が閉域網や Microsoft Store をブロックしている現場 PC で導入できるかは未検証です。PyManager は必要な版を後からダウンロードしてくる設計で、公式ドキュメントには外に出られない PC 向けの「オフラインインストール」の手順も用意されています(コマンドは 4.3 に書きました)。それでも、Microsoft Store がブロックされた PC で PyManager 自体を入れられるかを含め、当サイトは実機で確かめていません。現場 PC への展開を計画しているなら、まず検証機で試してから本番の計画を立ててください。
入っていなかった人の最短手順
会社の PC で管理者権限がない場合、現時点の確実解は 4.1 の従来インストーラ側です(当サイトが実際に使っているのもこちらです)。以下は、これから新しく覚える人・自宅 PC で試す人向けの手順です。
冒頭の py --version が通らなかった方は、ここから入ります。以下は公式ドキュメントと PEP 773 に記載された手順で、当サイトの実測環境は従来インストーラで入れた Python 3.12.10 のため、PyManager 経由の導入は当サイトでは実行していません。会社の PC で試す前に 4 章(社内ルールと 3 つの壁)を必ず先に読んでください。
- Python Install Manager を入手する: python.org/downloads からダウンロードするか、Microsoft Store のアプリ(アプリ ID
9NQ7512CXL7T)から入れます。公式ドキュメントは「2 つの版は同一」と書いています。python.org から落としたファイル(MSIX 形式)は、ダブルクリックして「インストール」を選ぶか、PowerShell で次のコマンドを実行しますAdd-AppxPackage <ダウンロードした MSIX のパス> - 使う版の Python を入れる(
3.14の部分が版の指定。古い OS 向けの版選びは後述の「ハマりどころ」を参照)py install 3.14 - 入った版を確認する
py list
従来の .exe フルインストーラ(python.org/downloads)でも 3.14 時点では入ります。当サイトの実測環境がこちらです。今から新しく覚えるなら PyManager、すでに動いている環境があるならそのまま——これが現時点の使い分けです。導入できたら、この記事の冒頭に戻って 3 つのコマンドをやり直してください。
習得すべき範囲
- Python のインストール: Python Install Manager(
py install/py list)、従来インストーラとの違い、複数バージョンの共存 - 仮想環境:
venv、プロジェクトごとの依存分離、requirements.txtでのバージョン固定 - pip と社内ネットワーク: プロキシ設定、社内 PyPI ミラー、オフラインでの導入(4 章)
- Git の基本: commit / branch / 差し戻し(reset・revert)。「v2_最新_本物.py」というファイル名管理からの卒業(詳細は Git とブランチ戦略の記事 で解説予定)
- VS Code の設定: Python 拡張、Pylance、フォーマッタ(Black、Ruff)、デフォルト文字コード
- PowerShell の基本: 実行ポリシー、環境変数、パス操作、スクリプト実行
- 文字コード: CP932(Shift-JIS の Microsoft 拡張)と UTF-8 の違い、BOM、明示的指定、UTF-8 モード
- .bat ファイル: 簡易ランチャー、環境変数設定、エラー時の挙動
推奨教材
- Python 公式: Using Python on Windows(英語・無料)— 導入方式・対応 OS・UTF-8 モード・長いパス制限まで、この章の論点はすべてここが一次情報です
- Microsoft 公式: 初心者向けの Windows の Python(無料・日本語)— winget(
winget install Python.Python.3.14)での導入手順があります。なお同ページには「Microsoft Store から Python をインストールするとpyコマンドは含まれない」という注記もあります。これは従来の Store 版 Python の話で、3.1 の Python Install Manager は Store から入れてもpyを提供します
ハマりどころ
- 日本語ログが文字化け:
open()やprint()で文字コードを指定しないと、Windows のデフォルトである CP932 が使われます(Windows 11 Pro / Python 3.12.10 で実測。locale.getpreferredencoding(False)がcp932を返す)。個々のコードでencoding="utf-8"を明示するのが基本ですが、公式はプロセス全体を UTF-8 に倒す手段も用意しています。-X utf8オプション、または環境変数PYTHONUTF8=1で、同じ環境でどちらでもgetpreferredencoding(False)がutf-8に変わることを確認しました。詳しくは CP932 と UTF-8 の完全対策へ - VS Code が CP932 でファイルを保存してしまう:
"files.encoding": "utf8"をsettings.jsonに設定。文字化けしたファイルは"files.autoGuessEncoding": trueを一時的に有効化して確認 - PowerShell の実行ポリシー: 初期状態でスクリプト実行が禁止されているため、
.venvのActivate.ps1が弾かれます。Set-ExecutionPolicy -Scope CurrentUser RemoteSignedで個人開発用に緩和できます(業務 PC では情シスに確認してください) - 古い Windows で最新 Python が動かない: 公式ドキュメントは「Python 3.14 は Windows 10 以降をサポートする。Windows 7 が必要なら Python 3.8 を、Windows 8.1 が必要なら Python 3.12 をインストールすること」と明記しています(Supported Windows versions)。配布対象の OS を先に確認し、必要なら古めの Python で開発してください。ただし Python 3.8 はすでに EOL(サポート終了)で、セキュリティ修正も出ません。3.12 はセキュリティ修正のみの段階(EOL は 2028 年 10 月)なので、Windows 8.1 対応が必要ならまだ選べます。セキュリティ修正が出ない版で作るという判断は、情シスと共有したうえで行ってください
- 長いパス問題: Windows は歴史的にパス長を 260 文字に制限してきました(公式「Removing the MAX_PATH limitation」)。深いディレクトリで
FileNotFoundErrorが出たら、長いパス対応の有効化を検討してください
「管理者権限がない」「社内プロキシで pip が通らない」は、この STEP で最も多くの人が止まる場所なので、次章に独立させました。
次のステップへ進む判断基準
venvを作ってpandas(データ処理の定番ライブラリ。依存パッケージが多く、インストール確認の題材に最適)をインストール → スクリプトを実行して結果を表示できる- CP932 で書かれた既存ログファイルを Python で読み込み、UTF-8 として書き出せる
- PowerShell から
.batファイルを作って Python スクリプトを起動できる - VS Code でブレークポイントを置いてデバッグできる
- 社内ネットワークで pip install ができる(または社内ミラー・オフライン手順で入れられる)
4. 会社の PC で最初に詰まる 3 つの壁
ここは STEP 2 の一部ですが、独立させています。製造業エンジニアが Python 学習をやめてしまう原因の多くが、文法ではなくこの 3 つだからです。自宅 PC なら 10 分で終わる作業が、会社の PC では終わらない。しかも入門書はこの状況を想定していないため、「自分の理解力の問題」だと誤解しやすい場所でもあります。
前提を 1 つ。以下はいずれも社内ルールの範囲内で実施してください。プロキシ設定や証明書の扱いは情報システム部門の管理下にあるのが普通です。回避策を勝手に適用するのではなく、「何が必要か」を言語化して申請するための材料として読んでください。
4.1 管理者権限がない会社の PC に Python をインストールする
もっとも多い誤解が「管理者権限がないから Python は入れられない」です。実際には、ユーザー単位のインストールなら管理者権限を必要としない選択肢があります。従来のフルインストーラには「Install for all users」というチェックがあり、これを外せばユーザー領域に入ります。VS Code も同様で、「User Installer」版を選べば管理者権限は要りません。
3.1 の Python Install Manager についても、公式ドキュメントは「ランタイムはすべてユーザー単位で、PC 単位(per-machine)の導入はサポートしない」と書いています。PEP 773 も、配布形式の MSIX について「インストールに管理者権限を必要としない」としています。ただし当サイトはこれを実機で検証していません。Microsoft Store がブロックされている、MSIX の追加が制限されている、といった現場 PC でどうなるかは環境しだいです。現時点で当サイトが実際に使っているのは、従来のフルインストーラで「Install for all users」を外して入れた Python 3.12.10 の環境です(インストール先は %LocalAppData%\Programs\Python\Python312 =ユーザー領域。2026 年 8 月 31 日に確認)。3.14 でもフルインストーラは非推奨になっただけで削除されていない(3.1)ため同じ方法が使えるはずですが、3.14 での動作は当サイトでは未確認です。3.16 以降を見据えるなら、検証機で PyManager を先に試してください。
ただし、技術的に可能なことと社内で許されることは別です。先に情シスへ「業務で使う Python 実行環境の導入申請」を出すのが最短ルートで、その際「Python が使いたい」ではなく「どの業務のどの手作業を、どれくらい減らすために使うか」を書くと通りやすくなります。何を作るかは STEP 3 以降で具体化してください。
4.2 社内プロキシで pip install が通らない
2 番目の壁です。pip install pandas と打つと、いつまでも応答がない、あるいは接続エラーで止まります。原因の切り分けと対処は、おおむね次の順序になります。
- プロキシを教える: 環境変数
HTTP_PROXY/HTTPS_PROXYを設定するか、pip の設定ファイルpip.iniにプロキシを書きます。プロキシのアドレスはブラウザのプロキシ設定を見るか、情シスに確認します - コマンドへの直書きは次善策:
pip install --proxy=...でも通りますが、認証情報(ID・パスワード)がコマンド履歴に平文で残ります。恒久運用には向きません - 証明書エラーが出るケース: 社内プロキシが通信内容を検査する構成(SSL インスペクション)だと、プロキシを設定しても証明書の検証で失敗します。ここで検索して出てくる「検証を無効にする」系のオプションは、社内ルールに反する可能性があるうえ、通信の安全性を落とす回避策です。正攻法は、情シスから受け取った社内 CA の証明書ファイルを pip に教える方向です。都度なら
pip install --cert <証明書のパス>、恒久設定なら%APPDATA%\pip\pip.iniの[global]セクションにcert = <証明書のパス>を書きます(どちらも pip 公式ドキュメントに記載のオプションで、当サイトでは未検証です)。証明書ファイルの入手と配布は情シスの管轄なので、いずれにせよ合意が要ります - 社内 PyPI ミラーがあるなら最優先: 会社が社内ミラーを持っているなら、それを参照先に設定するのが最も摩擦の少ない解です。「うちにミラーはあるか」を先に聞いてしまうのが早道です
これらの具体的なコマンドと切り分け手順は、閉域網・プロキシ・管理者権限なしの現場 PC に Python 環境を作るガイドで個別に扱う予定です。本記事では「どの壁に当たっているかを見分ける」ところまでを担当します。
4.3 閉域網でインターネットにつながらない PC に pip install する
3 番目が、製造業でとくに多い閉域網です。生産設備につながる PC は、外部ネットワークから物理的に切り離されていることがあります。この場合、プロキシの設定をいくら直しても pip install は通りません。「通す」のではなく「持ち込む」発想に切り替える必要があります。
ここでひとつ、技術以前の前提があります。閉域網は「外とつながらないこと」自体がセキュリティ対策なので、そこへ USB メモリ等でファイルを持ち込む行為は、多くの工場で持ち込み申請・ウイルススキャン・情シスや保全部門の承認の対象です。手順を試す前に、自社の可搬媒体の取り扱い規程を必ず確認してください。以下は規程の範囲内で実施することが前提の内容です。
そのうえでの定石は、外に出られる PC であらかじめ必要なパッケージ一式をファイルとしてダウンロードしておき、それを持ち込んでインストールする方法です。pip 側で使うコマンドは 2 つです(<フォルダ> は自分で決めた置き場に読み替えてください)。
# 外に出られる PC で、必要なファイル一式を集める
pip download -r requirements.txt -d <フォルダ>
# 持ち込んだ先の PC で、そのフォルダだけを参照させる
pip install --no-index --find-links <フォルダ> -r requirements.txt
--no-index が「インターネット上の索引を見にいかない」指定で、--find-links が「代わりにここを探す」指定です。オプションごとの意味と切り分けは別記事で扱います。注意点として、ダウンロードは実行する PC と同じ OS・同じ Python バージョン・同じビット数向けのファイルを取ってこないと入りません。開発 PC が 64bit で現場 PC が 32bit、という組み合わせは実際によくある落とし穴です。
Python 本体ごとオフラインで入れる — Python Install Manager の公式手順(py install --download / --source)
Python 本体の導入も同じ発想になります。従来のフルインストーラは「インストーラ本体を持ち込めば入る」ものでした。PyManager は必要な版を後から取得する設計です。ただし公式ドキュメントには閉域網向けの「オフラインインストール」の節があり、こちらも取得用フォルダを作って持ち込む 2 段構えになっています。
# 外に出られる PC で(索引ファイル付きのフォルダができる)
py install --download=<フォルダ> <版>
# 持ち込んだ先の PC で
py install --source="<フォルダ>\index.json" <版>
ただし当サイトは、この手順も、Store がブロックされた PC への PyManager 自体の導入も、実機で確認できていません(3.1)。閉域網の現場 PC を対象にするなら、本番展開の前に検証機で必ず実機確認してください。手順の詳細は 閉域網・プロキシ・管理者権限なしの現場 PC に Python 環境を作るガイドで扱う予定です。
5. STEP 3: 産業機器との通信を実装する
学ぶ目的
製造業エンジニアの Python 活用において、もっとも価値が出る領域です。PLC、産業センサー、計測器、ロボット——これらと直接通信できるようになれば、データ収集・遠隔操作・自動化システムの基盤を自前で組めます。
本ステップは、ロードマップ全体の中でもっとも他のサイトでは学びにくい部分です。書籍も少なく、情報が散在しています。本サイトでは、ここを中心的に解説しています。
習得すべき範囲
- TCP/IP の基本: ソケット、クライアント/サーバー、3-way ハンドシェイク、TIME_WAIT
- Python の
socketモジュール: ストリーム通信、タイムアウト、再接続、ノンブロッキング - バイナリプロトコルの扱い:
structモジュール、ビッグエンディアン/リトルエンディアン、可変長フレーム - シリアル通信の基礎: RS-232C / RS-485 の違い、
pyserial、COM ポート番号の調べ方(デバイスマネージャー)、RS-485 の配線と終端抵抗 - Modbus 通信: Modbus RTU / TCP の違い、レジスタ読み書き、
pymodbusライブラリ - PLC 通信: 三菱(MC プロトコル、対応ライブラリの選定)、キーエンス(KV ソケット通信)、オムロン(FINS)、シーメンス(S7Comm)
- シミュレータと実機代替: Modbus シミュレータ、PLC ベンダー提供のシミュレータ、Raspberry Pi をセンサー見立てにする手法
- ネットワーク解析: Wireshark によるパケット観測、トラブルシューティング
- 運用上の設計: タイムアウト、リトライ、再接続、サーキットブレーカー(連続失敗時に一時的に通信を止めて相手を守る設計パターン。電気のブレーカーが語源)、ハートビート(定期的に生存信号を送り、相手が生きているか確認する仕組み)
実機に触れる際は、稼働中の設備に読み書きしないことを大前提にしてください。学習段階では、シミュレータか、計画停止中の設備で読み出しのみから始めるのが安全です。安全インターロックの配線に Python から介入することは、学習目的では絶対に行わないでください。
推奨教材
- Python 公式:
socketモジュール(無料・一次情報)/Modbus 公式仕様書(英語・無料)— 機器側の仕様は必ず一次情報で確認するクセを付けてください - 本サイトの記事: PLC と Python で通信する方法 ・ TCP/IP でのリアルタイム通信 ・ pymodbus 完全ガイド ・ pyserial の使い方(RS-232C / RS-485)
ハマりどころ
- ネットワーク切断時に応答が固まる: タイムアウトを設定していないと、
recv()が永遠に待つ。必ずsettimeout()で上限を設定し、例外処理で再接続フローへ - バイト順(エンディアン)の罠: 機器によってビッグエンディアン・リトルエンディアン・ワードスワップなど混在。仕様書を必ず確認し、
structで明示的に指定 - 文字列のエンコーディング差: 機器が SJIS で文字列を返してくる場合、Python 側で UTF-8 と仮定して decode するとエラー。
encoding="cp932"を明示 - PLC のメモリマップ把握: 同じ「データレジスタ」でも、メーカーによってアドレス体系・ビット表現・ワード境界が異なる。仕様書とラダー図を読み解く力が要る
- タイムアウトと再接続のバランス: 短すぎると正常時もエラーになり、長すぎると現場が止まる。実機のレスポンス時間を実測して決める
- 並行通信の競合: 同じ PLC に複数のクライアントから同時アクセスすると、機器側で受け付けられない場合がある。シーケンシャルに通信する設計を基本に
- 本番環境と検証環境の差: シミュレータでは動くが実機では動かない、というケース。実機での検証時間を必ず確保する
この記事は範囲の地図なので、数値の裏取りは各記事側に置いています。たとえば pyserial の記事では、仮想ポート loop:// で timeout の挙動を実測しています(Windows 11 Pro / Python 3.12.10 / pyserial 3.5)。timeout=0 なら 0.0 ミリ秒で b'' が返り、timeout=1.5 なら 1.50 秒待ってから b'' が返りました。ここで効いてくるのが、読み取りのタイムアウトは例外にならず、空の bytes が返るだけという点です。try / except で待ち構えていても引っかからないので、戻り値が空かどうかで判定する必要があります。上の 7 項目それぞれについて、実測と切り分け手順は PLC 通信・pymodbus・TCP/IP の各記事を参照してください。
次のステップへ進む判断基準
- 標準
socketモジュールでシンプルなクライアント・サーバーを書ける pymodbusで Modbus シミュレータと接続し、レジスタを読み書きできる- PLC シミュレータ(または計画停止中の実機)からレジスタ値を読み取り、ファイルに記録できる
- 通信切断 → 自動再接続 → 復旧通知の一連を実装できる
- Wireshark でパケットを見て、リクエスト・レスポンスの内容を解読できる
6. STEP 4: 現場で動くアプリを作る
学ぶ目的
STEP 3 までで「データを取れる」状態になりました。次は、それを現場オペレーターが見て、操作して、判断できるGUI アプリとして完成させます。さらに、24 時間連続稼働に耐える設計まで踏み込みます。
「動くデモ」と「現場で使えるアプリ」の差は、ほぼここで決まります。
習得すべき範囲
- tkinter の基本: ウィジェット(
Label、Button、Entry、Text、Treeview、Canvas)、レイアウト管理(pack、grid、place)、イベント処理 - 非同期処理:
after()による定期実行、threadingモジュール、UI スレッドと通信スレッドの分離 - キューによるスレッド間通信:
queue.Queueを使った安全なデータ受け渡し - ロギング:
loggingモジュール、RotatingFileHandler、TimedRotatingFileHandler、ログレベル設計(ロギング設計の詳細記事) - データの保存先: CSV で足りるのか、SQLite に移すべきかの判断
- 設定ファイル: INI(
configparser)、TOML(tomllib、Python 3.11+)、JSON、環境変数の使い分け - エラーハンドリング: 未捕捉例外のキャッチ、ユーザーへの通知、再起動スクリプト
- 長時間運用設計: メモリリーク対策、リソース解放、定期再起動(実行時刻は段取り替え・昼休みなど生産計画に合わせて決める)、ハートビート、外部監視、Windows サービスとしての常駐
- UI 設計: 現場オペレーターが直感的に操作できる配置、警告色、フォントサイズ、誤操作防止
推奨教材
- Python 公式:
tkinter/Python 公式:logging(無料・日本語)— この 2 つは標準ライブラリのドキュメントだけで実装まで到達できます - 本サイトの記事: tkinter で作る現場用監視アプリ — 24 時間運用に耐える設計パターン
ハマりどころ
- UI フリーズ: メインスレッド(UI スレッド)で時間のかかる処理を実行すると画面が固まる。通信や重い計算は別スレッドへ。tkinter ウィジェットの操作は必ずメインスレッドから(
after()でキューを処理) - メモリリーク: 1 時間で気づかない、24 時間で顕在化する。原因は、ログのためにオブジェクトを保持し続ける、循環参照、Matplotlib の図を
close()していない、tkinter ウィジェットを destroy せず追加し続ける、など。tracemallocやmemory_profilerで継続観測する - 例外で UI が固まる: 通信スレッドで未捕捉例外が出るとスレッドが死に、UI からは「動いているように見えるが実は止まっている」状態に。各スレッドの最上位で
try / exceptで包む - ログファイルの肥大化:
logging.FileHandlerをそのまま使うと無限に増える。RotatingFileHandler(サイズベース)かTimedRotatingFileHandler(日次ローテート)に切り替える - 設定変更がすぐ反映されない: 起動時に一度だけ読み込む設計だと、現場で値を変えるたびに再起動が必要。「ホットリロード」を実装するか、運用ルールで再起動を許容するかを最初に決める
- Windows のスリープ・スクリーンセーバー: 24 時間運用 PC でスリープが効くと通信が止まる。電源プランの設定、スクリーンセーバーのオフ、自動更新後の再起動の抑制——これらは事前にチェック
- tkinter のグローバル変数地獄: 変数が増えてくると、どのウィジェットがどの変数に依存するか追えなくなる。クラスにまとめる、
tkinter.StringVar等を活用する
STEP 4 も実測は個別記事側です。ロギング設計の記事では、cmd で set LOG_LEVEL=DEBUG && app.exe と 1 行に書く場面を扱っています。すると && の前のスペースが値に含まれ、"DEBUG "(末尾にスペース付き)になります——これを筆者環境で実測しました。設定を読む側に .strip() が要るのはこのためです。止めたくない設備で動くアプリをどう調べるかという問いにも、同記事は答えを置いています。設定ファイルを定期的に読み直して logging.getLogger().setLevel(...) を実行時に呼ぶ——アプリを再起動せずログレベルを上げる方法です。一方、24 時間動かしたときのメモリ使用量の推移は当サイトでは未実測です。上の「メモリリーク」の項目は、原因の類型と観測手段(tracemalloc・memory_profiler)を示すもので、数値の裏付けはありません。
次のステップへ進む判断基準
- tkinter で複数の値を表示・編集する GUI を作れる
after()で 1 秒ごとにデータを更新表示できるthreadingでバックグラウンド処理を起動し、queueで UI スレッドにデータを渡せるloggingでローテーション付きのログ出力ができる(INFO / WARNING / ERROR を使い分ける)- 通信切断 → エラー検知 → 自動復旧 → ユーザーへの通知、の流れを実装できる
- 24 時間動かしても、メモリ使用量が一定範囲に収まる
7. STEP 5: 配布・運用を設計する
学ぶ目的
「自分の PC で動くアプリ」を「現場 PC で誰でも使えるアプリ」に変える最終ステップです。Python 環境のない PC でも動くように .exe 化し、トラブル時の復旧フロー、アップデート手順まで設計します。4 章の制約が厳しい職場ほど、この STEP の価値は大きくなります。現場 PC に Python を入れずに済むからです。
習得すべき範囲
- PyInstaller の基本:
--onefileと--onedirの違い、依存関係の自動収集、隠し依存(hidden imports) - アンチウイルス対策: 署名なし exe の誤検知、ホワイトリスト登録、社内 PKI(電子証明書の社内発行基盤)による署名
- .bat ランチャー設計: 起動時の環境変数設定、エラー時の自動再起動、ログ出力先の制御
- 管理者権限の制御: マニフェストファイル、UAC プロンプト、最小権限の原則
- アップデート配布: 共有フォルダ経由、社内 Web サーバー経由、バージョン管理、ロールバック
- ヘルスチェック: アプリ稼働状況の外部監視、メール通知、チャットツールへの連携
- 運用ドキュメント: 現場オペレーター向け操作マニュアル、トラブル時の対処手順、保守者向け技術ドキュメント
推奨教材
- PyInstaller 公式ドキュメント(英語・無料)— オプションの意味は一次情報で確認するのが結局いちばん速いです
- 本サイトの記事: PyInstaller の使い方と主要オプション|exe 化して現場に配布する実戦ガイド ・ CP932 と UTF-8 の完全対策
ハマりどころ
- onefile が起動遅い:
--onefileは起動時に一時フォルダへ展開するため、起動が遅くなる。当サイトの最小 tkinter アプリでの実測では、onedir との差が 1 回目 +1.04 秒・2 回目 +1.01 秒で毎回およそ 1 秒だった(依存が増えるほど差は広がる。測定条件は PyInstaller の記事)。常駐型アプリなら--onedirの方が現実的 - アンチウイルスの誤検知: PyInstaller で作った署名なし exe は、Windows Defender や法人向けアンチウイルスで「不審なプログラム」と判定されがち。社内のホワイトリスト登録、コードサイニング証明書での署名で対応
- 隠し依存(hidden imports): 動的インポートを使うライブラリ(特に
matplotlib、pandasの一部、cryptographyなど)は、PyInstaller が依存を検出できないことがある。--hidden-importオプションで明示 - 外部リソースが含まれない: 画像、設定ファイル、データファイルは、
--add-dataで明示しないと exe に含まれない。参照は__file__基準が公式推奨(sys._MEIPASSも引き続き使える) - 32bit / 64bit の混在: 開発 PC が 64bit、現場 PC が 32bit のような場合、それぞれの環境でビルドする必要がある
- 更新時の手戻り: 旧バージョンが残ったまま新バージョンを起動して、設定ファイルの互換性問題が起きる。アップデート手順を明文化、起動時にバージョンチェック
- ファイルロックの問題: アプリが起動中に exe を上書きできない。アップデートは別 PID から行うランチャー方式が定石
到達判断基準
- PyInstaller で簡単なアプリを exe 化し、Python 未インストールの PC で起動できる
.batランチャーで環境変数の設定とエラー時の再起動を組める- 共有フォルダから配布 → 現場 PC へインストールする手順を文書化できる
- アンチウイルスに誤検知されない(または、誤検知時の対処を知っている)
- 現場で発生したトラブルを、ログから追跡して原因特定できる
8. 教材は少なくていい — 版と発行年だけ確認する
教材の紹介はここまで各 STEP で 2 点ずつに絞ってきました。無料の一次情報(公式ドキュメント)で足りる範囲が広いからです。とはいえ、腰を据えて 1 冊読みたい場面もあります。そのときに確認してほしいのは書名ではなく版と発行年です。Python の入門書は、文法の説明は長く通用する一方で、環境構築まわりの記述が真っ先に古くなります(3.1 の導入方式の変更が典型です)。
よく名前の挙がる 4 冊の現行版を、各版元の公式書誌ページで 2026 年 8 月 31 日に確認しました。確認先は次のとおりです(オライリー・ジャパン『退屈なことは Python にやらせよう 第 3 版』/同『入門 Python 3 第 2 版』/日経BOOKプラス『独学プログラマー』/オーム社『マスタリング TCP/IP 入門編 第 6 版』)。
| 書名 | 現行版・発行 | 本ロードマップでの位置づけ |
|---|---|---|
| 退屈なことは Python にやらせよう | 第 3 版・2026 年 3 月 26 日(800 ページ) | STEP 1〜2 向け。第 3 版で SQLite 操作、Playwright でのブラウザ制御、Whisper での文字起こし、OCR、通知の章が加わっています |
| 入門 Python 3 | 第 2 版・2021 年 3 月 22 日(Python 3.9 対応) | STEP 1 向けの体系的な文法解説。3.10 以降に入った機能は載っていません |
| 独学プログラマー | 2018 年 2 月 26 日。その後の日本語版の改訂は確認できませんでした | 「プログラマーとして仕事をする」感覚を掴む本として今も読めますが、環境構築の記述は 8 年前のものです。その部分は本記事の STEP 2 で上書きする前提で読んでください |
| マスタリング TCP/IP 入門編 | 第 6 版(第 7 版の有無は当サイトでは確認できていません) | STEP 3 のネットワーク基礎。産業機器の通信を扱う前に一度通しておくと、切り分けが速くなります |
「まずどれか 1 冊」なら、自動化の題材がそのまま業務に近い『退屈なことは Python にやらせよう』が本ロードマップとは相性がよいはずです。ただし買わなくても STEP 1 は完走できます。公式チュートリアルと Microsoft Learn で足ります。
9. 続けるための 4 つの考え方
ロードマップを示してきましたが、もっとも大事なのは続けられるかどうかです。
業務課題を題材にする(ただし機密配慮)
「学ぶための課題」より「業務で困っていることを解決する課題」のほうが、圧倒的にモチベーションが続きます。日報の集計、品質データの可視化、設備のログ集約——身の回りに山ほどあるはずです。
ただし、業務システムや実機データをそのまま家に持ち帰って学習に使うことはできません。本サイトの「再現コード戦略」のように、自宅環境で再現可能な形に置き換えて取り組んでください。たとえば、業務で使っている PLC のロジックを、無料の PLC シミュレータと Raspberry Pi で再現実装する、といったアプローチです。
完成しなくても OK、「動く部分」を作って次へ
初心者ほど「完成させてからリリース」を目指しがちですが、完成は永遠に来ません。「動く最小限」を作ったら、まず公開(社内勉強会・ブログ・GitHub)して、フィードバックをもらいながら磨く方が、結果的に早く完成します。
AI を相棒にする — ただし現場の前提は AI が知らない
生成 AI は Python 学習の強力な相棒です。エラーメッセージの解釈、コードレビュー、テストコードの生成を対話形式で頼めます。一方で、製造業の文脈ではAI の出力が外しやすいポイントがはっきりしています。
- ファイルを開くコードに
encodingが付いておらず、現場 PC の CP932 で文字化けする pip installが通る前提で手順を書いてくる(4 章の 3 つの壁を考慮しない)- PLC のアドレス体系を、メーカー横断で一般化してしまう
このあたりは、そのまま貼ると現場で動きません。AI に書いてもらい、自分でデバッグするを基本にしてください。何が外れやすいかを知っていること自体が、この分野での実力になります。
アウトプットの場を持つ
社内勉強会、技術記事の投稿、GitHub での公開、勉強仲間との進捗共有——いずれの形でも、アウトプットを定期的に出す仕組みを作ると継続しやすくなります。「読まれるかも」というプレッシャーは、正確に書く・調べる動機にもなります。
10. STEP 別の記事マップ
本記事は各ステップの入口です。詰まったところから、対応する詳細記事へ進んでください。
⚠️ 実機・業務環境に適用するときの注意: 本記事は学習の道筋を示すもので、記載の手順・設定を実際の業務 PC・現場 PC・産業機器へ適用する判断は読者ご自身の責任で行ってください。会社の PC への導入・ネットワーク設定・可搬媒体の持ち込みは、社内規程と情報システム部門の承認が前提です。産業機器への接続は読み出し専用での疎通確認から始め、書き込みや 24 時間稼働機器の停止は、安全インターロック・計画停止・保全側の承認を経てください。本記事の内容による損害(機器故障・ライン停止・データ損失を含む)について筆者・GenbaPy は責任を負いません(利用規約)。
学習の旅は長いですが、ひとつ動くアプリができれば視界が一気に開けます。本サイトが、その第一歩から運用まで伴走できるリソースになれば幸いです。