SlideShare a Scribd company logo
1 of 26
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!

More Related Content

What's hot

元インフラエンジニアが
Scalaを触ってつまづいたところ。
元インフラエンジニアが
Scalaを触ってつまづいたところ。元インフラエンジニアが
Scalaを触ってつまづいたところ。
元インフラエンジニアが
Scalaを触ってつまづいたところ。
takako onoue
 
Scala界隈の近況
Scala界隈の近況Scala界隈の近況
Scala界隈の近況
takezoe
 

What's hot (20)

Skinny Framework で始めた Scala
Skinny Framework で始めた ScalaSkinny Framework で始めた Scala
Skinny Framework で始めた Scala
 
Scala Performance Tuning Tips
Scala Performance Tuning TipsScala Performance Tuning Tips
Scala Performance Tuning Tips
 
Contributing to Scala OSS from East Asia #ScalaMatsuri
 Contributing to Scala OSS from East Asia #ScalaMatsuri Contributing to Scala OSS from East Asia #ScalaMatsuri
Contributing to Scala OSS from East Asia #ScalaMatsuri
 
Scalaはじめました!
Scalaはじめました!Scalaはじめました!
Scalaはじめました!
 
頑張りすぎないScala
頑張りすぎないScala頑張りすぎないScala
頑張りすぎないScala
 
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
 
Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回
Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回
Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回
 
Skinny Framework 進捗どうですか? #fud_scala
Skinny Framework 進捗どうですか? #fud_scalaSkinny Framework 進捗どうですか? #fud_scala
Skinny Framework 進捗どうですか? #fud_scala
 
[Scalamatsuri2016]あ、社内コミュニティ
[Scalamatsuri2016]あ、社内コミュニティ[Scalamatsuri2016]あ、社内コミュニティ
[Scalamatsuri2016]あ、社内コミュニティ
 
Scala戦士を増やせ
Scala戦士を増やせScala戦士を増やせ
Scala戦士を増やせ
 
おっさんES6/ES2015,React.jsを学ぶ
おっさんES6/ES2015,React.jsを学ぶおっさんES6/ES2015,React.jsを学ぶ
おっさんES6/ES2015,React.jsを学ぶ
 
Scala警察のすすめ
Scala警察のすすめScala警察のすすめ
Scala警察のすすめ
 
Scalaプロジェクトへの未経験者の円滑なジョインへ
Scalaプロジェクトへの未経験者の円滑なジョインへScalaプロジェクトへの未経験者の円滑なジョインへ
Scalaプロジェクトへの未経験者の円滑なジョインへ
 
Scalaでのプログラム開発
Scalaでのプログラム開発Scalaでのプログラム開発
Scalaでのプログラム開発
 
元インフラエンジニアが
Scalaを触ってつまづいたところ。
元インフラエンジニアが
Scalaを触ってつまづいたところ。元インフラエンジニアが
Scalaを触ってつまづいたところ。
元インフラエンジニアが
Scalaを触ってつまづいたところ。
 
Non-Functional Programming in Scala
Non-Functional Programming in ScalaNon-Functional Programming in Scala
Non-Functional Programming in Scala
 
ES6で始めるNode.js / Starting NodeJS Development with ES6
ES6で始めるNode.js / Starting NodeJS Development with ES6ES6で始めるNode.js / Starting NodeJS Development with ES6
ES6で始めるNode.js / Starting NodeJS Development with ES6
 
デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)
デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)
デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)
 
ScalaでASICやFPGA用の回路を設計するChisel
ScalaでASICやFPGA用の回路を設計するChiselScalaでASICやFPGA用の回路を設計するChisel
ScalaでASICやFPGA用の回路を設計するChisel
 
Scala界隈の近況
Scala界隈の近況Scala界隈の近況
Scala界隈の近況
 

Similar to Do you like scala

Scala.jsはじめました!
Scala.jsはじめました!Scala.jsはじめました!
Scala.jsはじめました!
K Kinzal
 
Play frameworkについて
Play frameworkについてPlay frameworkについて
Play frameworkについて
Shinobu Okano
 
oow2012 unconference
oow2012 unconferenceoow2012 unconference
oow2012 unconference
Koji Shinkubo
 
What is java_se_7
What is java_se_7What is java_se_7
What is java_se_7
TakumiIINO
 

Similar to Do you like scala (20)

Scala Daysに行ってみて
Scala Daysに行ってみてScala Daysに行ってみて
Scala Daysに行ってみて
 
実戦Scala
実戦Scala実戦Scala
実戦Scala
 
Scala.jsはじめました!
Scala.jsはじめました!Scala.jsはじめました!
Scala.jsはじめました!
 
【LT】 怖くない恐怖のScala.js
【LT】 怖くない恐怖のScala.js【LT】 怖くない恐怖のScala.js
【LT】 怖くない恐怖のScala.js
 
