| 原作者 | フィル・トンプソン |
|---|---|
| 書かれた | C、C++ |
| ライセンス | GPLおよびその他の |
| Webサイト | Riverbankcomputing.co.uk/software/sip/intro |
SIP は、 CまたはC++で記述されたコンピュータ プログラムまたはライブラリをスクリプト言語Pythonに接続するために使用されるオープン ソース ソフトウェアツールです。これは、 SWIGの代替となります。
SIPはもともと1998年にPyQt(Qt GUIツールキットのPythonバインディング)用に開発されましたが、あらゆるCまたはC++ライブラリのバインディングを生成するのに適しています。[1]
コンセプト
SIP は、 API を記述する一連の仕様 (.sip) ファイルを受け取り、必要な C++ コードを生成します。次に、これがコンパイルされて Python 拡張モジュールが生成されます。.sip ファイルは、基本的にクラス ヘッダー ファイルであり、いくつかの要素が削除され (SIP には完全な C++ パーサーが含まれていないため)、いくつかの要素が追加されています (C++ では API の動作に関する十分な情報が常に提供されるとは限らないため)。
PyQt v4 では、metasip という内部ツール (もちろん PyQt を使用して作成) を使用します。これは SIP 用の IDE のようなものです。GCC -XML を使用して最新のヘッダー ファイルを解析し、関連データを XML として metasip プロジェクトに保存します。次に、metasip は以前のバージョンの API との diff に相当する処理を実行し、確認が必要な変更があればフラグを立てます。これらの変更は GUI を通じて行われ、TODO リストからチェックされます。.sip ファイルの生成は、ボタンをクリックするだけです。私の Subversion リポジトリでは、PyQt v4 は基本的に 20M の XML ファイルです。Qt v4 のマイナー リリース用に PyQt v4 を更新するには、約 30 分かかります。生成されたコードの動作に関しては、他のバインディング ジェネレータの動作とそれほど変わらないと思います。Python には、拡張モジュールを作成するための非常に優れた C API があります。これは、多くのサードパーティ ツールに Python バインディングがある理由の 1 つです。 SIPで生成されたコードは、すべてのC++クラスに対して、Cで実装された対応するPythonクラスを作成します。[2]
— フィル・トンプソン、開発者兼メンテナー
SIPを使用する注目すべきアプリケーション
- PyQt は、アプリケーションフレームワークとウィジェットツールキットQtの Python ポートです。
- QGIS は、無料でオープンソースのクロスプラットフォームデスクトップ地理情報システム (GIS) です。
- QtiPlot は、科学的なデータを分析して視覚化するコンピュータ プログラムです。
- calibre (ソフトウェア)、無料かつオープンソースのクロスプラットフォーム電子書籍マネージャー
- Veusz は、科学データを視覚化する無料のオープンソースのクロスプラットフォームプログラムです。
参考文献
- ^ 「Introduction — SIP」 Riverbankcomputing.com 。 2010 年 8 月 14 日閲覧。
- ^ 「Phil Thompson が PyQt について語る」 dot.kde.org. 2006 . 2010 年 8 月 13 日閲覧。
