.NET Interactive の C# REPL を Jupyter で

Pocket

今回は、 .NET Interactive を利用し、ローカルマシンで C# や PowerShell Core の REPL を利用するまでをまとめる。

なお、 とりあえず動かしてみたいだけであれば、 Binder バッジのリンクをクリックして、 オンライン上の Binder にブラウザにアクセスするだけで、利用することができる。
Use Jupyter with .NET Interactive on Binder

.NET Interactive とは

.NET Interactive は、 以前 Try.NET と言う名前で提供されていた、 .NET のインタラクティブな機能を提供する API スイートだ。
JupyterLab に .NET カーネルを追加する形で、 REPL の実行やノートブックの作成する仕組みを提供することが、 主なユースケースとなっている。

REPL ではコード補完も効くので、非常に便利なものになっている。

Jupyter について

まず、 Jupyter についても軽く説明しておく。
既にご存じなら読み飛ばして欲しい。

JupyterLab とは?

JupyterLab を説明する前に、 その前身となる Jupyter Notebook や IPython Notebook を説明しておこう。

Jupyter Notebook とは、 REPL 的に実行できるコード片やその実行結果などを「ノートブック」と呼ばれる形式で記録しながら、データの分析や可視化を行うためのツールだ。
この「ノートブック」には、上述のコード片や実行結果の他にも、その実行結果を図や表にビジュアライズしたものや、メモやドキュメントなどの情報も、まとめることができる。

もともと、 Python 向けに IPython Notebook という名前で開発されていたものが、 Python 以外の言語にも対応する機能 (カーネル) を追加するにあたって、 Jupyter Notebook と改名された。

そんな Jupyter Notebook の後継が JupyterLab である。

JupyterLab は、 Jupyter Notebook の機能に加え、 REPL が実行できるターミナル画面、テキストエディタなどが加えられた、統合開発環境となっている。

そんな JupyterLab に C# などの .NET の機能を追加してしまうのが、今回の .NET Interactive だ。

Binder (mybinder.org)

Jupyter を語る上で外せないのが、 Binder (mybinder.org) だ。
これは、 GitHub 上にある Jupyter のリポジトリの情報をつかって、 自分専用の一時的な Jupyter サーバーを、無料でホストしてくれるサービスである。

つまり、 ほとんどの Jupyter の環境を、ブラウザを用意するだけで実行できる。

但し、しばらく非アクティブにしていると、セッションが切断されてしまうので、普段使いにはちょっと難がある。

そこで、ローカルマシンに JupyterLab を構築するモチベーションが出てくるわけだ。

JupyterLab と .NET Interactive をインストールする

ということでようやく、 本題の .NET Interactive のインストールの方法について。

基本的には、 Create .NET Jupyter Notebooks on your machine の手順に則って説明する。
しかし、Jupyter をインストールするためだけに Anaconda を入れるのは、少々大げさな気がするので、 Python の仮想環境に直接 JupyterLab をインストールするように、以下の手順とすると良いだろう。

  1. .NET Core SDK 3.1 LTS をインストール
  2. Python 3.x をインストール
    • とりあえず、 Python 3.6 ~ 3.8 で動くことは確認した。
  3. dotnet tool install -g Microsoft.dotnet-interactive で dotnet-interactive グローバルツールをインストール
  4. venv 環境を作成
  5. pip で jupyterlab をいれる
  6. .net jupyter カーネルを入れる
  7. JupyterLab を起動

Step 3 以降は、 Windows なら以下のような感じ。

dotnet tool install -g Microsoft.dotnet-interactive
py -3 -m venv .\venv_jupyter
cd .\venv_jupyter
.\Scripts\activate
pip install jupyterlab
dotnet interactive jupyter install
jupyter lab

Linux なら以下のような感じ。

dotnet tool install -g Microsoft.dotnet-interactive
python3 -m venv ./venv_jupyter
cd ./venv_jupyter
. ./bin/activate
pip install jupyterlab
dotnet interactive jupyter install
jupyter lab

以降、 jupyter を起動するためには、 一旦 python の仮想環境の activate を実行してから jupyter lab コマンドを呼び出す必要がある。
例えば Windows なら、 以下のようなショートカットを作成しておくと、ワンクリックで JupyterLab を立ち上げられて便利である。

  • リンク先: %COMSPEC% /V:ON /S /C ".\Scripts\activate&jupyter lab"
  • 作業フォルダー: 前述の venv_jupyter のフルパス

待っていればそのうち Visual Studio Code が対応する

とはいえ、 Python をインストールして環境整えて、使う度に JupyterLab のプロセスを起動させるのはそこそこめんどくさい。

現在、 Visual Studio Code (vscode) に .NET Interactive をネイティブ対応させる拡張機能が 開発中 だ。

2020年6月時点では、 Visual Studio Code Insider が必要となっている が、そう遠くない将来に安定版の vscode にも対応するだろう。
そうすれば、 上記のようにわざわざ JupyterLab や .NET Interactive のセットアップを行わなくても、 vscode に拡張機能を入れるだけで簡単に JupyterLab の機能がつかるようになるはずだ。

このため、 vscode の対応を待つというのも手である。

.NET Interactive の C# REPL を Jupyter で」への1件のフィードバック

  1. ピンバック: .NET Interactive で C# と PowerShell を股に掛ける | Aqua Ware つぶやきブログ

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください