do you like scala

Post on 03-Mar-2017

292 Views

Category:

Engineering

0 Downloads

Preview:

Click to see full reader

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