読者です 読者をやめる 読者になる 読者になる

Xamarin Sketchesの起源

Evolve 2014にスタッフとして行って帰って来たわけですが、今回はEvolve自体についての話は省略。今回はEvolveで発表されたSketchesについて、他所では語られなそうな話をちょっと書きます。

Evolve 2014で発表されたネタで一番面白かったのは、Sketchesだったと思います。Sketchesがやっていることはinteractive shell(いわゆるREPL)と、そのimmediate displayでしょうか*1

MonoのC#コンパイラがREPLをサポートしていることは、ここでは2008年の始まりの頃からずっと書いてきましたが、このsketchesもやっていることは同じです。ビジュアライザについては、csharpよりgsharpの方が分かりやすいでしょうか。

http://www.mono-project.com/archived/images/7/75/GSharpPlot.png

見覚えのある人もいるかもしれません。何も新しくないですよね? これ2008年ですよ。一部にはRoslynを使っていると思い込んでいる言及も見られましたが、見当違いです。

ただし、今回はiOSAndroidもターゲットになっています。コードの実行ホストが、コーディング環境とは異なる、リモートC#シェルとでも言うべき動作は、新しいものです。たぶん。

もうひとつの機能、immediate displayについてですが、これはちょっと前にWWDC 2014で発表されたXcodeのplaygroundに似ていますね。これも実は2年前に既に存在していたものです。次のビデオを見て下さい。全体的に興味深いアイディアだと思いますが、16:47くらいから見てもいいです。


Bret Victor - Inventing on Principle on Vimeo

しゃべっているのはAppleの技術者ですから、同じような外観のエディタがXcodeに載ったのも不思議ではないですね。ところでこれ、2012年にXamarinのエンジニアも作っています。

Making Instant C# Viable – Part 1 » Code Monkey vs. The World

これは古いRoslynベースで作っていますが(このエンジニアがWindowsしか使わなかったので)、Mono.CSharpでも当然出来たことですし(RoslynのREPLは今でも発展途上だそうで)、実際Sketchesがやっていることと基本的には同じです。

そんなわけで、Sketchesは面白いですが、歴史を知ると、コレを可能にした技術基盤にも興味が湧いてくるのではないでしょうか。

*1:こういう表現を使っている文献はみかけませんでしたが、VSデバッガーが確かimmediateとかいう言葉を使っていたと思うので、そこから援用します