C/C++の学習にCERN ROOT Jupyter notebookを使おう  -- インストールから起動まで（主にWindows) 

# 概要
C/C++を勉強したいけど、`#include <stdio.h>`などincludeを書くのは面倒だし、そもそもコンパイルするのも面倒だなと思っていませんか。勉強の期間だけでもPythonのようにコードを書いたらすぐ実行できたらという人には`CERN ROOT Jupyter notebook`がピッタリです。
CERN ROOTはC/C++のインタープリタ環境も用意しており、コンパイルせずに実行できます。主なヘッダーファイルは事前に`#include`されており、標準のライブラリを使う分には`#include`は不要です。 また、C++のnamespaceもstdなどは宣言不要です。`string`,`cout`はどは`std::`なしで使えます。

今回は環境設定(主にWindows)のみです。

1. コンパイラのインストール
    - コンパイラは直接使わなくても必須です
1. CERN ROOTのインストール
    - [QiitaのCERN ROOTインストール記事の検索](https://qiita.com/search?q=cern+root+%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)も参照してください
1. CERN ROOTに合っバージョンのPython & Jupyter+metakernelのインストール
    - Pythonでエラーになっている人はPythonのバージョンが合っていないかも
    - ROOT6.32.06で試したところ、MacはPython3.12で良かったが、WindowsはPython3.11でないとエラーが発生した 

以下はCERN ROOT Jupyter notebookを使用した例です。

![ROOT2024-11-11 131732.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/258007/ccc8845a-8ac8-ce5b-69d0-99390fee760d.png)


# Windowsへのインストール

1. Visual Studio Community版のインストール
    - インストールするだけで直接は使いません
1. CERN ROOTをインストール
1. Pythonをインストール
    - jupyter, metakernelもインストール


CERN ROOTとPythonはインストーラを使わない解凍型のものを選んでいます。これは現在のWindowsのROOTやPython環境と混在させないためです。

#### Visual Studio Community版のインストール

以下のサイトからインストーラがダウンロードできます。 ページの先頭と最後にダウンロードボタンがあります。

https://visualstudio.microsoft.com/ja/vs/community/

インストーラを起動したら以下の赤枠を選んでインストールしてください。

![visualstudio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/258007/d081cb3a-d110-fb1f-16d6-8bb22593d8e7.png)

#### CERN ROOTのインストール

以下のサイトから`Release 6.32.06 - 22 Sep 2024`をクリックして次のページの`Windows Visual Studio 2022 64-bit x64 	root_v6.32.06.win64.vc17.zip 	167M`を選んでダウンロードします。

https://root.cern/releases/

解凍してDesktopに展開したと想定します。
`cmd`を起動して`root\bin\thisroot.bat`を実行してパスなどを設定します。その後、`root`を起動して問題ないことを確認。次にPythonのバージョンを`root-config`で確認します。

```cmd
xxxx\Desktop>root\bin\thisroot.bat
xxxx\Desktop>root
   ------------------------------------------------------------------
  | Welcome to ROOT 6.32.06                        https://root.cern |
  | (c) 1995-2024, The ROOT Team; conception: R. Brun, F. Rademakers |
  | Built for win64 on Sep 22 2024, 03:50:56                         |
  | From tags/v6-32-06@v6-32-06                                      |
  | With MSVC 19.39.33521.0                                          |
  | Try '.help'/'.?', '.demo', '.license', '.credits', '.quit'/'.q'  |
   ------------------------------------------------------------------

root [0] .q

xxxx\Desktop>root-config --python-version
 3.11.7
```

#### Pytho3.11のインストール

上記の`root-config`より得た情報により`Python3.11`のバージョンを以下のサイトより`Winpython64-3.11.8.0dot.exe`をダウンロードします。サイズの大きい方の`Winpython64-3.11.8.0.exe`を選ぶと私の場合は上手くいきませんでした。

https://github.com/winpython/winpython/releases/tag/7.1.20240203final


これは自己解凍型なのでインストールはされません。解凍したフォルダーをDesktopに移したとの前提です。
フォルダー名は`WPy64-31180`となっていると思います。`WPy64-31180`を開くと`WinPython Command Prompt.exe`があります。これをクリックして起動させます。 次に`pip`を使って`jupyter`と`metakernel`をインストールします。

```cmd
xxxx\Desktop\WPy64-31180\scripts>pip install jupyter metakernel

たくさんのインストール情報が表示されます。
```


#### Jupyterの起動

まず,`cmd`を立ち上げ、thisroot.batを実行そのあとpythonのcmd.batを実行します。その後`root`を使って`jupyter`を立ち上げます。

```cmd
xxxx\Desktop>root\bin\thisroot.bat
xxxx\Desktop>WPy64-31180\scripts\cmd.bat
xxxx\Desktop>root --notebook
```
しばらくするとブラウザが立ち上がり`Jupyter notebook`が表示されます。

もし、正常に起動しなかったら`set`を使って環境変数を確認してください。
```cmd
xxxx\Desktop>set

環境変数がたくさん表示されます
```

重要なのは`Path`にPythonとrootのbinなどのパスが設定されていて、かつ`PYTHONPATH`に`root\bin`が設定されていることです。

# 終わりに

重要なのは`Python`のバージョンが合っていることです。また、LinuxやMacようには`thisroot.sh`などがあるので`source thisroot.sh`を忘れないことです。
`CERN ROOT Jupyter notebook`は上級者でも、ちょっとした命令やclassの作り方で曖昧な部分を確認するには有効だと思います。


# Appendix
直接`jupyter notebook`あるいは`jupyter lab`としたいときは次のようにします。

`root\etc\notebook\kernels\root`をフォルダーごと`WPy64-31180\python-3.11.8.amd64\share\jupyter\kernels`の下にコピーします。

あとは通常通り、`thisroot.bat`,`cmd.bat`を実行して環境を設定後に`jupyter notebook`あるいは`jupyter lab`とすると使えるようになります。