BT

Scala.jsを使って、ScalaをJavaScriptにコンパイルする

| 作者: Zef Hemel フォローする 0 人のフォロワー , 翻訳者 笹井 崇司 フォローする 0 人のフォロワー 投稿日 2013年6月23日. 推定読書時間: 2 分 |

原文(投稿日:2013/06/20)へのリンク

先週のScala Dayにおいて、Sébastien Doeraene氏がScalaからJavaScriptへのコンパイラ、Scala.jsについてプレゼンした。これはだ。このコンパイラはScala言語をフルサポートし、これを使うことで、ユーザはWebアプリケーションのフロントエンドからバックエンドまでScalaで構築することができ、サーバとクライアントでコードを再利用可能になる。

Scala.js用に書かれたScalaコードは、動的型付けもしくは静的型付けで、既存のJavaScriptコードとやりとりすることができる。前者の方が柔軟性があり、グローバル(window)オブジェクトに対するアクセスが提供され、任意のプロパティへのアクセス、メソッドの呼び出しが可能になる。だが、これはScalaの静的型付けという特徴を利用していない。後者では、JavaScriptライブラリの型シグニチャを提供する。たとえば、jQueryの場合は次のようになる。

 

これらの型はコンパイラによる型チェックの実行とIDEにおけるコード補完に使われる。既存ライブラリの型シグニチャはまだ手動で書く必要があるが、Scala.jsの作者によると、ライブラリのシグニチャを自動生成するのにTypeScriptが持っているシグニチャが使えないか、調べているところだ。Scala.jsにあるもうひとつの問題は、Scala標準ライブラリのサイズだ。Google Closureコンパイラで最小化しても、JSで16MBもある。サイズ削減は今後の課題だ。

以下はScala.jsからjQueryを使う例だ。この例では、on-clickハンドラをidが"button"のボタンにアタッチし、クリックされるとidが"pane"のdivにパラグラフを追記する。

jQuery("#button").click { () =>
  val paragraph = jQuery("<p>").html("Hello World!")
  jQuery("div#pane").append(paragraph)
}

Scalaで生成したコードをJavaScriptから呼び出すこともできる。コンパイラはコンパイル済みコードのためのソースマップを生成する。これによって、スタックトレースは生成されたJavaScriptではなくオリジナルのScalaコードの場所を参照する。

Scala.jsコンパイラはgithubで公開されておりScalaライセンスのもと配布されている。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT