Top Banner
Scala.jsのすすめ (だいたい)新卒エンジニア交流会#4 @ara_ta3
32

Dark vol4 for_slideshare

Apr 14, 2017

Download

Technology

ara_ta3
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Dark vol4 for_slideshare

Scala.jsのすすめ(だいたい)新卒エンジニア交流会#4

@ara_ta3

Page 2: Dark vol4 for_slideshare

わたし• 新卒2年目(14年卒)

• あどてく系のえんじにゃー

• Twitter : @ara_ta3

• このイベントの運営

• FF7リメイク(女装シーン)が楽しみ

• がっこうぐらし良いよね。

Page 3: Dark vol4 for_slideshare

S…Scala.js?

Page 4: Dark vol4 for_slideshare

Scala.jsとは?

• altJs(Alternative JavaScript)の一種

• 雑に言うと型を持ったJavaScript

• コンパイルするとJavaScriptになる

• 例)TypeScript, CoffeeScript …

Page 5: Dark vol4 for_slideshare

Scalaとは?(雑に)

• JVM上で動く言語の一つ。

• 型がある。

• コンパイル速度の話はしない。

• リスト処理凄く強いよ。

Page 6: Dark vol4 for_slideshare

Scala.js3分クッキング

• チュートリアルやってみよう

• http://www.scala-js.org/doc/tutorial.html

Page 7: Dark vol4 for_slideshare

Scala.js3分クッキング

• ここにScalaのコードがあるじゃろ

• ( ^ ω ^ )

• ⊃Scala⊂

Page 8: Dark vol4 for_slideshare

Scala.js3分クッキング

• これを `sbt fastOptJS` して

• ( ^ ω ^ )

• ≡⊃⊂≡

Page 9: Dark vol4 for_slideshare

Scala.js3分クッキング

• こうじゃ

• ( ^ ω ^ )

• ⊃ scala-js-tutorial-fastopt.js ⊂

Page 10: Dark vol4 for_slideshare

ちゃんと動くよ

Page 11: Dark vol4 for_slideshare

Scala.js使ってみようと思った?

Page 12: Dark vol4 for_slideshare

え、本当に使えるの?だって?

Page 13: Dark vol4 for_slideshare

やりましょう with Vue.js

• Vue.jsのTODOアプリ例がすごく良く出来てるのでこれを利用します。

• http://jp.vuejs.org/examples/todomvc.html

Page 14: Dark vol4 for_slideshare

Vue.jsとは

http://jp.vuejs.org/ より

Page 15: Dark vol4 for_slideshare

やりましょう with Vue.js

• Vue.jsのTODOアプリ例がすごく良く出来てるのでこれを利用します。

• http://jp.vuejs.org/examples/todomvc.html

Page 16: Dark vol4 for_slideshare
Page 17: Dark vol4 for_slideshare

準備とか

• 昔記事書いたので参考に・・・

• http://arata.hatenadiary.com/entry/2015/08/07/215021

Page 18: Dark vol4 for_slideshare

やってみたよ• レポジトリ

• https://github.com/ara-ta3/scalajs-vuejs-todo-app

• Scala.jsで書いたTodoアプリ(一部機能削除)

• http://aratanaka.pw/scalajs-vue/

• jsファイル

• http://aratanaka.pw/scalajs-vue/scala-js-vue-js-todo-app-fastopt.js

Page 19: Dark vol4 for_slideshare

まずは差分を見てみよう

Page 20: Dark vol4 for_slideshare

JavaScript vs Scala.js• TodoアプリをJavaScriptで普通に書いた時

• https://github.com/yyx990803/vue/blob/dev/examples/todomvc/js/app.js

• 126行

• 2.4 KB

Page 21: Dark vol4 for_slideshare

JavaScript vs Scala.js• TodoアプリをScala.jsで普通に書いた時

• https://github.com/ara-ta3/scalajs-vuejs-todo-app/blob/master/src/main/scala/dark/todo/App.scala

• ↑をjsにコンパイルしたファイル

• 4117行

• 133 KB

Page 22: Dark vol4 for_slideshare

JavaScript vs Scala.js

• 126行 vs 4117行 32倍

• 2.4KB vs133 KB 55倍

Page 23: Dark vol4 for_slideshare

JavaScript vs Scala.js

• 126行 vs 4117行 32倍

• 2.4KB vs133 KB 55倍

Page 24: Dark vol4 for_slideshare

世の中良いことばかりじゃない

Page 26: Dark vol4 for_slideshare

エラーがわからん

Page 27: Dark vol4 for_slideshare

debug入れれば良いんでしょ

Page 28: Dark vol4 for_slideshare

出ない\(^o^)/

Page 29: Dark vol4 for_slideshare

逃げの一手

Page 30: Dark vol4 for_slideshare

StackTrace多い

Page 31: Dark vol4 for_slideshare

感想• Dynamicばかりで正直Scala生かしきれてない

• ※Dynamic : 動的なメソッド呼び出しができるScalaのtrait

• 自分の実装の問題?

• Scalaのコードがjsにコンパイルされたらどう動くかをとても意識しないといけない

• jsの世界と切り分けたいんだけど、Vue.jsがそもそもDomとのデータバインディングを担うライブラリだからテーマが悪かった感すごい。

Page 32: Dark vol4 for_slideshare

まとめ

• ScalaはいいよScala!あとScalaz!

• 型めっちゃ強くていいよね

• Scala.jsでライブラリ触るのすごく大変だよ!

• Scala.jsのすすめなのにすすめてない?知らない。