ColabでC#プログラムを実行させる
次の作業のための小ネタ。
久々にColabにアクセスすると、AIを使ってコード生成が出来るようになっていました。AIの試運転も兼ねて作業を試しました。
Colab上で.NETをインストールする
ここが最大のポイント。ColabはPythonしか使えないと思っていましたが、OSのコマンドを実行させて.NET環境をインストールできます。できるんだ…
執筆時点(2024-01-13)でも動きました。以下の点に注意。
・要ルート権限。Colabの場合はすでにルート。一般ユーザから実行する場合はsudoをつける
・.NET SDKのバージョンを、実行したいC#ソースのものに合わせる。執筆時点では7.0まで利用可能
!apt update
!apt install dotnet-sdk-7.0
通常のようにC#ソースを書きながら実行したい場合は、.NET interactiveもインストールします。今回はファイルがコンパイルできれば良いので省略。
参考までに、AIが生成したコードです。ほぼ完成形。あと乱数があるのか、結果がちょくちょく変わりました。
# prompt: install dotnet-sdk
!apt-get update
!apt-get install dotnet-sdk-6.0
# prompt: install dotnet-sdk
!sudo apt update
!sudo apt install dotnet-sdk-6.0
C#ソースコードをファイルに保存する
ここからはC#ソースを実行するためのテストです。
まずテスト用のファイルを作ります。
上の記事はC言語での内容ですが、C#でも同様にできました。
# prompt: create C# source code "hello world"
%%file hello.cs
using System;
namespace HelloWorld {
class Program {
static void Main(string[] args) {
Console.WriteLine("Hello world!");
}
}
}
雑な英語のプロンプトでもコード生成してくれました。助かる。
なおファイルはColab上に保存されるので、Colabの終了とともにファイルは消去されます。必要ならダウンロードしてください。
C#ソースコードをコンパイル・実行
ファイル1個の場合はrunだけでよかったです。
!dotnet run hello.cs
ちなみに、AIでコード生成すると dotnet build を出してきました。プロジェクトファイルを作っていないので、このままでは正しく動きません。
## AI生成のコード。そのまま実行しても正しく動かない
# prompt: compile and run hello.cs
!dotnet build hello.cs
!dotnet run hello.cs
GitHubからC#ソースをcloneして実行
これがやりたかったことです。C#ソースコードが実行できることを確かめたので、ピュアC#であれば既存のソースもColab上で実行できそうです。
ソースをprivateリポジトリに置いている場合、認証を通す作業が必要です。認証はGitHubのPersonal access tokenを使いました。SSHよりも手軽です。
## リポジトリをクローン
# コード実行前に、GitHubの Personal access tokenを取得。一度しか表示されないので要コピー。
# 有効期限をつけること。期限が切れていたら再作成
# トークンを指定してclone
%env TOKEN=****************************************
!git clone https://$$TOKEN@github.com/yourAccount/yourRepo.git
トークン、アカウントyourAccount、リポジトリyourRepoは必要なものに書き換えてください。
あとはクローンしたディレクトリに移動し、プロジェクトを実行します。
## プロジェクトをビルド・実行
%cd /content/yourRepo
!dotnet run yourProject
これで、UnityのソースのうちピュアC#の部分、具体的にはゲームルールの部分はColabでも実行できそうです。
記事を書いていて知ったのですが、Colabが対応している .NET Core 7.0 は今年2024年5月14日にサポート終了、LTSの.NET Core 6.0 も2024年11月12日にサポート終了とのことです。どちらも終了間近…。
この記事が気に入ったらサポートをしてみませんか?