Upgrade to Pro — share decks privately, control downloads, hide ads and more …

20181208_好きだけじゃツライScala.js_共有版_.pdf

omiend
December 08, 2018

 20181208_好きだけじゃツライScala.js_共有版_.pdf

omiend

December 08, 2018
Tweet

More Decks by omiend

Other Decks in Programming

Transcript

  1. 好きだけじゃツライ
    Scala.js
    @omiend

    View full-size slide

  2. 自己紹介
    @omiend
    恵比寿で働くプログラマー歴13年目のおじさん
    一応フロントエンドからバックエンドまで一通り出来ると思い込んでいるダメェンジニア
    Java,Shell,MySQL,SQL,Salesforce(Force.com/ApexCode/VisualCode),GAE(Slim3),ABAP
    Scala(ScalaMatsuriStaff),Ruby on Rails,Docker,Angular(1.4…),React/Redux,Riot.js,Vue.js,Nuxt.js
    Musics,Movies,Joging,Walking,Drink Driven Development
    rryは後輩ちゃん

    View full-size slide

  3. @omiend
    今日も一日
    話すこと
    - Scala の 布教 簡単な紹介(いいところ)
    - Scala.js の簡単な紹介(いいところ・ツライところ)
    - +α
    話さないこと
    - ScalaのScala.jsの細かいサンプルコード

    View full-size slide

  4. @omiend
    Scalaとは?
    Scalaはオブジェクト指向言語と関数型言語の特徴を統合したマル
    チパラダイムのプログラミング言語である。
    Wikipedia - https://ja.wikipedia.org/wiki/Scala

    View full-size slide

  5. コンパイルすると .class(JVM上で動作する)ファイルになる。
    Javaの資産を使うことができるし、JavaからScalaのプログラムを利
    用することができる。
    @omiend
    Java
    .java
    Scala
    .scala
    Scalaのいいところ
    JVM
    Java
    .class
    Scala
    .class

    View full-size slide

  6. 静的型付き言語であり、型を利用したプログラミングができる。(型
    クラス・型パラメーターなど)
    @omiend
    Scalaのいいところ
    Scala.scala

    View full-size slide

  7. 記述量が少ない(ので、それだけバグを防げる)。
    体感でJava 8(ちょっと古くてスミマセン)と比べて1/3くらいの記述量。
    @omiend
    Scalaのいいところ
    Java
    .java
    Scala
    .scala

    View full-size slide

  8. 基本的にImmutableな考え方。
    うっかりミス撲滅。
    @omiend
    Scalaのいいところ
    val name: string = ”@omiend”
    name = ”@new_omiend”
    // error: reassignment to val
    name = "@new_omiend"
    ^

    View full-size slide

  9. @omiend
    Scalaのいいところ
    簡単にまとめるとJavaの資産を有効活用できるだけではなく記述量が少ないことで物理的
    にバグの混入を減らすことができるしImmutableに書くことで値の変更を認めずさらにバ
    グの混入を減らすことができるし型を利用したプログラミングをすることでソースコードの視
    認性を向上することができるだけでなく静的型付け言語としてコンパイル時にバグの検知
    をすることができるしそれだけではなくモナドを利用したさらに簡潔なプログラミングも可能
    だしまあ確かに学習コストは高いしPlayframework利用時にフルコンパイルすると余裕で
    お手洗い行けるくらいコンパイル速度は遅めのちょっと鈍感な子だけどそこもなんか一周
    回ってカワイイしとにかく良いプログラム言語だしなんというかScalableLanguageという意
    味かどうかわからないのだけどScalaって名前がもう最高にCoolだし後次回ScalaMatsuri
    は2019年6月にお台場で開催予定なんですけど今セッション募集しているので是非プロ
    ポーザルを送ってくださいまあなんというかまとめると・・・

    View full-size slide

  10. @omiend
    Scalaのいいところ
    とにかく
    好き
    大好き

    View full-size slide

  11. Scala.js - https://www.scala-js.org/
    JavaScriptをScalaで書くことができるAltJSの一つ。
    @omiend
    Scala.jsとは?

    View full-size slide

  12. @omiend
    Scala.jsの嬉しいところ
    サーバーサイドをScala(e.g. Playframework)、フロントエンドを
    Scala.jsで作ることを想像すると、サーバーサイドとフロントエンドで
    一貫してScalaで実装することができる。
    WebServer
    Scala
    .class
    WebBrowser
    Scala
    .js

    View full-size slide

  13. @omiend
    Scala.jsの嬉しいところ
    やっぱり記述量は少ない(カモ)。

    View full-size slide

  14. @omiend
    Scala.jsの嬉しいところ
    例えば型が欲しいとき、TypeScriptの代わりとしてScala.jsを使っ
    たり。
    Vue.jsにScala.jsを組み込んでいる人も。
    https://github.com/michaelmang/Scalajs-Vuejs-Starter
    (PullReq送ったけどもうメンテされていない・・・?)

    View full-size slide

  15. @omiend
    Scala.jsの嬉しいところ
    まとめて言ってしまうと、Scalaの嬉しいところをフロントエンドの開発
    においても享受することができる。
    Scala
    .scala
    WebBrowser
    Scala
    .js

    View full-size slide

  16. @omiend
    フロントエンドとサーバーサイドの間で言語を統一する必要性はな
    い。
    別にサーバーサイドはScala、フロントエンドはECMAScriptで良い
    のでは感。
    Scala.jsのツライところ

    View full-size slide

  17. @omiend
    Scala.jsのツライところ
    実装難易度が高いように思う。

    View full-size slide

  18. @omiend
    Scala.jsのツライところ
    JavaScriptの世界で型が欲しいのであれば、TypeScriptを使え
    ば良い。
    力(型)が欲しいか・・・?

    View full-size slide

  19. @omiend
    Scala.jsのツライところ
    だったら、最近だとElmが良さそう(根底から覆す)
    import Browser
    import Html exposing (Html, button, div, text)
    import Html.Events exposing (onClick)
    main =
    Browser.sandbox { init = 0, update = update, view = view }
    type Msg = Increment | Decrement
    update msg model =
    case msg of
    Increment ->
    model + 1
    Decrement ->
    model - 1
    view model =
    div []
    [ button [ onClick Decrement ] [ text "-" ]
    , div [] [ text (String.fromInt model) ]
    , button [ onClick Increment ] [ text "+" ]
    ]

    View full-size slide

  20. +α
    @omiend

    View full-size slide

  21. @omiend
    ScalaMatsuri2019
    日本最大級のSaclaカンファレンス
    ScalaMatsuri 2019
    は、2019年6月27日〜29日
    お台場にございます東京国際交流館で開催されます。
    奮ってご参加ください。
    近日当日スタッフも募集開始します。

    View full-size slide

  22. @omiend
    GO SE I TYO~
    ご清聴ありがとうございました。

    View full-size slide