はたしてPythonは業務に使えるのか
お仕事でPython
tags: | python, column |
---|---|
created: | 2005-12-30T21:34:04 |
お仕事でPython Pythonでお仕事してみてはどうでしょ?
はじめに
以下3エントリの内容と「 InnoSetup 」あたりをマスターすれば、 ちゃんとしたアプリケーションを構築・提供出来ますよ! (個人的にはちまちまと実績をあげていっています。)
また、Pythonは標準サポートで
- CSVファイルの読み書き
- INIファイルの読み書き
- XMLファイルの読み書き
- サウンドファイルの読み書きと再生
- メジャーインターネットプロトコル
などがあります。
さらに後述のモジュール群を活用すれば!
大抵のインターフェースにも事欠かないでしょう。
さあ、あとは肝心な中身に取り掛かろう!
外部ライブラリの利用
商用のインターフェースデバイスの利用などでは、 DLLによる開発キット&サンプルが付属するというパターンが多いと思います。
また商用ライブラリもActiveXやDLLでの提供という形が普通ですね。
Pythonでは「 PyWin32 」モジュールを利用すればActiveXの利用や作成が簡単に出来ます。 また、「 ctypes 」というモジュールを利用すると 外部提供DLLを利用するアプリケーションが作成できます。
「 ctypes 」を初めて触ってみるとびっくりしますよ。 インタラクティブコンソールからほいっと関数呼び出しできちゃいますので。 しかも、Linuxのso形式でも大丈夫。
注釈
2006年9月ごろにリリースされる予定の 「 Python 2.5 」では、「 ctypes 」が標準添付になるとのこと。
データベースとの連携
リレーショナルデータベース
- for ODBC 「 mxODBC 」
- for PostgreSQL 「 psycopg ( for windows )」
- for MySQL 「 MySQL for Python 」
- Pythonモジュールとして動作する 「 gadfly 」
- for Firebird 「 kinterbasdb 」
注釈
リレーショナル系では個人的に「firebird」がお勧めです。 WindowsでもLinuxでもインストールが簡単でしたし、 Unicodeが使えて日本語も問題なく、画像なども扱えました。 ストアドプロシージャやユーザ定義関数なども使えます。
単発DLL配布とサーバーインストーラ配布の2種類があるのもいいですよ!
ローカルアクセスのみのうちは単発DLLで、 データ規模が大きくなって分散したくなったら サーバースタイルに切り替えることができます。 ランタイムのインターフェースまで互換が取れているので、バイナリの修正は不要。 もちろんデータは完全に互換を保っているのでファイルコピーで移行できます。
また、バージョンアップなどはかなり慎重に行うという慣わしがあるので、 すごく安定感があります。 ある仕事で数十万件のORマッピングしたデータベースを構築しましたが、 メンテフリーで数年ほど動き続けてまだトラブルがありません。
アルゴリズムの利用
「 numarray 」モジュールを利用すれば、行列演算が非常に簡潔に記述できるようになります。 連立方程式の解を得たり逆行列を求めたり、FFT・IFFTも出来ます。
Pythonは無限桁整数や複素数を標準でサポートしていたりするので、 学者系に受けが良いようです。
探せばほかにもいろんな研究支援にPythonが使われていることがわかるでしょう。
ハードウェアとの連携
周辺装置の利用に関しても以下のように一通りのモジュールが公開されています。
目的 | タイトル | 作者 | プラットフォーム |
---|---|---|---|
シリアルポート① | uspp | Isaac Barona | クロスプラットフォーム |
シリアルポート② | pySerial | Chris Liechti | クロスプラットフォーム, Jythonでも動く |
プリンタポート | pyParallel | Chris Liechti | クロスプラットフォーム, Jythonでも動く |
ビデオキャプチャ | VideoCaputure | Markus Gritsch | Windowsのみ |
USBアクセス | PyUSB | wander lairson | クロスプラットフォーム |
ブルートゥース | PyAffix | carlos chinea | クロスプラットフォーム |
GPIB(USB) | pyGPIBscope | philippe dalet | Windowsのみ |
結論
業務支援ツールはもちろん、 バイナリ化&インストーラまで作成できるようになっていますので、 不特定多数のユーザに使ってもらうアプリケーションでも十分構築できると思います。
他の開発環境でこれだけのインターフェースはなかなかそろえられないでしょう。
できれば、二度と「オリジナルCSVパーサ」が生まれることのないような 効率の良い仕事をしたいものです。