拡張モジュールと言語の組み合わせ
- 第9回 Python3にもC拡張モジュールを─Python3.0でも使える拡張モジュール開発手法の確立 (http://gihyo.jp/dev/serial/01/pythonhacks/0009)
C言語で作られたダイナミックリンクライブラリとヘッダから橋渡し部分のPythonモジュールを自動生成し,そのモジュールがPython3.0で動作することを示します
どのくらいの割合できちんと動くかやってみないと分からないが、このツールは結構強力かもしれない。言語間をつなぐ場合問題に常になるのがデータをどうするか。例えば、CとPythonをつなぐ場合、Cで生成したデータをどうやってPythonから利用するかが問題。1つのやり方は、Cでメモリ上持っておいて、データにアクセスするCの関数を用意してあげる方法。別のやり方は、PythonのC APIを使って(実際この部分はツールで自動生成)、Pythonのデータとして落とし込む方法。いずれにしてもコードが複雑になったり、パフォーマンス的にロスがあったりと扱いずらい。
個人的には、汎用的なデータ変換の仕組みがあれば、ちょっとしたツールにも使えそう。もちろん、JSONやXMLなど汎用的なフォーマット(パフォーマンスを考えるとバイナリフォーマット)に落して読み込むのであれば、ある程度汎用性が出るが、やはり面倒であることには変わりない。ただし本格的なアプリであれば、何らかの形でデータを持っていると思うので、それを中間フォーマットとして言語間をつなげても良いかも。
また、他の言語と組み合わせの必要があるケースは以下の3通り思いつくが、他にもあるだろうか?
- 既存の資産の活用
- アプリや環境の制限など(例えばアプリのインタフェースはCだが、Pythonを使いたいなど)
- パフォーマンス