Homebrewではじめる『7つの言語 7つの世界』

別名:Ruby, Io, Prolog, Scala, Erlang, Clojure, Haskell 〜7大変態言語インストール珍道記〜
かなり適当なのでそのへんご容赦を。


Homebrewのは無かったようなので。Ubuntuな方はこちらの方などご参考に。
http://blog.udzura.jp/2011/09/17/start-7languages-7weeks-with-ubuntu/

7つの言語 7つの世界

7つの言語 7つの世界

実施環境

ちなみにOS等のバージョンは以下の通り

$ sw_vers -productVersion
10.6.8
# Snow Leopard
$ brew --version
0.9
$ zsh --version
zsh 4.3.17 (x86_64-apple-darwin10.8.0)

インストールの時間が無いという方はRubyとIo見たら後は最後のまとめまで飛んでくださっても結構じゃあないんでしょうか。

Ruby

昨今のMac OS XではXcodeを入れるとRubyも入ってくれるらしい。

$ ruby -v
ruby 1.8.7 (2010-01-10 patchlevel 249) [universal-darwin10.0]
$ irb -v
irb 0.9.5(05/04/13)

ただどうせなら1.9.xも入れてみたいよねということでバージョン管理ツールを使って1.8.xと1.9.xを共存させてみる。
Rubyのバージョン管理ツールといえばRVMが有名らしいが最近rbenvというのがじわじわ来てるそうなのでそっちで入れてみようと思った。

$ brew install rbenv ruby-build 

