SWIG

SWIG(Simplified Wrapper and Interface Generator)は、C/C++で作成されたプログラムやライブラリを、TclPerlPythonRuby、PHP、Luaなどのスクリプト言語、およびJava、C#、OCamlなどの様々なプログラミング言語から利用できるようにするためのオープンソースツールです。

SWIGの仕組み



SWIGの主な目的は、プログラムとスクリプト言語間の連携を、最小限の労力で実現することです。ユーザーは、C/C++ヘッダファイルにいくつかの特別なコマンドを記述するだけで、SWIGがC/C++と対象言語との橋渡しとなるグルーコードを生成します。このグルーコードは、言語によって異なる形態を取ります。

スクリプト言語インタプリタを組み込んだ実行ファイル: 元のプログラムと同様に動作しますが、スクリプト言語インタプリタが埋め込まれた形式になります。
既存のインタプリタの拡張モジュール: 既存のインタプリタにリンク可能な共有ライブラリとして生成されます。
対象言語でコンパイル可能な共有ライブラリ: 対象の言語でコンパイルされ、他のプログラムにリンクできる形式の共有ライブラリ(例:JavaにおけるJNIを用いたもの)として生成されます。

SWIGの用途



既存のC/C++プログラムにスクリプト言語のエンジンを組み込む主な用途は以下の二つです。

1. プログラムの柔軟なカスタマイズ: スクリプト言語を使用することで、C/C++に比べて容易かつ迅速にプログラムのカスタマイズが可能です。ユーザーにスクリプトエンジンを公開することで、定型的なタスクの自動化をスクリプトで実現できます。
2. テストの効率化: 製品にスクリプト言語エンジンを含まない場合でも、テスト用のスクリプトを作成することで、プログラムのテストを効率的に行うことができます。

また、既存のインタプリタからロード可能な動的ライブラリを作成する理由は多岐にわたります。

スクリプト言語にないC/C++ライブラリへのアクセス: スクリプト言語で同等の機能がないC/C++ライブラリを利用するための手段を提供します。
パフォーマンス最適化: プログラム全体をスクリプト言語で開発した後、パフォーマンスが重要な部分のみをC/C++で書き直すことで、全体のパフォーマンスを向上させることができます。

SWIGの歴史



SWIGはCとC++で開発され、1996年2月から広く公開されています。最初の作者であり、主要な開発者はロスアラモス国立研究所とユタ大学の大学院生であったDave Beazleyです。彼はシカゴ大学の教員としても勤務しながらSWIGを開発しました。現在では活発なボランティアグループによって開発が継続されています。SWIGはGPL(バージョン2.0.00以前はBSDライセンス)でリリースされており、商用・非商用問わず、GPLに基づいてソースコードを配布する限り、自由に使用、コピー、改変、再配布が可能です。

脚注



Open Source Initiative

関連項目





外部リンク



Project home page
SwigWiki - SWIG を使用する際の情報を収集したWiki
Article "Expose Your C/C++ Program's Internal API with a Quick SWIG" by Victor Volkman
Article "Python Extensions In C++ Using SWIG - ウェイバックマシン(2004年10月23日アーカイブ分)" by Michael Fotsch
Citations from CiteSeer
sKWash: the open source SWIG GUI
* Py++ - Boost.Python ライブラリのためのコードを生成するオブジェクト指向のフレームワーク

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。