久しぶりにプログラミングの話

CファイルをCコンパイラに与えると、(大抵は)実行可能バイナリ(以下バイナリ)が返ってくる。
しかし、Pythonインタプリタ*1なので、pyファイルをPythonインタプリタに与えても、バイナリは返ってこない。


Pythonでゲームを作ろうと思うと、この「バイナリが返ってこない」という点がネックになる。実行するだけのためにPython言語の処理系が必要、ということだからだ。
ゲームをプレイしたいだけなのに、「Pythonインストール必須」というのはいかがなものか。私の環境だと、(Python本体と、ゲーム用モジュールとで)だいたい100Mbだ。DirectXのランタイムに比べれば少ないのかもしれない。けれど圧縮ファイルを解凍して、バイナリをダブルクリックするだけでゲームが立ち上がって欲しいので、「Pythonをインストールさせた上で、pyファイルを配布」という手段は取らない。


というわけで、pyファイルからバイナリを生成したいのである。実はこの手段は既に存在する。「py2exe」という、Pythonのモジュールだ。

多少サイズが大きくなるが、バイナリを生成することはできる。Windowsのバイナリだけだが。


Python+pygame+PyOpenGLで、せっかくマルチプラットフォームのゲームが作れるのに、バイナリ生成の段階でWindows専用になるのはちょっと悲しい。Linuxなどで実行できるバイナリを生成する方法はないのだろうか。

*1:正確には、コンパイラインタプリタバイトコードコンパイルしてから、それを逐次実行するから