うたもく

i am a student.

サイバーエージェントインターン(エンジニアJOB)

サイバーエージェントエンジニアJOBに約1ヶ月間(2/16-3/14)行ってきました。

www.cyberagent.co.jp

内容としてはいわゆる就業型インターンってやつです。
写真を撮ることを忘れていたのできらきらインターン生にはなれませんでした。
今回はアドテクの部署でインターンを行いました。

アドテクとは

めっちゃめちゃいっぱいアクセスくるので頑張る分野です。
僕なんかより知識がある人が詳しくかいているのでこちらをどうぞ。
一言でいうと広告です。
あのなんかみたことある商品に近いものが広告で出てくるあれです。
以前にサイバーエージェント主催のアドチャレというアドテク関係のイベントにも参加していました。

f:id:utam0k:20180324170726j:plain
うまい肉

Dynalyst

配属された部署はアドテクのDynalystでした。
初めにDynalystと聞いたときは何かの役職かと思っていました。
ホームページによると

Maximize Revenue and In-App Conversions with Re-Targeting Campaigns

www.dynalyst.io

Re-Targeting 世の中には難しい単語がいっぱいありますね。
Dynalystはアドテクでいう DSP というところです。世の中には難しい単語がいっぱいありますね。
CAのアドテクではScalaを採用しているプロダクトが多くDynalystもScalaを採用していました。

働く環境

最高でした。広い作業スペースに良い椅子に最高でした。
渋谷駅のマークシティ最上階(23F)でした。毎朝渋谷を見下ろせます。
住む場所はサイバーエージェントのエンジニア男性のみしかいないシェアハウスでした。 会社には徒歩で着くので電車乗らなくて済みました。 adtech studioっていうおしゃれなとこでした。

www.youtube.com

フットサルみたいなかっこでずっと通っていたらスポーツしに来たのってめっちゃ言われました。
それ以外服をもってきていなかったのです...

使った技術

詳しいことは書きません。

Scala

Scala初体験でした。 もともと関数型プログラムには少し興味があったので大きめのScalaのプロダクトに触れれるのは楽しみでした。

Akka Streams

これは楽しいやつです。
Akka界隈もScala界隈もわからないんですが、きっと結構新しくてわくわくするものだと思います。

doc.akka.io

f:id:utam0k:20180324170657j:plain
うまいすき焼き

行く前にやったこと

カラーコップ本

個人的にはすごいH本のScala本という感じで面白かったです。
Scalaの関数型としての側面です。

book.impress.co.jp

コップ本

知人にこれやったほうがいいと進められて14章くらいまでやりました。
カラーコップ本を先にやりましたが、おそらくこちらを先にやるべきでした。

book.impress.co.jp

Akka http

ちょこっとだけやりました。

doc.akka.io

やったこと

前菜

土日や終業後の時間を使ってDynalystのコードを垣間見ていました。
やはり人間は隠されているものは見たくなるものです。
自分が見てる商品とかどうやってわかってるのかとか詳しく知りたくないですか!?
いままでのインターンだとWeb開発が多かったのでアドテク初体験なので楽しくやれました。
その代わりわからない単語や知らないことが多くて調べものもしました。
まずはチームWikiの初心者向けを探してとりあえず一通り読んでました。
あとはプロトコルのOpenRTBというのが割りとというかかなり肝だったので仕様や単語も眺めていました。

www.iab.com

最初の方はRFCで探してて見つからなくて泣いていました。
これからアドテクに関わる人は読んでおくとプロダクトのコードの変数名の意味等わかるかもしれません。

f:id:utam0k:20180324171140j:plain
うまいかつ丼

メインディッシュ

今回のインターン前回のミクシィとは異なり大きめのタスクを与えられて1か月でそれをこなしていくというスタイルでした。
多分どんなタスクになるのかは配属される部署やメンターさんによって異なると思います。
僕のタスクは既存の基盤をAkka Streamsで再実装して置き換えるというものでした。
アドテクでは大量の処理を高速に処理する必要があるためいろんなことを並列にして高速で処理する必要があります。
僕のもAkka Streamsで並列で処理してQPSを目標のところまで上げないといけませんでした。
動く物自体は割とすんなりすぅとできました。
しかし、QPSが目標値まででない...
そして始まる並列処理のデバッグ...
そして、Akka Streamsは様々な部品(Source, Flow...)で構成されていて1つ1つがマイクロサービスぽくなっているので
さらにデバッグが難しくなりました(⋈◍>◡<◍)。✧♡
ここからではかなりいろいろな知見が得られました。
スレッドダンプ初体験でした。

f:id:utam0k:20180325171222p:plain

完成しないと島根に帰れないとところでした。(冗談だったと思います。たぶん。)

感想

今回のメンターさんが新卒の方でした。
僕のイメージだとインターンのメンターさんはベテランの方と思っていたので最初はびっくりしました。
以前の就業型の場合だとメンターさんもある程度その部署にいて使う技術に触れ続けているので、てきとーに質問してもこっちの意図を理解してもらうことができました。
今回のインターンだとしっかり問題の根本について自分の頭のなかで整理してから伝えるようにしました。
この辺はかなりよい経験をさせていただきました。

Scala初挑戦でした。
implicitワカラン...

個人的にはアドテクの技術分野について知識がなかったのでめっちゃ面白かったです。
めっちゃアクセス来るのを生で見れたりする体験はなかなかできないので楽しかったです。

また、Dynalystは営業の方々がすぐ近くにいたり、朝会を一緒にしていました。
数字にストイックな感じはなかなか体験できないので面白かったです。

Dynalystはインターン生初受け入れとのことでした。
Scala初体験のインターン生を快く受け入れていただきありがとうございました。
お世話になりました。

f:id:utam0k:20180324171620j:plain
うまい担々麺

おまけ

チームのエンジニアさんが僕のインターン期間中にCircleCI2.0を傷つけていました。