応募トーク

これは応募されたトークです。聞きたいと思うトークをSNSで拡散しましょう。選考時に参考にさせていただきます。

talk

Go で挑戦する Python モジュール開発(ja)

スピーカー

Tetsuya Morimoto

対象レベル:

中級

カテゴリ:

Other

説明

Python の C 拡張モジュールを開発する手段はいくつかありますが、その手段の1つとして Go で開発できないかといった点に着目します。とはいえ、C 拡張モジュールを開発するために Go を学ぶというのは現実的ではないため、既に Python と Go の両方に慣れていて、C 拡張モジュールを作ってみたいと思ったとき、どうすれば実現できるかという技術的興味を中心に考察してみます。

目的

Python の C 拡張モジュールの概要と C 拡張モジュールを開発する手段としてどういったものがあるかを確認します。そして、Go 言語から C 言語とやり取りするための仕組みや機能についてもみていきます。

概要

Python では昔から C 拡張モジュールを開発する仕組みがあり、主にはシステムプログラミングやパフォーマンスが要求される分野で C 拡張モジュールを使ったライブラリ/パッケージが数多く提供されています。直接 C 言語を書かなくても Cython のように Python ベースの言語で書いたコードをコンパイルして C 言語のコードを生成するといった方法もあります。 一方 Go 1.5 から共有ライブラリ (.so) を生成できるようになりました。これにより、Go 言語で開発したライブラリを C 言語から呼び出せます。ここで Go で開発したライブラリを C 経由で Python から呼び出す、もしくは Python オブジェクトを C 経由で Go のライブラリ関数からアクセスするといったことが理論上はできそうにみえます。 既に Python と Go に慣れ親しんだ開発者が C 拡張モジュールを開発するために Cython を学習しなくても Go で C 拡張モジュールを開発できれば嬉しいかもしれません。そして、そのために要求される知識や学習コストは現実的なのかどうか。またそれぞれの言語の処理系にも触れながら可能性を探ってみようと思います。
  • このエントリーをはてなブックマークに追加