プログラム言語変換ソフトによる開発効率UPのススメ
最近のプログラマ事情
近年のソフトウェア開発はゼロからフルスクラッチで作ることは稀です。ほとんどの場合、既に運用されているシステムに機能を拡張する・機能を追加するといった派生開発ではないでしょうか。
そのため開発で使用する環境は既に運用されているモノを踏襲するため、フレームワークやプログラミング言語の選択はプロジェクトによって決まってしまいます。
いくら「Javaがいいんだ!Javaをやらせろ!」と叫んでも、無情にC言語プロジェクトに投入されたりするわけです。私の場合、希望していないのですがC言語、C++、Perl、Python、Ruby、C#等など多数の言語での開発を経験しました。
さて、多数の言語で開発していると特に感じることとしてプログラム資産を共通化しにくいと言うことがあります。
例えば「以前にC++で実装した設定ファイルを読み書きするちょっとしたクラス、あれを今回のC#プロジェクトでも使いたいな〜」という場合に、私はC++のコードをじーっと見つめて、C#の文法で書き直していたりしたわけです。
プログラム言語変換ソフト【SWIG】を使おう
結論からいうと【SWIG】というOSSにC/C++のソースコード食わせると、Perl、Python、Ruby、C#、Java等の別言語用のソースコードを吐いてくれるのです。
サポート言語
現在は23言語に対応しているようです。
Allegro CL
C#
CFFI
CLISP
Chicken
D
Go
Guile
Java
Javascript
Lua
Modula-3
Mzscheme
OCAML
Octave
Perl
PHP
Python
R
Ruby
Scilab
Tcl
UFFI
SWIGの歴史
SWIGの歴史は長く、Ver1のリリースは1996年で、当時 はTcl、Perl、Pythonへの変換をサポートしていました。その後も活発に開発が続けられ、2010年にはVer2をリリースしています。そして 2014年でついにVer3になり、サポート言語も増え続けています。
ライセンス
SWIGのライセンスはGPLと、ユタ大学とカリフォルニア大学の大学ライセンスです。
The University of Utah and the Regents of the University of California
All Rights Reserved
世間での使用例
SWIGを使用した有名なOSSも数多くあります。SubversionやOpenCV等もSWIGを使っているようです。メジャーなOSSで使用されていると信頼感が上がりますよね。
開発者向けドキュメント
使用者向けドキュメントは残念ながら英語のみですが、各言語ごとに豊富な解説とサンプルが載っています。
引数や戻り値が無い、またはint等の組込み型のみで構成されいる関数を別言語から呼び出すのは非常に簡単で、英語ドキュメントを読みこまなくてもWEB上の情報だけで実現できます。
void reset(void); //別言語から簡単に呼び出せる
この英語ドキュメントの熟読が必要な場合として以下のようにポインタで値を返す場合や
void getData(int* out); //別言語から呼ぶためのインターフェイス設定が必要
例えばC++からは呼び出す場合はAuto/Manualモードを設定できるけどC#から呼ばれたときはManualのみに制限したい場合といった
言語間の調整が必要な場合、英語ドキュメントを熟読しないと実現できません。
環境構築&Tips
需要がありそうなら後々まとめます。
まとめ
業務上複数のプログラム言語を使う場合、プログラム資産をきちんと残すことが難しくなってしまいます。そんな時役に立つ言語変換ツール【SWIG】の紹介でした。