何故Scalaを選んだのか?	
  
∼アドテクスタジオの場合∼
1
自己紹介
• 神田勝規(かんだかつのり)	
  
• 株式会社サイバーエージェント	
  
• アドテクスタジオ	
  AMoAd所属	
  
• potix2@twitter	
  /	
  github	
  
• 毎月LispMeetup(shibuya.lisp)を開催してます
2
アドテクスタジオ
• 2013年10月設立	
  
• 在籍しているエンジニア	
  250人くらい	
  
• 使われている言語	
  
– Java,	
  Scala,	
  PHP,	
  Ruby...	
  
• 業務でScalaを書いているエンジニア	
  
• 全体の3割くらい
3
はじめてのScala@AMoAd
• 2013年の6月頃から使いはじめた	
  
• Scalaを使った経験者がほぼいない	
  
• 既存バッチの置き換え	
  
• Scalaの開発経験を稼ぐところから
4
何故、Scalaを選んだのか?
5
エンジニアからの要望が多かった
6
コードをシンプルに書ける
7
並列・分散処理が書きやすい
8
Scalaを導入して良かった例
9
Hadoopジョブの置き換え
• Hadoopジョブのパフォーマンス改善が急遽
必要になった	
  
• Hadoopの扱いに慣れているメンバーがいな
い
10
11
Scaldingを使ってみて
• Scalaのコレクション操作のようにHadoop
ジョブを組むことができた	
  
• テストが書ける!(cf.	
  Hive)	
  
• リリース前倒し	
  
• パフォーマンスも問題ないレベル
12
Scaldingの簡単な例
13
class	
  WordCountJob(args	
  :	
  Args)	
  extends	
  Job(args)	
  {	
  
	
  	
  TypedPipe.from(TextLine(args("input")))	
  
	
  	
  	
  	
  .flatMap	
  {	
  line	
  =>	
  line.split("""s+""")	
  }	
  
	
  	
  	
  	
  .groupBy	
  {	
  word	
  =>	
  word	
  }	
  
	
  	
  	
  	
  .size	
  
	
  	
  	
  	
  .write(TypedTsv(args("output")))	
  
}
引用)	
  https://github.com/twitter/scalding
Scala導入に際してやったこと
14
社内で読書会
• Functional	
  Programming	
  in	
  Scala	
  
• 良かった点	
  
• チーム内での共通言語を増やせた	
  
• 悪かった点	
  
• 途中でジョインしたメンバーが参加しづ
らかった
15
Scalaもくもく会
• Scalaを使う業務を持ち寄って黙々と作業	
  
• 良かった点	
  
• ノウハウが共有された	
  
• 悪かった点	
  
• 自然消滅した
16
いま抱えている課題
• Scalaをどうやって学習すればいいのか?	
  
• ライブラリやフレームワークが乱立してい
て選定に困る	
  
• ベストプラクティスがわからない
17
最近のScala利用例
18
まとめ
• エンジニアのモチベーション重要	
  
• Scalaは記述力が高くてコードがシンプルに	
  
• その反面、学習コストが高くなりがち
19

20150207 何故scalaを選んだのか