20150207 何故scalaを選んだのか

19
何故Scalaを選んだのか? ~アドテクスタジオの場合~ 1

Upload: katsunori-kanda

Post on 16-Jul-2015

2.781 views

Category:

Software


1 download

TRANSCRIPT

Page 1: 20150207 何故scalaを選んだのか

何故Scalaを選んだのか?  ~アドテクスタジオの場合~

1

Page 2: 20150207 何故scalaを選んだのか

自己紹介• 神田勝規(かんだかつのり)  

• 株式会社サイバーエージェント  

• アドテクスタジオ  AMoAd所属  

• potix2@twitter  /  github  • 毎月LispMeetup(shibuya.lisp)を開催してます

2

Page 3: 20150207 何故scalaを選んだのか

アドテクスタジオ• 2013年10月設立  

• 在籍しているエンジニア  250人くらい  

• 使われている言語  

– Java,  Scala,  PHP,  Ruby...  • 業務でScalaを書いているエンジニア  

• 全体の3割くらい

3

Page 4: 20150207 何故scalaを選んだのか

はじめてのScala@AMoAd

• 2013年の6月頃から使いはじめた  

• Scalaを使った経験者がほぼいない  

• 既存バッチの置き換え  

• Scalaの開発経験を稼ぐところから

4

Page 5: 20150207 何故scalaを選んだのか

何故、Scalaを選んだのか?

5

Page 6: 20150207 何故scalaを選んだのか

エンジニアからの要望が多かった

6

Page 7: 20150207 何故scalaを選んだのか

コードをシンプルに書ける

7

Page 8: 20150207 何故scalaを選んだのか

並列・分散処理が書きやすい

8

Page 9: 20150207 何故scalaを選んだのか

Scalaを導入して良かった例

9

Page 10: 20150207 何故scalaを選んだのか

Hadoopジョブの置き換え• Hadoopジョブのパフォーマンス改善が急遽必要になった  

• Hadoopの扱いに慣れているメンバーがいない

10

Page 11: 20150207 何故scalaを選んだのか

11

Page 12: 20150207 何故scalaを選んだのか

Scaldingを使ってみて• Scalaのコレクション操作のようにHadoop

ジョブを組むことができた  

• テストが書ける!(cf.  Hive)  

• リリース前倒し  

• パフォーマンスも問題ないレベル

12

Page 13: 20150207 何故scalaを選んだのか

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

Page 14: 20150207 何故scalaを選んだのか

Scala導入に際してやったこと

14

Page 15: 20150207 何故scalaを選んだのか

社内で読書会• Functional  Programming  in  Scala  • 良かった点  

• チーム内での共通言語を増やせた  

• 悪かった点  

• 途中でジョインしたメンバーが参加しづらかった

15

Page 16: 20150207 何故scalaを選んだのか

Scalaもくもく会• Scalaを使う業務を持ち寄って黙々と作業  

• 良かった点  

• ノウハウが共有された  

• 悪かった点  

• 自然消滅した

16

Page 17: 20150207 何故scalaを選んだのか

いま抱えている課題• Scalaをどうやって学習すればいいのか?  

• ライブラリやフレームワークが乱立していて選定に困る  

• ベストプラクティスがわからない

17

Page 18: 20150207 何故scalaを選んだのか

最近のScala利用例

18

Page 19: 20150207 何故scalaを選んだのか

まとめ• エンジニアのモチベーション重要  

• Scalaは記述力が高くてコードがシンプルに  

• その反面、学習コストが高くなりがち

19