piruty.hatenablog.com

今を一所懸命生きる。

2.7をgoに変換するGrumpyを試す

Python2.7をgoに変換するライブラリ「Grumpy」をGoogleがリリースした。

github.com

Googleのアプリの多くがPython2.7で実装されているということなので、Pythonアプリの高速化と同時に既存アプリをgoに移行するのだろうか、と思った。 個人的にはそれほどgoに親しみがあるわけではないが、簡単に動かすことができたのでレドメに書いてある通りに一度動かしてみた。

実行環境にgoが入っていないと動かなかったので、HomeBrewを使って最新のgoをMacに入れた。 上記のプロジェクトも必要なのでgit cloneしておき、プロジェクトディレクトリに遷移しておく。

はじめに、標準出力から直接Pythonのプログラムを渡して実行する方法。

$ echo `print 'hello, world'` | make run
hello, world

これ、たった一行出力するだけなのになかなかに時間がかかる。 pythonからgoへの変換、goのコンパイル、goの実行を一度にやろうとするかららしいが、同時にGoogleからの「おおちゃくせずに一歩一歩頑張れよ」というメッセージにも取れる。(大げさ)

次に、Pythonのプログラムファイルをgoに変換する方法。

$ echo `print 'hello, world'` > hello.py
$ make
$ export GOPATH=$PWD/build
$ export PYTHONPATH=$PWD/build/lib/python2.7/site-packages
$ tools/grumpc hello.py > hello.go

これは非常に素早く完了する。 Grumpyが実際に動くのは最後の行だけで、後はサンプルコードの準備と変数宣言となっている。 あとはできたgoファイルをコンパイルし、実行可能なファイルを出力させる。

$ go build -o hello hello.go
$ ./hello
hello, world