Technology
Python
(Python:パイソン)
Python(パイソン)は、読みやすく簡潔な文法を特徴とする汎用プログラミング言語です。
データ処理、Webシステム、AI・機械学習、業務自動化、IoTなど、幅広い分野で利用されています。C言語などと比べて、同じ処理を比較的少ない記述量で表現しやすく、試作から実用システムまで柔軟に活用できます。
ハカルプラスでは、IoTゲートウェイ、通信処理、データ変換、データベース連携などにPythonを活用しています。2018年に発表したLoRa無線機対応IoTゲートウェイ「HLR-GW」でも、Pythonで開発したソフトウェアが動作しています。
Pythonの主な特長
読みやすく簡潔に記述できる
Pythonは、プログラムの処理内容を比較的分かりやすく記述できるように設計されています。
同じ機能をC言語などで作成する場合と比べて、少ない行数で表現できることがあります。プログラムの構造を把握しやすいため、機能追加、修正、複数の技術者による共同開発にも適しています。
ただし、記述が簡潔であることと、システム設計が容易であることは同じではありません。産業用システムでは、通信異常、データ欠損、電源断、セキュリティ、長期保守などを考慮する必要があります。
豊富なライブラリを利用できる
Pythonには、標準で用意された機能に加え、さまざまな外部ライブラリがあります。
主な用途には、次のようなものがあります。
- CSV・JSON・XMLなどのデータ処理
- ネットワーク通信
- データベース接続
- 数値計算・統計処理
- グラフ・帳票の作成
- Webアプリケーション開発
- 画像処理
- AI・機械学習
既存ライブラリを適切に活用することで、必要な機能をすべて一から開発する場合と比べて、開発期間を短縮できることがあります。
WindowsやLinuxで利用できる
Pythonは、WindowsやLinuxなど複数のOSで利用できます。
パソコンやサーバーだけでなく、SBC(シングルボードコンピュータ)やIoTゲートウェイなどにも搭載できます。
ただし、使用するライブラリ、デバイスドライバー、接続機器によっては、OSごとに設定や動作が異なる場合があります。
試作と検証を進めやすい
Pythonは、短いプログラムを作成し、その場で実行結果を確認しやすい言語です。
通信データの解析、計算式の確認、ファイル変換、データ集計などを小さな単位で試し、検証結果をもとに段階的にシステムへ発展させることができます。
Pythonが利用される主な分野
IoT・データ収集
IoTシステムでは、センサ、計測器、PLCなどから取得したデータを収集し、利用しやすい形式に変換して保存・送信します。
Pythonは、次のような処理に利用できます。
- 接続機器からのデータ取得
- 取得値の換算・補正
- 日時や機器番号の付加
- CSVファイルへの保存
- 上位システムへのデータ送信
- 通信異常時の再接続・再送
- ログや警報履歴の記録
接続機器ごとに異なる通信方式やデータ形式を変換し、複数のシステムをつなぐゲートウェイソフトウェアにも適しています。
データ処理・集計
計量実績、製造実績、電力使用量、設備の稼働履歴などを読み込み、集計や分析を行う用途に利用できます。
例えば、複数のCSVファイルをまとめる、日別・月別の実績を集計する、設定値と実績値の差を算出する、条件に該当する異常データを抽出するといった処理が可能です。
人が手作業で行っている転記や集計を自動化することで、作業時間の短縮や入力ミスの低減につながります。
Webシステム
Python向けのWebフレームワークを利用し、ブラウザから計測値、設備状態、実績データなどを確認するシステムを構築できます。
データの取得や集計、利用者認証、データベースとの接続など、Webシステムのサーバー側処理に使用されます。
AI・機械学習
Pythonは、AI・機械学習の分野で広く利用されています。
計測・製造分野では、蓄積したデータを用いた異常傾向の分析、需要予測、画像判定などへの活用が考えられます。
ただし、AIを導入すれば自動的に正しい判断ができるわけではありません。学習データの量と品質、判定精度、誤判定時の運用などを含めて検討する必要があります。
計測・制御システムにおけるPythonの役割
Pythonは、データ収集、変換、保存、表示、通知、上位システムとの連携に適しています。
一方、機械の高速な動作制御や、厳密な周期処理、人の安全に直接関係する制御には、PLC、マイコン、リアルタイムOSなどを使用するのが一般的です。
例えば、次のように役割を分担します。
- PLCが設備の自動運転やインターロックを行う
- 計量コントローラが重量演算や計量制御を行う
- マイコンがセンサ入力や機器制御を行う
- Pythonを搭載した機器がデータを収集・変換する
- FAパソコンやサーバーがデータを保存・表示する
それぞれの技術が得意とする処理を分担することで、設備制御の安定性を維持しながら、遠隔監視やデータ活用の機能を追加できます。
ハカルプラスにおけるPythonの活用
ハカルプラスでは、IoTゲートウェイ、データ収集、通信処理、データ変換、上位システムとの連携などにPythonを活用しています。
2018年に発表したLoRa無線機対応IoTゲートウェイ「HLR-GW」でも、Pythonで開発したソフトウェアが動作しています。
HLR-GWでは、LoRa Privateで収集した計測データを処理し、Ethernetを介してパソコンや上位システムで利用できる形へ受け渡します。このようにPythonは、異なる機器や通信方式の間でデータを収集・変換・保存するソフトウェアの開発に適しています。
HLR-GWの通信方式、監視機能、データ保存方法などの詳細は、製品ページで確認できます。
データベースとの連携
Pythonは、Microsoft SQL ServerやOracleなどのデータベースと連携できます。
計測値、製造実績、設備状態、警報履歴などをデータベースへ登録し、保存された情報を検索・集計する処理を構築できます。
データベースとの連携では、次のような点を考慮します。
- 接続できない場合の再試行
- 同じデータの重複登録防止
- 通信中断時の一時保存
- データ欠損時の処理
- 日時や数値形式の統一
- アクセス権限の設定
- 認証情報の安全な管理
PythonとC系言語の使い分け
PythonとC・C++などの言語では、得意とする用途が異なります。
| 項目 | Python | C・C++ |
|---|---|---|
| 主な用途 | データ処理、通信、Web、IoT、AI | マイコン制御、組込み機器、高速処理 |
| 記述量 | 比較的少なく記述しやすい | 詳細な記述が必要になる場合がある |
| 実行速度 | 処理内容によっては遅くなる | 高速に実行しやすい |
| ハードウェア制御 | OSやライブラリを介することが多い | ハードウェアに近い処理に適している |
一つのシステムをすべて同じ言語で開発するのではなく、マイコン側をC言語、ゲートウェイ側をPython、パソコン側をC#など、機器や機能に応じて使い分ける場合があります。
Pythonを採用する際の注意点
厳密なリアルタイム制御には向かない場合がある
一般的なPythonの実行環境は、処理の完了時間を厳密に保証するリアルタイム制御を目的としていません。
高速な周期制御や安全に関係する処理は、PLC、マイコン、リアルタイムOSなどに担当させます。
バージョンとライブラリを管理する
Python本体や外部ライブラリは、更新によって機能や動作が変わる場合があります。
産業用システムでは、使用するPython、ライブラリ、OSのバージョンを記録し、動作確認済みの環境を再構築できるように管理します。
外部ライブラリのライセンスを確認する
Python本体はオープンソースとして提供されていますが、外部ライブラリごとにライセンス条件が異なります。
製品へ組み込む場合や顧客へ提供する場合は、利用条件、再配布条件、著作権表示の要否などを確認します。
通信異常や電源断に備える
接続機器や上位システムとの通信は、一時的に途切れる可能性があります。また、データ書込み中に電源が切れると、ファイルやデータベースが破損する場合があります。
タイムアウト、再接続、再送、一時保存、再起動時の復旧などをあらかじめ設計します。
セキュリティを確保する
ネットワークへ接続するシステムでは、認証、通信の暗号化、アクセス制限、パスワード管理、不要なサービスの停止などが必要です。
Pythonや外部ライブラリについても脆弱性情報を確認し、システムへの影響を評価したうえで更新します。
長期運用に必要な管理
産業用システムは長期間使用されるため、ソースコードだけでなく、動作環境や設定情報も含めて管理する必要があります。
主な管理項目には、次のものがあります。
- Pythonのバージョン
- 外部ライブラリとそのバージョン
- ソースコード
- 設定ファイル
- OSとハードウェアの構成
- 接続機器と通信仕様
- データ形式
- インストール・復旧手順
- 変更履歴
将来ハードウェアやOSを更新する際にも再構築できるよう、必要な情報を継続して管理します。
ハカルプラスのPython開発
ハカルプラスでは、お客様の要求事項、使用する機器、通信方式、処理速度、データ量、動作環境などに応じて、Pythonを含む複数のプログラミング言語を使い分けています。
Pythonを活用する主な分野には、次のようなものがあります。
- IoTゲートウェイ用ソフトウェア
- 計測機器や設備からのデータ収集
- 通信データの解析・変換
- データの演算・集計
- CSVやデータベースへの保存
- モニタリング画面の構築
- 上位システムとのデータ連携
- ログ・警報履歴の管理
- 既存ソフトウェアの機能追加・改修
Pythonだけでなく、C、C++、C#、Visual Basic系言語などを組み合わせ、マイコン、SBC、PLC、FAパソコン、データベースを含むシステムを構築します。
よくある質問
Q. Pythonとは何ですか?
A. 読みやすく簡潔な文法を持つ汎用プログラミング言語です。データ処理、Web、AI、IoTなどの分野で利用されています。
Q. Pythonは無料で利用できますか?
A. Python本体はオープンソースとして提供されています。ただし、外部ライブラリを使用する場合は、それぞれのライセンス条件を確認する必要があります。
Q. PythonはWindowsとLinuxの両方で動作しますか?
A. 動作します。ただし、接続機器や使用するライブラリによって、OSごとの設定や修正が必要になる場合があります。
Q. PythonでPLCや計測器と通信できますか?
A. 接続機器の通信仕様に対応したインターフェースやソフトウェアを用意することで、データを読み書きできます。
Q. Pythonで設備のリアルタイム制御ができますか?
A. 一般的なPython環境は、厳密な応答時間が必要な制御には適さない場合があります。PLC、マイコン、リアルタイムOSなどと役割を分担します。
Q. Pythonでデータベースへ保存できますか?
A. 対応する接続ライブラリを利用し、計測値や製造実績をMicrosoft SQL ServerやOracleなどへ保存できます。
Q. ハカルプラスではPythonをどのように活用していますか?
A. IoTゲートウェイ、データ収集、通信処理、データ変換、データベース連携などに活用しています。LoRa無線機対応IoTゲートウェイ「HLR-GW」でも、Pythonで開発したソフトウェアが動作しています。
Q. PythonとC言語はどのように使い分けますか?
A. データ処理やシステム連携にはPython、マイコン制御や高速処理にはC言語を使用するなど、機器や処理内容に応じて使い分けます。
Q. ハカルプラスではPython以外の言語にも対応できますか?
A. C、C++、C#、Visual Basic系言語など、対象機器やシステムに応じて複数の言語を使い分けています。
関連ワード
・C系プログラミング言語(C/C++/C#/Visual C++)
・Visual Basic系プログラミング(Visual Basic .NET/VBA/Visual Basic)
・Web・データ記述系技術(HTML/CSS/JSON/XML/JavaScript/PHP/Perl)
・Linux
・SBCの組込み
・マイコン制御
・Microsoft SQL
・LoRa無線