DuoCodeはC#をJavaScriptへ変換するコンパイラで、開発者がHTML5アプリケーションをC#と.NET frameworkを使い、Visual Studioで開発できるようにする。InfoQはDuoCodeの開発者にインタビューを行った。
DuoCodeは多くのC#の特徴をサポートする。強い型付け、クラスベースの継承、リフレクション、ジェネリクス、ラムダ関数、そしてLinqだ。また、DuoCodeが下記も提供するつもりだ。
-
オリジナルのC#のコードをデバックできるようにする: DuoCodeはソースマッピングを行い、ブラウザまたはDuoCodeでオリジナルのC#のコードをデバッグできるようにする。
-
強く型付けされたDOMとWebGL: これは次のサンプルコードを参照。
using static DuoCode.Dom string userAgent = navigator.userAgent HTMLScriptElement script = (HTMLScriptElement)document.getElementById(scriptId); ... WebGLRenderingContext gl = canvas.getContext("webgl"); gl.bindBuffer(GL.ARRAY_BUFFER, bCubeTextureCoords); gl.vertexAttribPointer(aTextureCoord, 2, GL.FLOAT, false, 0, 0); gl.activeTexture(GL.TEXTURE0); gl.bindTexture(GL.TEXTURE_2D, texture); gl.uniform1(uSampler, 0);
-
コンパイルスピード: DuoCodeによれば、"ほとんどの場合、標準的なC#のコンパイルよりも速い"。
-
継続的統合のサポート: DuoCodeによれば、MSBuildと完全に統合され、MSBuildのタスクとして、あるいはコマンドラインのツールとして実行できる。
InfoQは開発者のStav Harel氏に話を聞いた。
C#をJavaScriptへ変換することが利点になるようなケースをいくつか教えてください。どのような顧客を想定していますか。
C#をJavaScriptへコンパイルするのは、JavaScript-HTML5ウェブアプリケーションの開発で大きな利点があります。C#、Visual Studio、ソースマッピングの便利さを享受しながら、開発ができるからです。
例えば、WebGLを使ったゲーム開発、NodeJSを使ったサーバサイド開発、Cordovaを使ったモバイルアプリケーションの開発などで威力を発揮するでしょう。
さらに、C#の資産が既にある企業にとっては完璧なソリューションです。C#の資産を再利用してJavaScriptのプロジェクトを効率的に押し進めることができるからです。
Roslynの使い方について少し詳しく教えてください。とのような利点があるのでしょうか。
DuoCodeはRoslynコンパイラを使ってC#を"理解"します。Roslynはコードの解析、構文木(AST)の生成、文脈の分析を行います。その後、DuoCodeが引き継ぎ、JavaScriptのコード(とソースマッピング)を生成します。C#の既存の特徴は維持します。
Roslynへの信頼はとても重要です。これによって、DuoCodeはC# 6.0やVisual Studio 2015といった最新の技術を維持できます。
C#をJavaScriptへ変換する仕組みはすでにいくつかあります。DuoCodeはどの点でユニークなのですか。
C#をJavaScriptへ変換するコンパイラは数年前から登場しています。しかし、それらには明確な欠点があります。
C#のサポートが部分的なのです。既存のJSライブラリとの互換性も非効率です。可読性のないコードを生成します。そして、C#でデバッグできません。
既存のソリューションはすべて古いコンパイラに依存しており、Visual Studio 2015の新しい機能には対応していません。
DuoCodeは現在、非公開ベータ版プログラムを実施している。参加するには、DuoCodeのウェブサイトからリクエストする必要がある。