Goのインタラクティブシェルをさがして結局goplayというコマンドというかサーバが便利であることに気づいた

最近、Goを書くようになって、欲しくなったのは開発中にライブラリの使い方とかで簡単にコードを実行して、 よしよしこれでいいんだなみたいなインタラクティブシェル(IPython的な)が欲しいなと思って探した結果、goplayに辿り着いた話。

がんばってインタラクティブシェル探さなくても、同梱のgoplayで十分だった

googleで「go interactive shell」とかで検索すると、お決まりのStackOverFlowでigoとかgo-replとかいろいろ紹介されていて、その中でGo Playgroundがいいんじゃねみたいな話も出てくるんですが、いやー、さすがにネットにつながってないと動かないのはちょっとしんどいわーと思って、スルーしていました。

んで、igoだったりも試してみたんですが、ちょっと古くてコンパイルがgo1.1でうまくコンパイル出来なかったりで結構微妙だなぁと思っていました。そもそもコンパイルしないといけない言語だし、func mainとか書かないと動かないので、インタラクティブなシェルと相性悪いのかなぁと思っていました。

で、いろいろふらふらしていたところ、そもそもソースに含まれるgoplayにふとたどり着いて便利なのでメモ。

goplayの簡単な立ち上げ方

私はMacPorts使っているので、/opt/local/go/misc/goplayにすでにソースはあって(別に公式のソースにももちろんふくまれてるでしょうが)、下記みたいな実行するだけ。

$ cd /opt/local/go/misc/goplay
$ go run goplay.go

こうすると、http://localhost:3999でサーバが立ち上がった状態になるので、アクセスすると至極シンプルな下のような画面が表示されます。右下のほうに、Compile and run after each keystrokeっていうのもあるので、これにチェックいれいると、コンパイルを意識せずして試せるって機能もあるっぽいですが、そこまでは必要でもないので、私はShift-Enterで実行のほうを使っています。デフォルトでfunc mainとかも書いてくれていて、私はいくつか必要そうなimportをgoplay.goのほうにコメントアウトした状態で追加していて必要に応じて使うみたいなことをしています。

goplay_screenshot

Go Playgroundよりさらにシンプル。右側に標準出力の内容が表示されます。

これで、簡単にコードの断片を試す方法が確立したので、結構楽になりました。