BT

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

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース C#をJavaScriptへ変換するDuoCode

C#をJavaScriptへ変換するDuoCode

原文(投稿日:2015/02/03)へのリンク

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のウェブサイトからリクエストする必要がある。

この記事に星をつける

おすすめ度
スタイル

BT