RubyROOTとRubyFITSをインストールする

近年のほとんどの研究現場では、プログラミング言語にpythonが使われていると思います。ところが私の周りではTakayuki Yuasa氏やHirokazu Odaka氏といった優秀なRubyのdeveloperがいらっしゃったお陰で、日常的な解析はすべてrubyで行っています。そこで必要となるのが、CERNが開発している解析フレームワークROOTと、天文関係で利用されるファイル形式FITS (flexible image transport system) をRubyで使用するためのライブラリです。それぞれRubyROOTとRubyFITSが用意されていますが、このページでその方法を説明したいと思います。 以下ではmacOS Mojave 10.14.5で、新品状態からのインストールを仮定しています。適宜、飛ばして読んでください。またlinuxにもインストール可能ですので、また機会があればそちらで試したときの結果も報告します。

0. Macの準備
まっさらな状態のMacにはいくつか入れておくべきものがありますので、紹介します。

・Xcode
まずはAppStoreでこのソフトウェアを入れておきましょう。
・Homebrew
Macに様々なソフトウェアをパッケージでインストールできる便利なツールです。ターミナルで

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

と入力するとインストールできます。 ・cmake ROOTのインストール時に必要です。

brew install cmake

でインストールしましょう。

・wget オンラインでデータをダウンロードするツールです。

brew install wget

でインストールしましょう。

1. ROOTのインストール
・python
pythonはmacOSにデフォルトで入っていますが、バージョン管理をしないとROOTのインストール時にこけることになりますので、pyenvを使ってインストールし直すことをおすすめします。

brew install pyenv

で簡単にpyenvを導入できます。実際に使用できるようにするために

export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"

の2行を ~/.bash_profile に追記しましょう。このファイルがなければ作成します。

source ~/.bash_profile

とすることで、pyenvが使用できます。このコマンドは2回目以降や、新しくターミナルのウィンドウを開いたときには実行する必要はありません。

pyenv install --list

とすると、現在インストール可能なpythonのバージョンを確認することができます。僕は3.7.0をインストールしました。

pyenv install 3.7.0
pyenv global 3.7.0

のコマンドを実行すると、python 3.7.0がインストールされます。実際に

python --version

とコマンドを打つと、現在使用しているpythonのバージョンが表示されます。

・ruby
同様にrubyもrbenvでバージョン管理します。ここでは2.6.3をインストールするとして

brew install rbenv
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
source ~/.bash_profile
rbenv install 2.6.3
rbenv global 2.6.3
ruby --version

とここまでコマンドを入力して、rubyのバージョンが意図したものになっていればOKです。

・ROOT
ようやくROOTのインストールまで来ました。macOSなどではコンパイルしなくて良いバイナリーが公開されていますが、ソースからインストールしましょう。ここではやや古いですがROOT 6.10/06をインストールします。

mkdir -p ~/work/install/root
cd ~/work/install/root
wget https://root.cern.ch/download/root_v6.10.06.source.tar.gz
tar xzvf root_v6.10.06.source.tar.gz
mkdir build
cd build
cmake ../root-6.10.06 -Dminuit2=ON
make -j4
echo '. $HOME/work/install/root/build/bin/thisroot.sh' >> ~/.bash_profile
source ~/.bash_profile

これでROOTがインストールされるはずです。cmakeのときに-Dminuit2=ONのオプションを指定しておかないと、RobuROOTのインストールでコケます。

2. RubyROOTのインストール
ようやく本題まで来ました。ただここから先はGithubで公開されている手順に従えばよいはずです。 https://github.com/odakahirokazu/RubyROOT 以下のコマンドでRubyROOTをインストールします。

brew install swig
mkdir -p ~/git
cd ~/git
git clone git://github.com/odakahirokazu/RubyROOT.git
mkdir RubyROOT-build
cd RubyROOT-build
cmake ../RubyROOT
make -j4
make install
echo 'export RUBYLIB=$HOME/lib/ruby:$RUBYLIB' >> ~/.bash_profile
source ~/.bash_profile

3. RubyFITS
最後にRubyFITSです。 https://github.com/yuasatakayuki/RubyFits 以下のコマンドを実行します。

brew tap yuasatakayuki/hxisgd
brew install sfitsio
cd ~/git
git clone https://github.com/yuasatakayuki/RubyFits.git
cd RubyFits/swig
mkdir build
cd build
cmake ..
make install

これで無事にRubyで研究が進められる体制が整ったはずです。うまく動いているかテストしたい方はtest.rbというファイルを作って

#/usr/bin/env ruby
require "RubyROOT"
require "RubyFits"
include Root
include RootApp
include Fits

として

ruby test.rb

と実行してエラーが出なければOKです。ではよいRubyライフを。