近年のほとんどの研究現場では、プログラミング言語に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ライフを。