Blog
Scalaエンジニアインタビュー
MC:
今回はScalaを利用している3つのプロダクトに集まってもらいました。
簡単に自己紹介をお願いします。
福原:
AMoAdの福原です。主に配信と集計回りを担当しています。
清水:
AMoAdの清水です。
サイバーエージェントには新卒で入社して今は2年目です。
配属されてからScalaに出会ったのでScala歴は1年半位です。
AMoAdではバッチと集計回りにScalaが利用されているのでそちらを担当しています。
川瀬:
Dynalystの川瀬です。
Scala歴は1年程度で、配信サーバーの実装やBidding回りを担当しています。
茅野:
Dynalystの茅野です。
Scala歴は2年程度ですが、サイバーエージェントには半年前に入社しました。
Dynalystでは主にScalaが利用されていて、サーバーサイド・バッチなどの開発に携わっています。
大城:
AD Management Toolsの大城です。
Scalaは半年ほど前に使い始めました。
レポートデータの作成部分や管理画面部分など全般的に担当しています。
このプロジェクトに入るまではAmebaとの連携ツールを作っていて、そのツールをScalaで作り始めたのがScalaでの初プロジェクトです。
実はAmebaでも管理ツールとしてScalaが結構使われているんですよ。
浅岡:
AD Management Toolsの浅岡です。
このプロダクトでは今4名程度で全員サーバーサイド開発を担当しています。
実は大城さん以外は全員Scalaが初めてでScala歴は1か月です。
管理画面はPlay Frameworkを利用しています。
–アドテクでScalaを採用!?
MC:
アドテクスタジオではScalaを採用したプロジェクトがいくつかあるわけですが、
この中だと一番古いのがAMoAd、次にDynalyst、その次にAD Management Toolsが続いていて、今回はいろいろな話が聞けそうですね。
ところで話が少し戻るのですが、茅野さんはサイバーエージェントでScalaが採用されているから転職してきたのですか?
茅野:
そうですね。サイバーエージェントでScalaを利用していると聞いて受けました。
MC:
おお!これからScalaの利用をもっと打ち出して一杯応募が来てくれるといいですね。
–何故Scalaを選んだのか?
MC:
ちなみに、みなさんScala歴が1-2年未満だと思うのですが
どうしてScalaを使おうと思ったんですか?
福原:
前職でScalaを使っていて、もうJavaは書きたくないなって(笑)
Javaってコード量が長くなってしまうんですよね。
Scalaを始めて学んだ時に、コードの短くなることや変数への再代入禁止を知って「これは正しいな」と思いました。
その後、AMoAdに移動してきたときに開発責任者に「Scalaで開発をしたい」と相談し、新規に作成する機能はScalaを使って開発していこうという流れになりました。
MC:
なぜScalaだったんですか?
福原:
僕は静的型付け言語が好きで、Javaの経験が長かったこともありScalaがいいなと。
ScalaってJavaっぽくも書けるので入りやすかったですね。
MC:
ちなみに川瀬さんは何でScalaを書きたいと思ったんですか?
川瀬:
僕は元々Scalaを触る前から関数型言語に興味があって、型システムの研究やHaskellを書いたりしていたのでScalaは自分にあっているかなって。
MC:
Dynalystのコードはかなり関数型よりになっているという話もありますね。
福原:
僕はあまり関数型に偏り過ぎるのはどうかなと思ってます。
この前、Scala設計者のMartin Ordesky教授とも話したんですが、関数型にオーバーシュートしすぎないようにって言われましたね。
Ordesky教授は実用言語としてScalaを作っているので、あまり関数型に特化しすぎて特定の人にしかメンテナンス出来なくなるのは本意ではないようでした。
MC:
ScalaMatsuriの後、Ordesky教授が来社してくれた時の話ですね。
茅野:
前に携わったプロジェクトでは関数型っぽく書いていなかったので、Dynalystのコードを見たときに「ほわっ」てなりましたね。
MC:
ScalazのAPIを多様しているので、Haskellっぽくなってるんですよね。
茅野:
でも慣れたら読めるんですよね。
川瀬:
型クラスを使った書き方がそんなに大変なことにならなそうだったのでそうしています。
Dynalystではうまくいかなかったら書き直す精神があるので負の遺産が生まれにくいんですよね。
MC:
AD Management Toolsは何でScalaを選択されたんですか?
浅岡:
新しいプロジェクトをやることになり、はじめはJavaで書こうと思っていたのですが、大城君がJoinして「Scala」でやろう!みたいな。流れになりましたね。
MC:
大変だったことはありますか?
浅岡:
大変ですね。日々勉強しながら作っている感じです。
でもメンバーのみんなが新しい技術を使えるということで、モチベーションがあがって結局Scalaを選択してよかったなって。
福原:
僕もScalaをJavaっぽく書いていたんですが、たまにScalaが拒否してくるんですよね。
拒否っていうかJavaっぽい書き方がAPIとマッチしないっていうか。
でも関数型の書き方を取り入れるとしっくり来ることがあって、あぁScalaってこんな感じで書いて行くんだなと思いましたね。
–Scaldingで上がる生産性
MC:
ちなみにAMoAdはPlayとか何かフレームワークって使っていますか?
福原:
集計回りにTwitter社のScaldingを使ってます。
HadoopのJobをScalaで書きやすくしてくれるフレームワークなんですが、
MapとReduceって元々関数型から来ている考え方だから集計にマッチするんですよね。
HadoopのJobとか書いたことがあまりない僕でもScaldingを使うととても生産性が高くコードが書けるんですよ。
しかも今Sparkの波が来ているじゃないですか。
AMoAdでも一部Sparkが動いていてそれもScalaで書けるので生産性が高いですね。
MC:
生産性があがるのはいいですね。
DynalystはScalaを使ってよかった事とかありますか?
何となくなんですけど、Scalaを使っていることで精鋭メンバーが集まっているイメージがありますけど。
茅野:
確かにそうですね。
Scalaをやろうっていう人は学習意欲が高いので必然的に精鋭メンバーが集まっている気がします。
ただ、Dynalystが関数型に寄ってることもあり、学習コストが高いので人を増やそうと思っても中々人を入れられないというジレンマがありますけどね。
浅岡:
うちは逆にメンバーが集まりやすい気がしています。
出来たばかりのプロジェクトなので普通であれば中々エンジニアを確保するのが難しいのですが、既に4人もいますし。
Scala、AngularJSやCoffee Scriptで開発していますが、みんなモチベーションが高く開発ができている感じがあります。
川瀬:
Scalaってコンパクトにかっこよくかけるっていうか、書いていて楽しいですね。
茅野:
私は関数探すのが楽しいですね。
一同:
あー!たしかに!
茅野:
あーなんかこんなのあるんだ。みたいな。
浅岡:
みんなで勉強しながらやるのも盛り上がりますよね。
–社内Scala勉強会
MC:
今って社内でScala勉強会やっているんですか?
福原:
やっていますよ。ただ結構濃い内容になってきているので途中から入ってくるには敷居が高くなってますね。
でもそこは清水君が再放送的な会をしてくれています。
清水:
新卒も結構配属されているので福原さんが教えてくれたことをさらに教える勉強会を週1で主催しています。
MC:
アドテクスタジオでは結構勉強会も増えていて勉強会・発表会とかすごい数ですよね。
ちなみにConfluence Calendarみたら明日は3件も勉強会があるみたいです。
社員が自発的に勉強会を主催するって良いですね。
福原:
Flow制度とか使ってScala合宿とかやってみたいですね。
※Flow制度とは、アドテクスタジオで年に2回特定の条件で利用できる合宿制度
MC:
そうですね。アドテクスタジオではいろいろな制度がどんどんできているので活用していきたいですね。
Author