窓を作っては壊していた人のブログ

この謎のブログタイトルの由来を知るものはもういないだろう

dotnet-tryとJupyter Notebookでお手軽 C# スクリプティング

プログラムにするまでもないけど、ちょっとこんな感じのコードどうかなを試す上で便利なJupyter Notebook。 私は大学在籍中に研究に使用するPythonのコードをJupyterで書いて、グラフ化して共有などを行っていました。

そんな便利なJupyter Notebookですが、Kernelを追加することで他の言語にも対応します。 今回取り上げるC# Kernel、実は今までにも他のものがあったのですが、期待できそうなものが出てきたので紹介します。

github.com

++C++; さんでも取り上げたことのある、覚えている人はあーそんなのも…という、あれです。

ピックアップRoslyn 5/19: dotnet-try, .NET Core 3.0 パフォーマンス、null 許容参照型の仕様改善 | ++C++; // 未確認飛行 C ブログ

他のリポジトリやコードを眺めていたら動いた、みたいな感じで現時点完全にUn-documentedな機能ではあるので紹介するのもどうかなとは思いましたが、色々触ってフィードバックする人が増えたらと思ったので使い方を載せていきます。

Pre required

  • .NET Core SDK 3.0.100
  • Jupyterが動く環境

インストール方法

  1. https://github.com/dotnet/try#installing-preview-builds-from-master の説明どおりにpreviewバージョンをインストール
  2. dotnet try jupyter install でJupyter Kernelファイルをインストールする

Macだったら ${HOME}/Library/Jupyter/kernels/.net-{csharp,fsharp} ディレクトリが掘られます

インストールも使う準備もこれで完了です。簡単ですね。

使ってみよう

Jupyter Notebookを開いてKernelを選択すると使い始めることが出来ます。 嬉しいことにNuget Packageも使うことが出来ます。

使用する場合は

#r "パッケージ名"

みたいな感じで使用するパッケージ名を指定し、あとはusingでネームスペースを指定します。

サンプルプロジェクトが

try/Samples at master · dotnet/try · GitHub

で公開されているので、気になった方は見てみてください。

今後アツそうなC#機械学習

一番自分が おっ ってなった部分はここらへんでした。 というのも最近自分の中でもホットなML.NETのIssueを眺めていたら

Graphs/Plots of Evaluation Metrics · Issue #4206 · dotnet/machinelearning · GitHub

Question: Roadmap for JupyterNotebook + ML.NET · Issue #4208 · dotnet/machinelearning · GitHub

Jupyter + ML.NET | DataFrame | Create a ToOutputFormat() function to output HTML table · Issue #4249 · dotnet/machinelearning · GitHub

こんな感じでJupyter Notebookで使えそうな雰囲気が見えています。 実際

try/HousingML.ipynb at master · dotnet/try · GitHub

このようなサンプルも公開されています。

今後の選択肢としてPythonを使って機械学習だけでなく、C#機械学習、みたいな未来も出てくるのかもしれないですね。