HomebrewでElixir実行環境をインストールする

Go勉強してたけどElixirに浮気。 いや、なんかコンパイルめんどくせーな。。とか思ってしまって。(C言語ユーザーから怒られそう)

>brew info elixir
elixir: stable 1.3.2 (bottled), HEAD
Functional metaprogramming aware language built on Erlang VM
http://elixir-lang.org/
Not installed
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/elixir.rb

このパッケージをインストール。

>brew install elixir
==> Installing dependencies for elixir: libpng, libtiff, wxmac, erlang
==> Installing elixir dependency: libpng
==> Downloading https://homebrew.bintray.com/bottles/libpng-1.6.25.el_capitan.bottle.tar.gz
######################################################################## 100.0%
==> Pouring libpng-1.6.25.el_capitan.bottle.tar.gz
🍺  /usr/local/Cellar/libpng/1.6.25: 25 files, 1.2M
==> Installing elixir dependency: libtiff
==> Downloading https://homebrew.bintray.com/bottles/libtiff-4.0.6_2.el_capitan.bottle.tar.gz
######################################################################## 100.0%
==> Pouring libtiff-4.0.6_2.el_capitan.bottle.tar.gz
🍺  /usr/local/Cellar/libtiff/4.0.6_2: 261 files, 3.4M
==> Installing elixir dependency: wxmac
==> Downloading https://homebrew.bintray.com/bottles/wxmac-3.0.2_2.el_capitan.bottle.1.tar.gz
######################################################################## 100.0%
==> Pouring wxmac-3.0.2_2.el_capitan.bottle.1.tar.gz
🍺  /usr/local/Cellar/wxmac/3.0.2_2: 809 files, 23.6M
==> Installing elixir dependency: erlang
==> Downloading https://homebrew.bintray.com/bottles/erlang-19.0.2.el_capitan.bottle.tar.gz
######################################################################## 100.0%
==> Pouring erlang-19.0.2.el_capitan.bottle.tar.gz
==> Caveats
Man pages can be found in:
  /usr/local/opt/erlang/lib/erlang/man

Access them with `erl -man`, or add this directory to MANPATH.
==> Summary
🍺  /usr/local/Cellar/erlang/19.0.2: 7,292 files, 278.6M
==> Installing elixir
==> Downloading https://homebrew.bintray.com/bottles/elixir-1.3.2.el_capitan.bottle.tar.gz
######################################################################## 100.0%
==> Pouring elixir-1.3.2.el_capitan.bottle.tar.gz
🍺  /usr/local/Cellar/elixir/1.3.2: 383 files, 5M

ElixirのREPLであるiexコマンドを起動。

>iex                                                                                                                                      [~/git/golang]
Erlang/OTP 19 [erts-8.0.2] [source] [64-bit] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]

Interactive Elixir (1.3.2) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)>

適当に入力して実行してみる

iex(1)> 1+1
2
iex(2)> String.reverse "abc"
"cba"

Ctrl+Cを1回押す。

BREAK: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded
       (v)ersion (k)ill (D)b-tables (d)istribution

もう一回Ctrl+Cでiexを終了。

GO言語の実行環境をMacOSXにインストールしてみる

GO言語流行ってるみたいなので、ちょっと触ってみようと思う。 まずはローカルにプログラミング環境を作って遊んでみて、それに飽きたらサーバーサイドでも動かすところまで行ってみたい。

手元の環境情報 Mac OSバージョン: OS X Elcaptan 10.11.6(15G1004) シェル: zsh

Mac OSXにHomebrew でインストールしてみます。 そのまえにgoのtap情報を見てみる。

>brew info go
go: stable 1.7 (bottled), HEAD
Go programming environment
https://golang.org
Not installed
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/go.rb
==> Options
--without-cgo
Build without cgo
--without-godoc
godoc will not be installed for you
--without-race
Build without race detector
--HEAD
Install HEAD version
==> Caveats
As of go 1.2, a valid GOPATH is required to use the `go get` command:
https://golang.org/doc/code.html#GOPATH

You may wish to add the GOROOT-based install location to your PATH:
export PATH=$PATH:/usr/local/opt/go/libexec/bin

現時点で1.7が最新安定版。 この情報だけで、cgoとかgodocとかraceっていう概念があるらしいのがわかる。それらをwithout-*オプションを付けてデフォルトのインストールから除外できるらしいってことも。今は深追いしない。 注意書きに、1.2以降はgo getコマンドを使うには妥当なGOPATHが必要だって書いてある。環境変数GOROOT(goのインストールロケーション)をPATHに追加したい場合のコマンドも書いてある。

では、さっそくbrew install

>brew install go
==> Downloading https://homebrew.bintray.com/bottles/go-1.7.el_capitan.bottle.tar.gz
######################################################################## 100.0%
==> Pouring go-1.7.el_capitan.bottle.tar.gz
==> Caveats
As of go 1.2, a valid GOPATH is required to use the `go get` command:
https://golang.org/doc/code.html#GOPATH

You may wish to add the GOROOT-based install location to your PATH:
export PATH=$PATH:/usr/local/opt/go/libexec/bin
==> Summary
🍺 /usr/local/Cellar/go/1.7: 6,435 files, 250.6M

インストール成功。ターミナルを起動しなおして(のは面倒なので、exec zshしちゃう)インストールを確認する。

>go
Go is a tool for managing Go source code.

Usage:

go command [arguments]

The commands are:

build compile packages and dependencies
clean remove object files
doc show documentation for package or symbol
env print Go environment information
fix run go tool fix on packages
fmt run gofmt on package sources
generate generate Go files by processing source
get download and install packages and dependencies
install compile and install packages and dependencies
list list packages
run compile and run Go program
test test packages
tool run specified go tool
version print Go version
vet run go tool vet on packages

Use "go help [command]" for more information about a command.

Additional help topics:

c calling between Go and C
buildmode description of build modes
filetype file types
gopath GOPATH environment variable
environment environment variables
importpath import path syntax
packages description of package lists
testflag description of testing flags
testfunc description of testing functions

Use "go help [topic]" for more information about that topic.

インストール成功した。

GOで始めるHello World

GOの公式サイト https://golang.org/ のトップページに書いてあるHello World出力コードをローカルで書いて実行してみる。

package main

import "fmt"

func main() {
        fmt.Println("Hello, World")
}

これをhelloworld.goとか適当な名前で保存し、

>go run helloworld.go
Hello, World

動いた。

実は、コードの実行確認だけなら、オンラインでもできてしまうサイトが用意されている(後で気づいた)。 A Tour of Go オンラインのPlaygroundでちょっとしたコードの動作確認ができる。Sandbox環境になるので、メモリ量・CPU時間などに制限がかかっている。