Scala.jsやってみた
Scala.jsについて
Scala.jsについて
- 2013/4、開発開始
- 国内(のJS界隈)で話題になったのは2014/2くらいから
話題になった
話題になった
- 圧縮前コード22MB
- 圧縮しても227KB(ちなみにjQuery 2.1.1は圧縮後84KB)
- 最適化に3分
重い
か?
最新版で試してみた
最新版で試してみた
- 圧縮前コード381KB
- 圧縮後コード14KB
- コンパイル(fastOptJS)時間[success] Total time: 13 s
- 最適化コンパイル(fastOptJS)時間[success] Total time: 22 s
- (MBA 11-inch, Mid 2011)
半年で94%減ってるので、あと半年後には1KB切るはず!
実行速度
実行速度
- ちゃんとしたベンチは見つからなかった。。。
- が、普通に重い処理しててもCPU食わないので大丈夫そう
Scalaとの互換性
JavaScriptとの連携(JSを呼び出す)
JavaScriptとの連携(JSから呼び出される)
JavaScriptとの連携(JSから呼び出される)
- @JSExportでJSに同じ名前で書き出せる
- 「package名を含める」、「別の名前で書き出す」、「名前の階層構造を指定する」等が可能
- @JSExportがない場合、最適化すると名前が失われる(実行はできるけど、外部のJSから呼べない)
始め方
始め方
- Tutorialをそのまま実行するだけで動く(前試した時は動かなかったけど、動くようになってた)
- 「sbt入れる」
- 「project/plugins.sbtとbuild.sbtとproject/build.properties書く」
- 「Scalaコード書いてsbt fastOptJSする」
- 「生成されたJSをhtmlに読み込む」
普通に動く
デバッグ環境
デバッグ環境
- SourceMapでScalaコードのままデバッグできる(が、そのままだとローカルファイル名になるため、手動で.mapファイルを書き換える必要があった)
- Developer toolsのコンソールからScalaの変数名のまま動的実行できる(fastOptJSで未圧縮の場合)
- sbtでコンパイル後、自動的にブラウザをリロードさせることも
行けるのでは
行けるのでは
- Scalaのみなら行けると思う
- が、JSのフレームワークとの連携を考えると難しい
- 複雑な計算部分や既存のScalaライブラリを使うとか?
- 一部のコードをサーバサイドと共有するならありかもしれない
ご清聴ありがとうございました