はじめに

Google Colaboratory はローカルインストールが不要で、無料ですぐに試せる Python の実行環境です。
.NET には .NET Interactive という VSCode 用の拡張機能があるのですが、今回はこの子を Google Colaboratory にインストールして .NET 6.0 を実行してみます。

ディストリビューションとインストール済みのカーネルの確認

2022/04/18現在ではUbuntu 18.04.5 LTSで実行されているようです。

! lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 18.04.5 LTS
Release:	18.04
Codename:	bionic

カーネルは ir と python3の 2 つがインストールされていますね。

!jupyter-kernelspec list
Available kernels:
  ir         /usr/local/share/jupyter/kernels/ir
  python3    /usr/local/share/jupyter/kernels/python3

.NET 6.0 と .NET Intaractive のインストール

Ubuntu に .NET SDK または .NET ランタイムをインストールする のUbuntu 18.04を確認しながら、.NET 6.0 をインストールします。

%%bash
wget https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get update \
  && sudo apt-get install -y apt-transport-https \
  && sudo apt-get update \
  && sudo apt-get install -y dotnet-sdk-6.0

.NET Intaractiveの最新版をインストールし、設定ファイルを変更して標準のカーネルを C# に変更します。

%%bash

dotnet tool install -g --add-source "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json" Microsoft.dotnet-interactive --version 1.0.317502 \
  && export PATH=$PATH:$HOME/.dotnet/tools \
  && dotnet interactive jupyter install
  
cat <<-EOF > /root/.local/share/jupyter/kernels/.net-csharp/kernel.json
{
	"argv": [
		"$HOME/.dotnet/tools/dotnet-interactive",
		"jupyter",
		"--default-kernel",
		"csharp",
		"--http-port-range",
		"1000-3000",
		"{connection_file}"
	],
	"display_name": ".NET",
	"language": "C#",
	"metadata": {
		"vscode": {
			"extension_id": "ms-dotnettools.dotnet-interactive-vscode",
			"kernel_id": "dotnet-interactive"
		}
	}
}
EOF

改めてカーネルの一覧を表示すると、C#やF#、Powershellの3つがインストールされたことが確認できます。

!jupyter-kernelspec list
Available kernels:
  .net-csharp        /root/.local/share/jupyter/kernels/.net-csharp
  .net-fsharp        /root/.local/share/jupyter/kernels/.net-fsharp
  .net-powershell    /root/.local/share/jupyter/kernels/.net-powershell
  ir                 /usr/local/share/jupyter/kernels/ir
  python3            /usr/local/share/jupyter/kernels/python3

カーネルの適用

ノートブック上では新しいカーネルを認識させることができないので、一度 Google Drive などに ipynb ファイルを保存し、テキストエディターなどでじかに開き kernelspec を次のように変更します。

{
    "nbformat": 4,
    "nbformat_minor": 0,
    "metadata": {
        "colab": {
            "name": "Untitled4.ipynb",
            "provenance": [],
            "toc_visible": true,
            "authorship_tag": "ABX9TyOaLLjzVNL1u6jO8CZrRrZV"
        },
        "kernelspec": {
-            "name": "python3",
-            "display_name": "Python 3"
+            "name": ".net-csharp",
+            "display_name": "C#"
        },
        "language_info": {
            "name": "python"
        }
    },
    //  //

C# のコードを実行してみる

Colab を上記のファイルから開きなおすと、C# 10 のコードを Google Colab 上で実行できるようになります。

// C# 10(.NET6.0) から利用可能な Record 構造体
record struct Value(int X, int Y);
new Value(3, 4).Display();

System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription.Display();
X	Y
3
4
.NET 6.0.4

おわりに

新しいインスタンスを立ち上げるたびに毎回セットアップからやるのはめんどくさいですが、.NET をインストールすることなくお手軽(?)に試せるのは良いかもしれません。