疑問:IPythonとJupyterにはどういう関係があるのか?
JupyterのドキュメントやStackOverflowの質問などを見ているとよくIPythonが出てきます。
IPythonとJupyterの関係ってどういう関係なのか?と気になったので少し調べてみました。
そしてせっかくなので、最近見つけたオンラインホワイトボード https://miro.com/ を使って図解してみます。
注意
正直、細かいところは結構間違っていると思います。なので、IPythonとJupyterの関係性ってこういうイメージなのね、ってくらいの参考にしてください。
「それにしてもこれはあきらかに間違ってるでしょう・・・」っていうのがありましたら教えていただけると幸いです。
では、IPythonとJupyterのつながりを見ていきます。
1. もともとはIPythonしかなかった
はじめはIPythonしかありませんでした。
よく僕らが思い浮かべる↓のようなセルとかUIのnotebook機能はすべてIPythonが提供していました。これがIPython3.Xまで続きます。
無理やり図解している感はありますが図解するとこんな感じです。
また余談ですが、ipython CLI(ipythonコマンド)もIPythonが提供していました。
これが変わるのがIPython 4からです。
2. notebook部分がIPythonから分かれる
IPython 4 からはCLIを提供するだけとなります。
そしてnotebook部分を担うJupyterができます。
「え、じゃぁ、IPythonとJupyterって今はなんの関係もないの?」
かというとそうではなく、Pythonを処理する部分は共通モジュールがあります。ipykernelと言われています。
これを確認できるのが、例えば、pip install ipython
とかpip install jupyter
とかしたあとに、pip show ipython
やpip show jupyter
で見てみると、どちらもipykernelに依存していることがわかります。興味があれば実行してみてください。
まとめ
簡単に見てきましたがここまでをまとめると、
- もともとはIPythonがnotebook機能を提供していた
- notebook部分を切り離してできたのがJupyter
- 処理部分はipykernelというモジュールがあり、IPythonもJupyterも共通で使っている
となります。