BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース .NET Interactive: .NET Coreを使用したJupyter Notebook - プレビュー2

.NET Interactive: .NET Coreを使用したJupyter Notebook - プレビュー2

原文(投稿日:2020/03/11)へのリンク

.NET Interactiveは、Try.Netの新たな名前である。このAPIスイートとコマンドラインツールは、リッチテキスト、コード、データを組み合わせた、インタラクティブなノートブックとドキュメントの作成を可能にする。.NET Interactiveのおもなユースケースのひとつは、Jupyter Notebookへのコードの埋め込みである。

Jupyter NotebookとC#インタラクティブコードの例

Preview 2では、C#とF#とともに、PowerShellがサポート対象言語のリストに加わった。PowerShellが加わったことで、まったく新しい人々、すなわちシステムアドミニストレータに対して、ノートブックがオープンになった。PowerShellは、一般的には管理タスクの自動化に使用されるもので、Linux、Windows、macOS上で動作する。

これまでにもJaykul Jupyter-PowerShellVors jupyter-powershellなど、コミュニティ提供によるカーネルはいくつか存在したが、今回の新バージョンでは、他の.NET言語と同じノートブックで併用することが可能になっている。最初のプレビュー版は極めて基本的なものだが、PowerShellコードを実行して、任意のPowerShell Outputストリームを表示することができる。C#やF#ですでにサポートされているようなXPlotによるグラフィック機能についても、追加のための開発が現在進められている。

PowerShellがノートブックで使用できるようになったことで、システムステータスやコスト、セキュリティに関するインタラクティブなレポートの作成が可能になるはずだ。あるいは、複雑な変更手順の文書に実際に行うステップを含めて、例えば証明書更新を自動化するような使い方もできるだろう。この"Literate DevOps"は次に紹介するビデオで、Joel Bennett氏がデモしている。

https://www.youtube.com/watch?v=XssVyyLV9tg
PowerShellとJupyterを使った"Literate DevOps" — Joel Bennett

.NET言語のJupyterへの追加は、Jupyter Kernelと呼ばれるモジュール経由で行われる。.NETコードをパースし、コンパイルし、実行するために適切なカーネルに送信する処理はNotebook Serverが行う。カーネルから出力を含むメッセージが送り返されると、サーバが表示のためにそれをクライアントに返送する。表示とコード処理を分離したことにより、新しい言語を独立的に追加することが可能になった。

Notebook Serverとメッセージの流れ

Preview 2ではNteract SDKもサポートされていて、ユーザによる独自のREPL環境の作成、HydrogenプラグインによるAtom Editorの拡張、Nteract Desktopアプリケーションを備えたノートブックの作成などが可能になっている。Nteract SDKはReactコンポーネントとJavaScriptパッケージのツールキットで、独自のノートブッククライアントやREPLの開発に使用することができる。

PowershellによるNteract Desktopの例

Nteract DesktopはElectronベースのアプリケーションで、Node.jsで動作する。このプレビュー版とNteract Desktopには一部の機能に問題がある。例えば、PowerShellとC#コードで色のコーディングができず、テスト時にエラーメッセージが出力される。なお、これら以外の言語では正常に動作する。

Webベースのインタラクティブな開発環境のJupyterLabを使って、.NET Interactiveノートブックを作成することもできる。これはJupyter Notebookの最新の実装方法である。このオープンソースツールは40以上のプログラム言語、マークダウン、HTML、イメージ、ビデオ、数学式、LaTeX、独自のMIMEタイプをサポートしている。

GitHubにホストするか、あるいはNBViewerを使用することで、ノートブックをファイルとして共有可能になる。

ノートブックエディタで、コードあるいはマークアップ言語を含んだセルを追加すればよい。ノートブックが実行されるとこれらがレンダリングされ、結果が表示される。

グラフの描画には、JavaScriptのグラフ描画ライブラリであるGoogle ChartsとPlotlyを使ってグラフィックを描画するXPlotを、組み込みで使用することができる。

グラフを表示したノートブック

さらに複雑な処理に関しては、NuGetパッケージパッケージやローカルアセンブリ、あるいはC#スクリプトの形式で外部依存関係のインクルードが可能だ。例えばReactive Extensionsを使って、システムからのデータのライブストリームを可視化することができる。

外部依存関係とオブザーバブル形式のデータストリームを備えたノートブック

.NET Interactiveは.NET Core 3.0 SDK以降、Nteract 0.22、Jupyter NotebookまたはJupyterLab 1.0を使用して、Linux、Windows、macOS上で動作する。.NET Interactiveはグローバルツールとしてインストールされるので、マシン上の全ユーザ用にひとつのバージョンがインストールされることになる。

インストールの手順については、GitHubリポジトリのインストラクションにある"install .NET Interactive"の章を参照してほしい。注意すべき点として、.NET Interactiveツールのインストールにはアドミニストレータコマンドプロンプトを使用する必要がある。

Notebooks on Binderを使って、ローカルに何もインストールせずに.NET Interactiveを使用することも可能だ。この方法では、Webブラウザからノートブックを作成することができる。

.NET Notebooksで使用されているものと同じテクノロジが、Microsoftの.NET In-BrowserチュートリアルオンラインブックのFocus Modeで使用されている。

この記事に星をつける

おすすめ度
スタイル

BT