//build/ カンファレンスで、個人的にもっともショッキングだったのが、Future directions for C# and Visual Basicというセッション。Anders HejisbergというTurbo Pascalの原作者であり、Delphiの開発指揮、C#/.NET Frameworkの設計を行った人。
セッションの前半は度々登場する非同期コードやCaller info attributesなどのC#新機能を紹介していましたが、本当にしゃべりたかったのは、その後のC#5.0の先を示す話題だったようです。
以前から同氏が推進しているCompiler as a service (CaaS)プロジェクトであるRoslynがCTPを迎える模様。うたい文句と概要は知っていたものの、ツールとしてどのような機能を擁するのか、今回明らかになりました。
従来は上記のように、コンパイラはブラックボックスでしたが、Roslynでは以下のように、レキシカルアナライザとか、ビルディングブロックとなる要素をAPI化して、見通しをよくしたものという考え方です。決してWeb上にSOAPやRESTで公開するようなものではなく、サービスを細かく分けてユーザが自由に組み合わせて利用できるという精神がSaaS的なのです。
以下のようにコンパイラパイプラインをそれぞれAPI化したものです。それらを用いることで、Visual Studio IDEのような、シンタックスハイライティング、リファクタリング支援、オブジェクトブラウザなどが実現されているわけですから、実際にはVisual Studioの一部の機能を抜き出したものともいえるかもしれません。
自分自身のリファクタリングロジックを考えたり、さまざまなツールを開発することができます。
10月中旬にCTPがリリースされる予定です。実際にRoslynを利用したデモ。以下のようにRoslyn.Scriptingというネームスペースが割り当てられています。
以下のように ScriptEngineに文字列で記述したソースコードを引き渡すと、ただちにコンパイル、動的に実行ができます。
また、関数を定義することも可能。
さらに、ダイナミックに宣言された関数をローカルのデリゲートへ代入して、その関数を実行、などという変態プログラミングもできます。動的コンパイルのセッションといわゆる通常の静的コードがシームレスにつながっているようです。
ここまで来て、なんとなくピンと来たのですが、新しいウィンドウとしてC# Interactiveモードというのが用意されています。いわゆるインタープリタといえますが、スクリプト言語と違い、静的タイプ言語の強みとして、C#のコードコンプリーションがフルに使えるという恩恵も受けられます。
csファイルエディタから、コードを選択しリターンキーを押すとその部分がインタラクティブウィンドウで即時実行ができます。
関数定義もこのように直ちに反映されます。
次にファイル名を列挙するコードを入れますが、ライブラリが無いとのことでエラーになります。そこでエディタではなじみのアイコンがインタラクティブモードでも現れます。すなわち、usingのオートインサートがインタプリタでも利用できるということです。
ここまで来るとなんでもありです。WPFのGUIもインタラクティブに構築可能です。
プログラム中から、ソースコードを操作することができ、以下のようにセマンティックモデルと呼ばれるツリー上の構文木に対して、Linq Queryを投げたり、実際に操作したりできます。
最後に極め付けは、C#/VB間のソースコード自動変換。単純にコピーアンドペーストするだけで自動的に変換されます。
このコードよく見ると、ダイナミックにC#コードをコンパイルしているので、VBコンパイラ中でC#コンパイラが動いていることになります。
さらにこのコンバートプロセスをコードで制御することも非常に容易です、以下のようにConvertというメソッドを呼べばOKです。
このような機能がVisual Studioにもうすぐ統合されるとなるとワクワクしてしまいますね。
これによって、いくつかのスクリプト言語は役目を終えてしまうのではないかと、思えるほどのインパクトがあるかもしれません。























































































































写真から察するに、これは間違いなくbuild 来訪者に配られるもの(全員とは限らないが)と思われます。サイズは比べるものがないのでわかりませんが、おそらく10インチ前後じゃないかと思います。 実際に手に取るまでは何とも言えませんが、イベント用に配布用の端末であることは間違いなさそうです。
ですが、以下のように、実際に明日発表のはずの、Windows 8端末をゲットし、その標準Twitterクライアントであると噂される、Tweet@ramaを使ったTweetを行った人がいるようだ、という記事があります。




