BT

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

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース ScriptCS: C#をスクリプト言語にする

ScriptCS: C#をスクリプト言語にする

原文(投稿日:2013/04/25)へのリンク

ScriptCSでは、開発者がシンプルなテキストエディタでC#アプリケーションを書くことができるようになる。Roslynでコンパイルされ、NuGetでパッケージ管理される。

Windows Azure SDKチームのプロジェクトマネージャGlenn Block氏は、C#をスクリプト言語にするScriptCSサイドプロジェクトを始めた。開発者はシンプルなテキストエディタを使ってC#の知識を使うことができ、Microsoftのcompiler-as-a-serviceであるRoslynでコンパイルを完了できる。ScriptCSはNuGetを使用して依存するパッケージのアップロードされたバイナリを探す。Roslynのr:シンタックスは、GACや他のDLL参照を追加するために使用される。

hello.csxに以下のC#コードが含まれていたとする

Console.WriteLine("Hello World!");

そして、コマンドscriptcs hello.csxの結果として、コンソールにHello World!という文字列が表示される。

名前空間もクラス定義も必要なく、プロジェクトも.obj.exeファイルの生成もされない。RoslynはコンパイルしてScriptCSの実行結果を返す。

他のより手の込んだ例では、Web APIホストを生成している:

using System;
using System.IO;
using System.Web.Http;
using System.Web.Http.SelfHost;

var address = "http://localhost:8080";
var conf = new HttpSelfHostConfiguration(new Uri(address));
conf.Routes.MapHttpRoute(name: "DefaultApi",
   routeTemplate: "api/{controller}/{id}",
   defaults: new { id = RouteParameter.Optional }
);

var server = new HttpSelfHostServer(conf);
server.OpenAsync().Wait();
Console.WriteLine("Listening...");
Console.ReadKey();

ScriptCSはプラグインの仕組みを持ち、それはscript packs と呼ばれる。Block氏の説明によると:

script packは名前空間のインポート、参照だけでなく、Require APIを通じてスクリプトで利用できるオブジェクトを提供します。

script packの主な目的は、編集したスクリプトでフレームワークを容易に使用することができるようにすることです。

script packsはNuGetパッケージを通じてインストールすることができ、それらは簡単に見つけて利用できます。

MonoでScriptCSが実行できるように作業が進行中である。さらにRoslynでのデバッグ機能が検討されている。Sublime Textは、シンプルなエディタでシンタックスのハイライトを有効にするScriptCS用のプラグインを作成している。またVisual Studioで.csxファイルのシンタックスハイライトを生成するためにRoslynを使用することができる。

Block氏は、自身のNode.jsの経験をもとにC#スクリプトの優位性をリストにした:

  • プロジェクトが不要でスクリプトのみ- node.jsの好きなことのひとつは、プロジェクトが不要なことである。フォルダにjsファイルを置くだけで始めることができる
  • IDEが必要なく、テキストエディタだけでよい
  • アセンブリではなくパッケージ– nodeでは、なにかが欲しいときはnpmを使ってパッケージをダウンロードすることができる。これは超シンプルである。あなたのアプリとローカルのnode_modulesフォルダだけで実行できる。
  • コンパイル不要– これが一番重要だ。node.exeと私のアプリだけで実行できる。実行ファイルを作成する必要がなく、ただ実行するだけである。

すべてはRoslynとNuGetで可能である。ScriptCSはまだアセンブリを扱うが、“私はそれを個別に管理するのではなく、パッケージのインストールだけにしたい。”

ScriptCSはApache 2ライセンスで提供されており、現在Microsoftは支援していない。

この記事に星をつける

おすすめ度
スタイル

BT