Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
20181208_好きだけじゃツライScala.js_共有版_.pdf
Search
omiend
December 08, 2018
Programming
130
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
20181208_好きだけじゃツライScala.js_共有版_.pdf
omiend
December 08, 2018
More Decks by omiend
See All by omiend
スクラッチ組織活用術 Salesforce Developers Meetup #24
omiend
0
1.4k
Nuxt.jsのComponent分割単位と,SSRをする上で気をつけること
omiend
1
810
Nuxt.js_Vue.js_のVuexの動かしかたをまとめてみたよ.pdf
omiend
0
120
20181110 Scala関西Summit 懇親会LT「Scalaのかわいいところ」
omiend
0
590
Other Decks in Programming
See All in Programming
異なる設計思想のフレームワークを経験して得た学び
amekuhideki
1
130
ドリフトを絶対に許さない(?)CDK運用 / CDK Ops with Zero Tolerance for Drifts (?)
akihisaikeda
1
220
リアルな遅延を測る仕様
kota_yata
1
120
「寝てても仕事が進む」Claude Codeで組む第二の脳
tomoyafujita2016
0
350
運用ダッシュボードの設計を誰も教えてくれないのだけどみなさんどうしてるんですか? - チームに監視するという文化を根付かせるための第一歩を踏みたい -
satoshi256kbyte
1
140
Android CLI
fornewid
0
230
Oxlintはいいぞ(続)
yug1224
1
390
PostgreSQL 18で考えるUUID主キー
kazuhiro1982
0
500
AWS DevOps AgentのAzure接続機能を検証して見えた活用法/Use Cases Verified for the AWS DevOps Agent's Azure Connectivity Feature
masakiokuda
1
260
GDG Korea Android: 2026 I/O Extended ~ What's new in Android development tools
pluu
0
240
Building a Meta Ray-Ban display app
akkeylab
0
180
go-spidermonkeyでAIエージェントのCode Modeを実装する
syumai
0
100
Featured
See All Featured
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
680
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
640
Building a Scalable Design System with Sketch
lauravandoore
463
34k
The browser strikes back
jonoalderson
0
1.5k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
Chasing Engaging Ingredients in Design
codingconduct
0
280
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.4k
Between Models and Reality
mayunak
4
400
Design in an AI World
tapps
1
290
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.6k
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
Transcript
好きだけじゃツライ Scala.js @omiend
自己紹介 @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は後輩ちゃん
@omiend 今日も一日 話すこと - Scala の 布教 簡単な紹介(いいところ) - Scala.js
の簡単な紹介(いいところ・ツライところ) - +α 話さないこと - ScalaのScala.jsの細かいサンプルコード
@omiend Scalaとは? Scalaはオブジェクト指向言語と関数型言語の特徴を統合したマル チパラダイムのプログラミング言語である。 Wikipedia - https://ja.wikipedia.org/wiki/Scala
コンパイルすると .class(JVM上で動作する)ファイルになる。 Javaの資産を使うことができるし、JavaからScalaのプログラムを利 用することができる。 @omiend Java .java Scala .scala Scalaのいいところ
JVM Java .class Scala .class
静的型付き言語であり、型を利用したプログラミングができる。(型 クラス・型パラメーターなど) @omiend Scalaのいいところ Scala.scala
記述量が少ない(ので、それだけバグを防げる)。 体感でJava 8(ちょっと古くてスミマセン)と比べて1/3くらいの記述量。 @omiend Scalaのいいところ Java .java Scala .scala
基本的にImmutableな考え方。 うっかりミス撲滅。 @omiend Scalaのいいところ val name: string = ”@omiend” name
= ”@new_omiend” // error: reassignment to val name = "@new_omiend" ^
@omiend Scalaのいいところ 簡単にまとめるとJavaの資産を有効活用できるだけではなく記述量が少ないことで物理的 にバグの混入を減らすことができるしImmutableに書くことで値の変更を認めずさらにバ グの混入を減らすことができるし型を利用したプログラミングをすることでソースコードの視 認性を向上することができるだけでなく静的型付け言語としてコンパイル時にバグの検知 をすることができるしそれだけではなくモナドを利用したさらに簡潔なプログラミングも可能 だしまあ確かに学習コストは高いしPlayframework利用時にフルコンパイルすると余裕で お手洗い行けるくらいコンパイル速度は遅めのちょっと鈍感な子だけどそこもなんか一周 回ってカワイイしとにかく良いプログラム言語だしなんというかScalableLanguageという意
味かどうかわからないのだけどScalaって名前がもう最高にCoolだし後次回ScalaMatsuri は2019年6月にお台場で開催予定なんですけど今セッション募集しているので是非プロ ポーザルを送ってくださいまあなんというかまとめると・・・
@omiend Scalaのいいところ とにかく 好き 大好き
Scala.js - https://www.scala-js.org/ JavaScriptをScalaで書くことができるAltJSの一つ。 @omiend Scala.jsとは?
@omiend Scala.jsの嬉しいところ サーバーサイドをScala(e.g. Playframework)、フロントエンドを Scala.jsで作ることを想像すると、サーバーサイドとフロントエンドで 一貫してScalaで実装することができる。 WebServer Scala .class WebBrowser
Scala .js
@omiend Scala.jsの嬉しいところ やっぱり記述量は少ない(カモ)。
@omiend Scala.jsの嬉しいところ 例えば型が欲しいとき、TypeScriptの代わりとしてScala.jsを使っ たり。 Vue.jsにScala.jsを組み込んでいる人も。 https://github.com/michaelmang/Scalajs-Vuejs-Starter (PullReq送ったけどもうメンテされていない・・・?)
@omiend Scala.jsの嬉しいところ まとめて言ってしまうと、Scalaの嬉しいところをフロントエンドの開発 においても享受することができる。 Scala .scala WebBrowser Scala .js
@omiend フロントエンドとサーバーサイドの間で言語を統一する必要性はな い。 別にサーバーサイドはScala、フロントエンドはECMAScriptで良い のでは感。 Scala.jsのツライところ
@omiend Scala.jsのツライところ 実装難易度が高いように思う。
@omiend Scala.jsのツライところ JavaScriptの世界で型が欲しいのであれば、TypeScriptを使え ば良い。 力(型)が欲しいか・・・?
@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 "+" ] ]
+α @omiend
@omiend ScalaMatsuri2019 日本最大級のSaclaカンファレンス ScalaMatsuri 2019 は、2019年6月27日〜29日 お台場にございます東京国際交流館で開催されます。 奮ってご参加ください。 近日当日スタッフも募集開始します。
@omiend GO SE I TYO~ ご清聴ありがとうございました。