Scala.js触ってみた
Scala.js触ってみたScala.js触ってみた
Scala.js触ってみた
 
Introduction to guard + rspec
Introduction to guard + rspecIntroduction to guard + rspec
Introduction to guard + rspec
 
Spark CL
Spark CLSpark CL
Spark CL
 
Scalaの現状と課題
Scalaの現状と課題Scalaの現状と課題
Scalaの現状と課題
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
 
PlaySQLAlchemyORM2017.key
PlaySQLAlchemyORM2017.keyPlaySQLAlchemyORM2017.key
PlaySQLAlchemyORM2017.key
 
scala-kaigi1-sbt
scala-kaigi1-sbtscala-kaigi1-sbt
scala-kaigi1-sbt
 
ビッグじゃなくても使えるSpark Streaming
ビッグじゃなくても使えるSpark Streamingビッグじゃなくても使えるSpark Streaming
ビッグじゃなくても使えるSpark Streaming
 
Spark Structured StreamingでKafkaクラスタのデータをお手軽活用
Spark Structured StreamingでKafkaクラスタのデータをお手軽活用Spark Structured StreamingでKafkaクラスタのデータをお手軽活用
Spark Structured StreamingでKafkaクラスタのデータをお手軽活用
 
Scalaのコンパイル速度の話が聞きたいだろうし、するつもりだ
Scalaのコンパイル速度の話が聞きたいだろうし、するつもりだScalaのコンパイル速度の話が聞きたいだろうし、するつもりだ
Scalaのコンパイル速度の話が聞きたいだろうし、するつもりだ
 
Play frameworkについて
Play frameworkについてPlay frameworkについて
Play frameworkについて
 
oow2012 unconference
oow2012 unconferenceoow2012 unconference
oow2012 unconference
 
Apex Test Plusの紹介
Apex Test Plusの紹介Apex Test Plusの紹介
Apex Test Plusの紹介
 
What is java_se_7
What is java_se_7What is java_se_7
What is java_se_7
 
プログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けー
プログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けープログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けー
プログラミング言語のパラダイムシフト(ダイジェスト)ーScalaから見る関数型と並列性時代の幕開けー
 
自動構築と自動テスト〜インフラのコード化とクラウドの優位性
自動構築と自動テスト〜インフラのコード化とクラウドの優位性自動構築と自動テスト〜インフラのコード化とクラウドの優位性
自動構築と自動テスト〜インフラのコード化とクラウドの優位性
 

More from Yuto Suzuki

More from Yuto Suzuki (20)

5xx解消への道のり
5xx解消への道のり5xx解消への道のり
5xx解消への道のり
 
MySQLのインデックス入門
MySQLのインデックス入門MySQLのインデックス入門
MySQLのインデックス入門
 
Ad vol.2
Ad vol.2Ad vol.2
Ad vol.2
 
広告勉強会
広告勉強会広告勉強会
広告勉強会
 
Mastering Bitcoin ~network~
Mastering Bitcoin ~network~ Mastering Bitcoin ~network~
Mastering Bitcoin ~network~
 
Aerospike基本のき
Aerospike基本のきAerospike基本のき
Aerospike基本のき
 
いまさらAkkaStream
いまさらAkkaStreamいまさらAkkaStream
いまさらAkkaStream
 
Introduction of View Through Tracking
Introduction of View Through TrackingIntroduction of View Through Tracking
Introduction of View Through Tracking
 
エンジニアのためのマーケティング
エンジニアのためのマーケティングエンジニアのためのマーケティング
エンジニアのためのマーケティング
 
How to Build a Team
How to Build a TeamHow to Build a Team
How to Build a Team
 
Re invent
Re inventRe invent
Re invent
 
Slackから始めるChatOps
Slackから始めるChatOpsSlackから始めるChatOps
Slackから始めるChatOps
 
大学の時の研究の話
大学の時の研究の話大学の時の研究の話
大学の時の研究の話
 
F.O.Xを支える技術
F.O.Xを支える技術F.O.Xを支える技術
F.O.Xを支える技術
 
Recommend scala
Recommend scalaRecommend scala
Recommend scala
 
スクラムに学ぶ開発の回し方
スクラムに学ぶ開発の回し方スクラムに学ぶ開発の回し方
スクラムに学ぶ開発の回し方
 
Breezeで始めるデータ分析
Breezeで始めるデータ分析Breezeで始めるデータ分析
Breezeで始めるデータ分析
 
進撃のSbt
進撃のSbt進撃のSbt
進撃のSbt
 
Deeplearningとは?
Deeplearningとは?Deeplearningとは?
Deeplearningとは?
 
Scalaで行うマイグレーション ~Flyway~
Scalaで行うマイグレーション ~Flyway~Scalaで行うマイグレーション ~Flyway~
Scalaで行うマイグレーション ~Flyway~
 

Do you like scala