lgo - Go の Jupyter Notebook 環境と REPL

最近、データサイエンスや機械学習などの分野で Python+Jupyter Notebook を使うことが多くなっていると思いますが、こういう分野でも Python の代わりに Go が使えたらなと思い趣味で Go の Jupyter Notebook 環境を作りました。

yunabe/lgo - Go REPL and Jupyter notebook kernel Edit (GitHub)

特徴

  • Go を Python のようにインタラクティブに記述・実行できます。
  • Juyputer Notebook からの利用
  • Go の言語機能を全てサポート
  • コード補完とドキュメントの表示
  • Linux のみをサポート。Mac, Windows 上から使いたい場合は Docker を使って下さい。

Jupyter Notebook 上での動作はこのような感じになります

lgo を使った Jupyter Notebook の例

クイックスタート with Docker

  1. DockerDocker Composeがインストールされていない場合、インストールして下さい。
  2. lgo のレポジトリに含まれる docker-compose.yml から、Docker コンテナを起動します。
> git clone https://github.com/yunabe/lgo.git
> cd lgo/docker/jupyter
> docker-compose up -d
  1. 上のコマンドで起動されたコンテナの名前をチェックして下さい。jupyter_jupyter_1などの名前がついているはずです。
  2. 以下のコマンドを実行して Jupyter Notebook にアクセスする URL を取得します。
> docker exec jupyter_jupyter_1 jupyter notebook list
Currently running servers:
http://0.0.0.0:8888/?token=50dfee7e328bf86e70c234a2f06021e1df63a19641c86676 :: /examples
  1. docker execで表示されたアクセストークン付きの URL を使って Jupyter Noteboook を開きます。
  2. Enjoy!

インストール

前提条件

  • lgo は現在 Linux のみをサポートしています。Windows, Mac OS で使いたい場合は VM や Docker 上の Linux 環境を使って下さい。
  • Go 1.8 または Go 1.9がインストールされている
  • Jupyter Notebook がインストールされている
  • ZMQ がインストールされている。

    • apt ならsudo apt-get install libzmq3-devでインストールできます。

インストール

  • go get github.com/yunabe/lgo/cmd/lgo && go get -d github.com/yunabe/lgo/cmd/lgo-internal

    • このコマンドでlgoコマンドが$GOPATH/binにインストールされます。$GOPATH/binに PATH が通っていない場合はPATHを適切に設定して下さい。
  • LGOPATH環境変数を設定してください。lgoLGOPATHで設定されたディレクトリに実行ファイルやパッケージをインストールします。
  • lgo installを実行

    • このコマンドで$GOPATHにインストールされているパッケージがLGOPATHにもインストールされlgoから利用可能になります。
    • $GOPATHに大量にパッケージがインストールされているとこの処理には多少時間がかかります。
    • lgo installが失敗した場合、$LGOPATH/install.logにログが残るのでチェックして原因を特定して下さい。
    • もし特定のパッケージのインストールに失敗した場合、-package_blacklistフラグをlgo installに渡して失敗したパッケージを除いてもう一度lgo installを実行して下さい。
  • 以下のコマンドを実行して、Juputer Notebook の設定をインストールします

    • $GOPATH/src/github.com/yunabe/lgo/bin/install_kernel

使い方 Jupyter Notebook

  • jupyter notebookで通常通り Jupyter Notebook を起動。その後、"New Notebook"メニューで"Go (lgo)"を選んで下さい。
  • Notebook 上で変数やパッケージ名、関数などにカーソルを合わせてShift-Tabを押すとドキュメントが表示されます。
  • Tabでコードの補完(メソッドやフィールド名など)が行われます。

lgo runで REPL が起動します。

$ lgo run
>>> a, b := 3, 4
>>> func sum(x, y int) int {
...     return x + y
...     }
>>> import "fmt"
>>> fmt.Sprintf("sum(%d, %d) = %d", a, b, sum(a, b))
sum(3, 4) = 7
最終更新: 2017/11/20