Scala.jsはScala製、Scala Licenseのオープンソース・ソフトウェアです。

JavaScriptはスクリプト言語であり、コンパイル系言語を使っているプログラマーにとっては使い勝手が悪いと感じてしまうようです。もしあなたがScalaの使い手であれば、ScalaでWebフロントエンドを開発できるScala.jsを使ってみましょう。

[![](http://images.moongift.jp/2013/06/Screenshot 2013-06-16 20.44.55_thumb.1371388565.png)](http://images.moongift.jp/2013/06/Screenshot 2013-06-16 20.44.55.1371388565.png)
サンプルです。パッケージやオブジェクトが使えます。普通にScalaが記述できます。コンパイルを実行してJavaScriptファイルを生成します。

[![](http://images.moongift.jp/2013/06/Screenshot 2013-06-16 20.50.12_thumb.1371388572.png)](http://images.moongift.jp/2013/06/Screenshot 2013-06-16 20.50.12.1371388572.png)
ソースマップに対応しており、コンソールからScalaのソースに飛ぶことができます。

[![](http://images.moongift.jp/2013/06/Screenshot 2013-06-16 20.50.26_thumb.1371388578.png)](http://images.moongift.jp/2013/06/Screenshot 2013-06-16 20.50.26.1371388578.png)
WebとあってDOMの操作ももちろんできます。

[![](http://images.moongift.jp/2013/06/Screenshot 2013-06-16 20.50.55_thumb.1371388585.png)](http://images.moongift.jp/2013/06/Screenshot 2013-06-16 20.50.55.1371388585.png)
入力を受け取って処理も行えます。

[![](http://images.moongift.jp/2013/06/Screenshot 2013-06-16 20.51.21_thumb.1371388594.png)](http://images.moongift.jp/2013/06/Screenshot 2013-06-16 20.51.21.1371388594.png)
引数として入力内容を受け取って処理を行うこともできます。

[![](http://images.moongift.jp/2013/06/Screenshot 2013-06-16 20.51.32_thumb.1371388600.png)](http://images.moongift.jp/2013/06/Screenshot 2013-06-16 20.51.32.1371388600.png)
jQueryとの連携もできます。

[![](http://images.moongift.jp/2013/06/Screenshot 2013-06-16 20.51.46_thumb.1371388605.png)](http://images.moongift.jp/2013/06/Screenshot 2013-06-16 20.51.46.1371388605.png)
jQueryのイベントを呼び出した処理も行えます。かなり汎用的に連携できるようです。

[![](http://images.moongift.jp/2013/06/Screenshot 2013-06-16 20.53.27_thumb.1371388610.png)](http://images.moongift.jp/2013/06/Screenshot 2013-06-16 20.53.27.1371388610.png)
コンパイルエラーを確認できます。この時のスタックトレースの中でもソースマップを使って該当行にジャンプできます。

Scala.jsを使うとWebフロントエンドの開発においてもScalaを使えるようになります。そしてコンパイルしてJavaScriptを生成します。jQueryをはじめとするJavaScriptライブラリと連携できますので使い勝手は良さそうです。なおサイズはコードの難読化、圧縮を行って16MB程度とのことです。

MOONGIFTはこう見る

この手のライブラリは数多くなってきました。CoffeeScript、JSX、TypeScript、ClearScript、Dartなどは独自の言語として開発され、JavaScriptを生成します。それに対してPHP、Ruby、Pythonなどの実行エンジンをJavaScriptで開発またはEmscriptenを使って各プログラミングコードを実行できるようにしています。

Scala.jsの場合はScalaで書いてコンパイラを使ってJavaScriptに変換します。サーバサイドのコードを書くのに比べると若干勝手が違うと思いますが、それでも慣れた言語で書けるというのはメリットがあるように感じます。考え方としてはGWTに近いものと言えるのではないでしょうか。

Scala.js - Write in Scala for the browser

lampepfl/scala-js · GitHub