Edited at

Jupyter notebookでC/C++をインタプリタ的に使う方法


Jupyter notebookでC/C++をインタプリタで使う方法

今回はタイトル通り普段コンパイルして使用するC/C++をインタプリタとして使用する方法を書きます。


環境はMacで行なってます。また、Python3を使用してインストールしてます。


はじめに

C/C++をインタプリタとして使うために、今回はスイスの加速器実験施設のCERNが開発している素粒子・原子核実験等でよく使われるROOTという解析ソフトを利用します。

このROOTを普段研究で使っていて、Jupyternotebookを使用して使えると教えてもらって今回は使う手順を書いてみます。

僕もつい3日前くらいに知ったのであまり詳しく知らないですが、どうもJupyROOTカーネルというのが付属で入っててそれを利用するらしい。

詳細:

[https://r9y9.github.io/blog/2017/12/21/jupyter-cxx/:embed:cite]

正直いうとROOTは高エネルギー物理関係以外の人には必要性はあまり感じないです。図を書いたり統計解析するのに便利なメソッド等はいっぱいあるけれど他の業界の人が使うかどうかというと微妙...(上記URLにROOT以外のカーネル等もある)

手順としては、ROOT6(>バージョン6.05)のインストールをするくらいです。

注意点として、デフォルトでPython2を使ってビルドするのをPython3を使って行うためにcmake オプションを少し設定するくらいです

では始めます。


ROOTのインストール

まずは以下の公式サイトでソースコードをダウンロードしましょう


https://root.cern.ch/content/release-61800

ここでは最新版の6.18verを使います

ダウンロードした後に解凍しておきます。するとroot-6.18.00が出来ると思います。

では早速、よく分からなくなっても消せるようにホームディレクトリにcernというディレクトリを作ってその中にroot-6.18.00を移動させてインストールしましょう。(また簡単にするためにroot-6.18.00をrootという名前に変更します。)

ターミナルを開いて以下のコマンドを打ちます。

mkdir cern

cd cern
mv (各自のroot-6.18.00のパス) .
mv root-6.18.00 root
cd root

さて作業ディレクトリ(path: ~/cern/root)は出来たのでインストールします。

それには次のようにします。

mkdir obj

cd obj
cmake -Dpython3=On -DPYTHON_EXECUTABLE=/Library/Frameworks/Python.framework/Versions/3.6/bin/python3 ../
make -j 4
make install

これで終わりです。cmakeの際にPython3の機能をオンにしたオプションをつけてあげます。

他にもオプションはたくさんありますが各自調べてみてください。

[https://root.cern.ch/building-root:embed:cite]

-DPYTHON_EXECUTABLE=/Library/Frameworks/Python.framework/Versions/3.6/bin/python3 ../

については僕の場合のPython3.6の実行ファイルののパスを書きましたが各自変更してください。

which python3など打ってみると出るかも知れないです。

make -j 4

の4もコア数に合わせて変えてもいいです。(大体1時間くらいかかります。)

これでmakeが通らなかったらrequirementsで各OSで足りてないものを調べてみてください。

もしかしたらXquartz、Python3でnumpyやmatplotlibなどを入れてないとかもあるかも知れないです。

(詳細)

[https://root.cern.ch/build-prerequisites:embed:cite]

以上でインストールは終わりです。


次にホームディレクトリ上の.bashrc, .zshrcなどに以下のコードを載せます

source ~/cern/root/obj/bin/thisroot.sh

これはrootを使う際に関するパスを色々設定してくれるシェルスクリプト


jupyter notebook上でのC/C++

それでは早速使いましょう。

ターミナルで

root --notebook

と打つことで起動できます。

jupyter notebook

と打って使いたい場合は次のコマンドを打ちましょう。(root notebookのカーネル設定をjupyter notebookに引き継がせる。)

ぼくはこっちを使っています。

cp -r $ROOTSYS/etc/notebook/kernels/root /Users/$USER/Library/Jupyter/kernels/

jupyter notebook

詳細

[https://github.com/root-project/root/tree/master/bindings/pyroot/JupyROOT:embed:cite]

すると次のような画面が出てくると思います。

newにROOT C++が出ていたら成功です。

スクリーンショット 2019-08-25 14.07.31.png

それをクリックしてあとはjupyter notebookでpythonを使うときのようにC++をインタプリタで使うことが出来ます。

Cのコマンドをインタプリタで使っている様子が以下です。スクリーンショット 2019-08-25 14.11.10.png

使い方のサマリーはこちら

[https://root.cern.ch/notebooks/HowTos/HowTo_ROOT-Notebooks.html]

以上でインタプリタを用いて使う方法の説明は終了です。