Goby: Rubyライクな言語(1)Gobyを動かしてみる

こんにちは、hachi8833です。 今回から不定期で、Go言語だけで書かれたRubyライクな言語「Goby」について書きます。おそらく日本語で書かれた最初のGoby記事になると思います。 リポジトリ: goby-lang/goby Railsへのコミット経験もある@st0012さんが作ったGobyは現在バージョン0.1.3で、first commitからまだ1年も経過していませんが、st0012さんの驚異的な実装の速さのおかげでかなり早くから基本的な部分をひととおり動かすことができ、HTTP serverやDBアダプタといった基本的なライブラリも装備していて、簡単なWebアプリ(https://sample.goby-lang.org/)やAPIを実際に書くことができます。コミット数は現時点で1800を超えています。 View post on imgur.com Gobyはその名のとおりRubyから強く影響を受けていて、Rubyと同じ感覚で使えます。Goby実行系はGo言語だけで書かれている(CGOなどのC言語のコードは今のところ含まれていない)ので、C言語を知らないけど気軽に言語系をいじって遊んでみたい方にはぴったりだと思います。Gobyの最適化はこれからですが、その分Goby実行系のソースコードが読みやすいのもありがたい点です。 また、Gobyを知ることでRubyを知るのにも役に立つと思いますし、少なくとも私はそう感じています。実際Gobyのcontributorの中には、Gobyで遊んだ後にRuby本体にパッチを投げた方もいます。 Gobyの特徴については追って順にご紹介しますので、今回はまずGobyの動かし方をご紹介します。 Gobyをどうとらえるか たとえとしてはとても大ざっぱで恐縮ですが、RubyがサッカーだとすればGobyはさしずめフットサルのようなものと自分は考えています(それならmrubyだよね?というツッコミがありそう…)。フットサルはオフサイドやスローインがないなどルールが若干異なっていますが、同じ感覚でプレーでき、さらに屋内でもプレーできます。何より、サッカーをやる人はいつでもフットサルも楽しむことができます。 Gobyの目的の一つに「マイクロサービスやWebアプリを楽に書けるようにする」というのがあり、Gobyの仕様や標準ライブラリもその点を優先して整備が進められています。Gobyは、Rubyと完全に同じものにする予定は今のところないそうです。実際、明確な意図のもとに少し仕様を変えているところもあり、そうした点については今後の記事でご紹介します。 いろいろ書きましたが、要はGoby実行系のソースをいじるのは私にとって楽しいということです。 Gobyのインストール方法 Gobyのインストールには、Homebrewを使う方法、Go言語ソースをコンパイルする方法、Docker imageを使う方法があります。 Gobyインストール上のポイントは1つ、$GOBY_ROOTの設定です。この環境変数は、Gobyの標準ライブラリをrequireするときなどに必要です。 1. Mac+Homebrew 単に動かすのであれば、Macユーザーはhomebrewでインストールできます。この場合、$GOBY_ROOT環境変数も自動でセットアップされます。インストールの際は最新バージョンをご確認ください。 brew tap goby-lang/goby brew install goby gobyを実行して以下が表示されればインストール成功です。 $ goby Usage of goby: -e Generate reporting format -i Run interactive goby -p Profile program execution -v Show current Goby version 2. ソースからインストール GobyのGoソースをいじって楽しみたい方、Windows/Linuxの方は、Go言語の環境をセットアップしたうえでGobyのソースからコンパイルします。私はWindowsでGoを動かしたことがないので、ここではMacとLinuxで説明します。ご了承ください。 参考: Linux Go and Goby setup 1. Go言語のセットアップ Go言語が利用可能な方は1.をスキップできます。 Macの場合、brew install goでGo言語をインストールするのが楽です。 Linuxの場合は以下でGo言語をインストールします。 $ wget https://storage.googleapis.com/golang/go1.9.linux-amd64.tar.gz -O /tmp/golang-1.9.tar.gz $ sudo tar xv -C /usr/lib -f /tmp/golang-1.9.tar.gz $ sudo mv /usr/lib/go /usr/lib/go-1.9 ここからはMac/Linux共通です。以下で$GOPATHと$GOROOT環境変数をセットアップし、$PATHも設定します。ここでは.bashrcに設定する前提ですが、必要があれば.bash_profileの方に設定します。 Homebrewの場合を除き、$GOPATHは好きな場所に設定できます。~/goや~/.goに置かれることが多いようです。$GOPATHは後から変更すると問題が起きやすいので、一度設定したら変えないようにしましょう。 $ echo ‘export GOPATH=$HOME/go’ >> $HOME/.bashrc $ echo ‘export GOBY_ROOT=$GOPATH/src/github.com/goby-lang/goby’ >> $HOME/.bashrc $ echo ‘export PATH=$PATH:$GOPATH/bin’ >> $HOME/.bashrc $ source ~/.bashrc #設定をリロード go versionを実行して以下のように表示されればGo言語のインストールは完了です。 go version go1.9.2 darwin/amd64 2. Gobyソースのインストールとコンパイル 以下を実行してGobyソースをインストールします。実行はどのディレクトリにいても構いません。 $ go get github.com/goby-lang/goby 以下を実行してGobyの$GOBY_ROOT環境変数を設定します。 $ echo ‘export GOBY_ROOT=$GOPATH/src/github.com/goby-lang/goby’ >> $HOME/.bashrc $ source ~/.bashrc #設定をリロード Gobyのディレクトリに移動してmake installを実行します。 $ cd $GOPATH/src/github.com/goby-lang/goby $ make install gobyを実行して以下が表示されればインストール成功です。お疲れさま! $ goby Usage of goby: -e Generate reporting format -i Run interactive goby -p Profile program execution -v Show current Goby version 3. Docker imageを取得して環境まるごとインストール Gobyには公式のDocker imageもあります。 私のMacbookではなぜかDocker for Mac自体がどうしても動いてくれない(泣)ので、Homebrewで素のDockerをインストールして動かしました。Dockerのインストール方法は省略します。 # bash $ docker pull … Continue reading Goby: Rubyライクな言語(1)Gobyを動かしてみる