20150207 何故scalaを選んだのか
TRANSCRIPT
何故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