do you like scala

26
DO YOU LIKE SCALA? CYBERZ INC. YUTO SUZUKI

Upload: yuto-suzuki

Post on 03-Mar-2017

295 views

Category:

Engineering


0 download

TRANSCRIPT

Page 1: Do you like scala

DO YOU LIKE SCALA?CYBERZ INC. YUTO SUZUKI

Page 2: Do you like scala

自己紹介鈴木 雄登@moc_yuto技術戦略室

Page 3: Do you like scala

Scala 好きですか?

Page 4: Do you like scala

Scalaやってみたいですか?

Page 5: Do you like scala

Scala を遠ざける理由ってなんだろう・・・?

Page 6: Do you like scala

聞いてみました。Scala を遠ざける理由コンパイルが遅い

そもそもコンパイル言語が嫌い??

関数型に慣れないsbt がわからない

Page 7: Do you like scala

コンパイル遅い

Page 8: Do you like scala

コンパイル問題

確かにコンパイルは遅い。スペックが高い Mac で殴ってもなんだかんだかかる。

実測してみます。

Page 9: Do you like scala

計測結果調査マシン: MacBookPro Retina Mid2015 2.8GHz Corei7

API (570 Scala sources)

WEB サーバ (269 file sources)

どちらもフルビルドです。

差分コンパイルなら、2~3s*

* ファイル数にもよりますが。

Page 10: Do you like scala

API は確かに遅いあるライブラリを使ってしまっているのが原因。

Page 11: Do you like scala

じゃあ小規模 PJ だと?another API (20 Scala soureces)

まあ許容できる?

Page 12: Do you like scala

そもそもコンパイルが嫌?コンパイルは人類の資産!!

こんなことは無くなります!

もちろん、 PJ の規模に依ります

Page 13: Do you like scala

関数型怖い

Page 14: Do you like scala

関数型ってそもそも?副作用を起こさないようにプログラムする

副作用って?

副作用あり 副作用なし

Page 15: Do you like scala

イミュータブル副作用を起こさせない仕組み その1

定義した変数を書き換えさせないイミュータブルな変数

これの結果は?一見、副作用の無さそうな関数

参照渡し、破壊的メソッドによる弊害

Page 16: Do you like scala

ループ式でイミュータブル配列の値に 3 を足す関数を作ってください

ループでは変数を書き換えがち

Page 17: Do you like scala

Scala で書くと

Page 18: Do you like scala

どうやって作る?エンジニアの人の ID を返したい

Page 19: Do you like scala

Scala で書くとオブジェクトの型の定義

エンジニアの人だけで絞込み

ID だけに変換

Page 20: Do you like scala

しっかり分離する

書こうと思えば、こうも書けてしまう。

Page 21: Do you like scala

実際のソースを比較

実プロダクトで比較してみよう!

Page 22: Do you like scala

ロジックに集中できる

for 文の制御を意識する必要がない

Page 23: Do you like scala

話したいことはまだまだありますが・・。

Page 24: Do you like scala

まとめコンパイルは重いライブラリを入れなければ、許容範囲

コンパイルはエラーを検知してくれる関数型のそもそもの意義を確認

ロジックに集中するための道具

Page 25: Do you like scala

Scala 触ってみませんか?

Page 26: Do you like scala

We are hiring!