はたして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 」が標準添付になるとのこと。

データベースとの連携

リレーショナルデータベース

注釈

リレーショナル系では個人的に「firebird」がお勧めです。 WindowsでもLinuxでもインストールが簡単でしたし、 Unicodeが使えて日本語も問題なく、画像なども扱えました。 ストアドプロシージャやユーザ定義関数なども使えます。

単発DLL配布とサーバーインストーラ配布の2種類があるのもいいですよ!

ローカルアクセスのみのうちは単発DLLで、 データ規模が大きくなって分散したくなったら サーバースタイルに切り替えることができます。 ランタイムのインターフェースまで互換が取れているので、バイナリの修正は不要。 もちろんデータは完全に互換を保っているのでファイルコピーで移行できます。

また、バージョンアップなどはかなり慎重に行うという慣わしがあるので、 すごく安定感があります。 ある仕事で数十万件のORマッピングしたデータベースを構築しましたが、 メンテフリーで数年ほど動き続けてまだトラブルがありません。

オブジェクトデータベース

  • 軽量ODB「 Durus
  • 高機能ODB「 ZODB

注釈

ZODBはあのPythonより有名な 「 Zope 」のデータベースコアです。 ODBではPythonのクラスインスタンスを永続化するという形で データベースの構築を行います。

アルゴリズムの利用

numarray 」モジュールを利用すれば、行列演算が非常に簡潔に記述できるようになります。 連立方程式の解を得たり逆行列を求めたり、FFT・IFFTも出来ます。

Pythonは無限桁整数や複素数を標準でサポートしていたりするので、 学者系に受けが良いようです。

探せばほかにもいろんな研究支援にPythonが使われていることがわかるでしょう。

  • 分子生物学パッケージ「 biopython
  • 天文学パッケージ「 AstroPy
  • 化学分子構造ビジュアライザ「 PyMOL
  • 分子構造モデリングツールキット「 MMTK
  • ロボット工学パッケージ「 pyro

ハードウェアとの連携

周辺装置の利用に関しても以下のように一通りのモジュールが公開されています。

目的 タイトル 作者 プラットフォーム
シリアルポート① 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パーサ」が生まれることのないような 効率の良い仕事をしたいものです。