Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Scala.js(狩られ)
kyon_mm * kaori_t_spica
結婚祝いLT大会
in Tokyo
@kamekoopa
お前 is 誰
けーえむ / @kamekoopa
ただのプログラマ
Java, PHP, Scala, Python
Play2とかが好き
ボルダリングが上達しない
狩られ組
今日が初LT
マサカリストって何ですか!!
こわい(真顔)
殺さないで下さいお願いします
後生ですから
何喋るの?
Scala.jsでScalaとjsの世界がど
う橋渡しされているか的な話
※本当はScala.js触ってみたよ的なも
のを喋るつもりだったけどきょんくん
にハードルあげられた
ちなみにScala初心者だしjs全く
分からないマンです
Scala.js?
ScalaをJavascriptに変換する
alt-jsの一種
tototoshiさんのスライドが詳しい
http://tototoshi.github.io/slides/
sendagaya-js-scala-js/#1
Scalaとjsを繋ぐもの
Facade-Type
jsのものをScalaで扱う
Dynamic Type
Scalaで動的型を扱う仕組み
Facade-Type
Scalaで宣言されたjsの型
jsのものをScalaで扱う仕組み
jsに存在するもののI/Fに合わせて
Scala側で宣言する
宣言だけ
jsの値やAPIに型注釈を与える感じ
本体はjsのruntimeにある前提
Facade-Type
Facade-Type
Facade-Type
基本の型以外は自分で宣言する
js.Anyを継承したtraitとして
さっきの図のjQueryオブジェクトとか
独自libに定義されているものとか
Facade-Type
jsの世界のものが静的型が付与
されているように使える
IDEの補完が使える
コンパイラの力を使える
プリミティブだけじゃなく任意のjs型
についても宣言できる
しかし…。
jsのAPIには適切な型を与えられ
ないものもある。
引数の型が定まらない
戻り値の型も定まらない
DynamicType
静的言語であるScalaでjsの動的な
一面を扱うための仕組み
js.Any
js.Dynamic
DynamicType
js.Any
全てのFacade-Typeの親
どんなFacade-Typeも代入できる
引数の型が定まらない関数の引数の型
として使える
DynamicType
js.Any
逆にFacade-Type以外は受け取れない
Facade-Typeしか受け取れない
= jsで扱えない値は受け取れない
user-definedなクラスはどうにかしてFacade-
Typeに変換しないと...
DynamicType
DynamicType
DynamicType
js.Dynamic
Facade-Typeのひとつ
動的型を表すためのもので、どんな操
作も記述出来る
ScalaのDynamicトレイトを継承している
どういう操作を備えたオブジェクトが
返ってくるか分からないAPI...
DynamicType
js.Dynamic
TypeScriptのanyに近いが全ての
Facade-Typeの親と言うわけではない
全てのFacade-Typeを「何でも出来る型」とし
て扱うことは出来ない
「JavaScriptはType...
DynamicType
DynamicType
������������������������
�����������
��������������������������
���������������
��������������������
���������...
まとめ
静的に扱えるものは静的に、扱
えないものでもなるだけ安全
に、自然に。
これらの仕組みにより思ったよ
りjs意識しなくてもいいけど、
とは言えそれなりに癖はある感
じ(主観)
おわり
参考
Scala.js: Type-Directed
Interoperability with Dynamically
Typed Languages
http://infoscience.epfl.ch/record/190834/...
言い忘れてた
きょんくん、かおりさん
ご結婚おめでとうございます!!
Upcoming SlideShare
Loading in …5
×

Scala.js

2,189 views

Published on

結婚記念LT用

  • Be the first to comment

Scala.js

  1. 1. Scala.js(狩られ) kyon_mm * kaori_t_spica 結婚祝いLT大会 in Tokyo @kamekoopa
  2. 2. お前 is 誰 けーえむ / @kamekoopa ただのプログラマ Java, PHP, Scala, Python Play2とかが好き ボルダリングが上達しない 狩られ組
  3. 3. 今日が初LT マサカリストって何ですか!! こわい(真顔) 殺さないで下さいお願いします 後生ですから
  4. 4. 何喋るの? Scala.jsでScalaとjsの世界がど う橋渡しされているか的な話 ※本当はScala.js触ってみたよ的なも のを喋るつもりだったけどきょんくん にハードルあげられた ちなみにScala初心者だしjs全く 分からないマンです
  5. 5. Scala.js? ScalaをJavascriptに変換する alt-jsの一種 tototoshiさんのスライドが詳しい http://tototoshi.github.io/slides/ sendagaya-js-scala-js/#1
  6. 6. Scalaとjsを繋ぐもの Facade-Type jsのものをScalaで扱う Dynamic Type Scalaで動的型を扱う仕組み
  7. 7. Facade-Type Scalaで宣言されたjsの型 jsのものをScalaで扱う仕組み jsに存在するもののI/Fに合わせて Scala側で宣言する 宣言だけ jsの値やAPIに型注釈を与える感じ 本体はjsのruntimeにある前提
  8. 8. Facade-Type
  9. 9. Facade-Type
  10. 10. Facade-Type 基本の型以外は自分で宣言する js.Anyを継承したtraitとして さっきの図のjQueryオブジェクトとか 独自libに定義されているものとか
  11. 11. Facade-Type jsの世界のものが静的型が付与 されているように使える IDEの補完が使える コンパイラの力を使える プリミティブだけじゃなく任意のjs型 についても宣言できる
  12. 12. しかし…。 jsのAPIには適切な型を与えられ ないものもある。 引数の型が定まらない 戻り値の型も定まらない
  13. 13. DynamicType 静的言語であるScalaでjsの動的な 一面を扱うための仕組み js.Any js.Dynamic
  14. 14. DynamicType js.Any 全てのFacade-Typeの親 どんなFacade-Typeも代入できる 引数の型が定まらない関数の引数の型 として使える
  15. 15. DynamicType js.Any 逆にFacade-Type以外は受け取れない Facade-Typeしか受け取れない = jsで扱えない値は受け取れない user-definedなクラスはどうにかしてFacade- Typeに変換しないとダメ
  16. 16. DynamicType
  17. 17. DynamicType
  18. 18. DynamicType js.Dynamic Facade-Typeのひとつ 動的型を表すためのもので、どんな操 作も記述出来る ScalaのDynamicトレイトを継承している どういう操作を備えたオブジェクトが 返ってくるか分からないAPIの戻り値 の型として利用される
  19. 19. DynamicType js.Dynamic TypeScriptのanyに近いが全ての Facade-Typeの親と言うわけではない 全てのFacade-Typeを「何でも出来る型」とし て扱うことは出来ない 「JavaScriptはTypeScriptである」という制約 のないScala.jsはより安全な設計を選んだ とは言え動的型なので実行時エラーの 危険性はある
  20. 20. DynamicType
  21. 21. DynamicType ������������������������ ����������� �������������������������� ��������������� �������������������� ��������������������������������
  22. 22. まとめ 静的に扱えるものは静的に、扱 えないものでもなるだけ安全 に、自然に。 これらの仕組みにより思ったよ りjs意識しなくてもいいけど、 とは言えそれなりに癖はある感 じ(主観)
  23. 23. おわり 参考 Scala.js: Type-Directed Interoperability with Dynamically Typed Languages http://infoscience.epfl.ch/record/190834/ files/scalajs-paper.pdf tototoshiさんのスライド http://tototoshi.github.io/slides/ sendagaya-js-scala-js/#1
  24. 24. 言い忘れてた きょんくん、かおりさん ご結婚おめでとうございます!!

×