do you like scala
Post on 03-Mar-2017
292 Views
Preview:
TRANSCRIPT
DO YOU LIKE SCALA?CYBERZ INC. YUTO SUZUKI
自己紹介鈴木 雄登@moc_yuto技術戦略室
Scala 好きですか?
Scalaやってみたいですか?
Scala を遠ざける理由ってなんだろう・・・?
聞いてみました。Scala を遠ざける理由コンパイルが遅い
そもそもコンパイル言語が嫌い??
関数型に慣れないsbt がわからない
コンパイル遅い
コンパイル問題
確かにコンパイルは遅い。スペックが高い Mac で殴ってもなんだかんだかかる。
実測してみます。
計測結果調査マシン: MacBookPro Retina Mid2015 2.8GHz Corei7
API (570 Scala sources)
WEB サーバ (269 file sources)
どちらもフルビルドです。
差分コンパイルなら、2~3s*
* ファイル数にもよりますが。
API は確かに遅いあるライブラリを使ってしまっているのが原因。
じゃあ小規模 PJ だと?another API (20 Scala soureces)
まあ許容できる?
そもそもコンパイルが嫌?コンパイルは人類の資産!!
こんなことは無くなります!
もちろん、 PJ の規模に依ります
関数型怖い
関数型ってそもそも?副作用を起こさないようにプログラムする
副作用って?
副作用あり 副作用なし
イミュータブル副作用を起こさせない仕組み その1
定義した変数を書き換えさせないイミュータブルな変数
これの結果は?一見、副作用の無さそうな関数
参照渡し、破壊的メソッドによる弊害
ループ式でイミュータブル配列の値に 3 を足す関数を作ってください
ループでは変数を書き換えがち
Scala で書くと
どうやって作る?エンジニアの人の ID を返したい
Scala で書くとオブジェクトの型の定義
エンジニアの人だけで絞込み
ID だけに変換
しっかり分離する
書こうと思えば、こうも書けてしまう。
実際のソースを比較
実プロダクトで比較してみよう!
ロジックに集中できる
for 文の制御を意識する必要がない
話したいことはまだまだありますが・・。
まとめコンパイルは重いライブラリを入れなければ、許容範囲
コンパイルはエラーを検知してくれる関数型のそもそもの意義を確認
ロジックに集中するための道具
Scala 触ってみませんか?
We are hiring!
top related