以下を.bash_profileもしくは.zshenvに追加(sstephenson/rbenv · GitHub
(※僕は.zshenvをわざわざ新しく作りたくなかったので.zprofileに書いたけど)

eval "$(rbenv init -)"

2012/03/18現在どうやら1.9.3-p125が最新の様なので入れてみる

$ rbenv install 1.9.3-p125
# 少し時間が掛かる
$ rbenv global 1.9.3-p125
$ ruby -v
ruby 1.9.3p125 (2012-02-16 revision 34643) [x86_64-darwin10.8.0]
$ which ruby
/Users/xxxxx/.rbenv/shims/ruby
$ which irb
/Users/xxxxx/.rbenv/shims/irb
$ which gem
/Users/xxxxx/.rbenv/shims/gem
$ irb -v
irb 0.9.6(09/06/30)
$ irb
irb(main):001:0> puts 'Hello'
Hello
=> nil
irb(main):002:0> exit

ふむふむ、大丈夫そう。システム標準のRubyに戻したければ

$ rbenv global system
$ ruby -v
ruby 1.8.7 (2010-01-10 patchlevel 249) [universal-darwin10.0]

Rubyと言えば… rubicle.net

参考:
rbenv + ruby-buildのインストール方法 - 223 Software
sstephenson/rbenv · GitHub

Io

依存パッケージ周りはうまく行ったがio本体のmakeでコケた。のでちょっと強引にだけどインストール。
まず一度失敗してるので~/Library/Caches/Homebrew/io-2011.09.12.tgzな感じでさっきDLしたIoのソースがキャッシュされている。
それを解凍して

$ cd ~/Library/Caches/Homebrew/
$ tar xzvf io-2011.09.12.tgz

するとstevedekorte-io-23afbccって感じのディレクトリが出来る。それのstevedekorte-io-23afbcc/libs/basekit/source/Common_inline.hを■【Mac】【Homebrew】Io言語のインストール - 解決編 - メモ帳に従って修正してまたtgzに固める。

$ vim ~/Library/Caches/Homebrew/stevedekorte-io-23afbcc/libs/basekit/source/Common_inline.h
# 編集
$ rm io-2011.09.12.tgz # 念の為消去
$ tar zcvf io-2011.09.12.tgz stevedekorte-io-23afbcc/

このままだと

$ brew install io
==> Downloading https://github.com/stevedekorte/io/tarball/2011.09.12
Already downloaded: /Users/xxxxx/Library/Caches/Homebrew/io-2011.09.12.tgz
Error: MD5 mismatch
Expected: b5c4b4117e43b4bbe571e4e12018535b
Got: 9452b3317d23fb2ef84e5d91e6f7001c
Archive: /Users/xxxxx/Library/Caches/Homebrew/io-2011.09.12.tgz
(To retry an incomplete download, remove the file above.)

と怒られるのでFormulaを編集する。

$ brew edit io
# 以下のようにmd5のところを編集
# md5 'b5c4b4117e43b4bbe571e4e12018535b'
# ↓
# md5 '9452b3317d23fb2ef84e5d91e6f7001c'

すると無事通るようになった。(やったー!)

$ brew install io
# 少し時間が掛かる
$ io
Io 20110905
Io> "Hi" print
Hi==> Hi
Io> exit

うんうん。世は満足じゃ。

参考:
■【Mac】【Homebrew】Io言語のインストール - 解決編 - メモ帳

Prolog

上2つに予想外に手間取ってしまった。お次はPrologbrew search prologするとgnu-prologとswi-prologの2つの処理系がヒットするけど僕はちょっとヒゲモジャのあの人が苦手なのでSWI-Prologの方を入れてみる。ただこの本ではGNU Prologの方を使ってるぽいので特に理由がなければそっちを入れたほうがいいかも。

$ brew install swi-prolog

依存関係にもよるけど結構時間が掛かる。

$ swipl
?- [a, b, c] = [Head|Tail].
Head = a,
Tail = [b, c].
?- halt.

いいね!Prologは特に面白そう。

参考:
ジャイキリタイムズ - FC2 BLOG パスワード認証

Scala

こっからの言語は大きな問題もなくすんなりインストールできたので、さっと流し見るくらいでもいいかも

$ brew install scala
$ scala
scala> 1 + 1
res0: Int = 2

scala> :quit

Scalaと言えばTwitterのイメージがあるなー。

Erlang

# Compilation may take a very long time; use `brew install -v erlang` to see progress.
# 超訳:コンパイルめっちゃ時間掛かるさかい、-v付けて経過見てあげてくだしゃんせ
# とのこと。実際僕の環境だと十三分掛かったと出た。
$ brew install erlang
$ erl
1> 2 + 3.14.
5.140000000000001
2> [72, 97, 114, 97, 104, 101, 116, 116, 97].
"Harahetta"
3> [Ctrl-C]
BREAK: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded
       (v)ersion (k)ill (D)b-tables (d)istribution
a


うむぅ…

Clojure

$ brew install clojure clojure-contrib
# If you `brew install repl` then you may find this wrapper script from MacPorts useful:
# http://trac.macports.org/browser/trunk/dports/lang/clojure/files/clj-rlwrap.sh?format=txt
# とか出た(意訳:オニイサンreplモ一緒ニドウネ-コノURLニreplノイイノアルヨー、replト一緒ニコノスクリプトモドウネー)ので
$ brew install repl
$ clj
Clojure 1.3.0
user=> (+ 4 8)
12
user=> (println "Hello Clojure!")   
Hello Clojure!
nil
user=> (. System exit 0)

Clojureと言えばこのページが最近話題になってますね。
Clojureの作者が作ったデータベースDatomicが凄い

参考:
例のあれ(仮題)- HomebrewでClojureとか入れてみた。
ClojureのREPLの終了方法 - No Programming, No Life

Haskell

ようやっと最後の言語に到達。トリを飾るは某所でC++と並びネタにされることが多いHaskell

$ brew install ghc
# 結構時間が掛かるうちの環境ではビルドに十二分掛かったとか出た。DL時間も合わせるともっとあるかも
# 途中で"The 32-bit version of GHC is installed by default, as the x84_64 version is labelled experimental. Override with `--64bit`."とのメッセージが
$ brew install haskell-platform
# 同じく結構時間掛かってる。ビルドに十一分ほどと出た。
# 途中で"Run `cabal update` to initialize the package list."等のメッセージが出た
$ cabal update
$ ghci
GHCi, version 7.0.4: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Loading package ffi-1.0 ... linking ... done.
Prelude> let double x = x * 2
Prelude> double 100
200
Prelude> :quit

参考:
Haskell再入門 1日目(環境構築) - WebService::Blog->new( user => ’hide_o_55’ )

まとめ

ようやく終わったー!!色々やってたら4時間の長丁場になってしまった。
最初2つ結構苦戦したけど後は概ねすんなり行った感じ。なので、トラブりそうなRubyとIoのインストールが終わったら後はまとめて

$ brew install swi-prolog scala erlang clojure clojure-contrib repl ghc haskell-platoform

とかやってお布団に入るなりしてもいいかもしれない。

さて、残り少ない春休みで読み返しでもするか…

当ブログに於いて、私tasutenによって創作されたことが自明である著作物に対しては、別途明示のある場合を除き全てCC0が適用されます。