nend・nex8のエンジニア・技術ブログ2018-03-22ScalaのSくらいしか知らなかったモバイルアプリエンジニアですが、はじめてサーバーをつくりましたこんにちは、はじめましての方々ははじめまして。3月5日〜3月9日まで1週間のインターンという形でお世話になりました。タイトルにもある通り今まで僕はAndroidのアプリ開発を中心に行ってきたいわゆるモバイルアプリエンジニアですが、Scalaへの興味とバックエンドエンジニアリングというまだ見ぬ領域について知りたくて今回のインターンに参加させていただきました。その参加レポートを書かせていただきます。frameworkとFinagle(Finch)を使ったSSPの構築1日目1日目はアドテク業界とアドテクサーバーの仕組みについて少し教えていただいた上で1週間のテーマを選定、その後ドワンゴ様が提供しているScala新卒研修テキストを頼りにScalaをおさらいしました。聞いたところ、社内にはDSPに携わる方々は多い中、SSPに携わっている方は少ないこともあって、SSPを異なるフレームワークやライブラリを使ってベンチマークをする人がいなかったとのことです。Scalaもあまり知らない上、アドテクについても全く知らなかったけど、せっかくインターンに参加するならわずかでも会社の役に立ちたいと思ってこのテーマをやらせていただきました。ちなみに、今回のSSPとDSPの実装仕様は以下のissueにあります。frameworkを使ってSSPを作ることからはじめました。半日使ってそれっぽいものを作っていた感じはしていたのですが、僕が半日かけて作っていたものはHTTPサーバーではなく、ソケットサーバーだったことを1日のほぼ終わりどきに気づいて頑張って作り直しました。最初は「やらかした」と思っていましたが、今となってはそれぞれの仕組みついて両方理解することができたので逆によかったなと感じます。3日目3日目は、前日のPlayサーバー開発の続き、超簡易型DSPの開発を行いました。淡々とPlayとScalaを知るだけでなく、Scalaらしい関数型としての書き方も教えていただきました。for式とyieldを使ったfor内包式のすばらしさにはとても感動しました。mapやflatMapはこうやって実現できているのかと。Scalaの素晴らしさを思い知らされた1日でした。4日目4日目はPlayサーバーのベンチマークテストとFinagleサーバーの開発を行いました。ベンチマークの結果についてはこの後書きます。Finagleはそのまま使うのではなく、基本的にそのラッパライブラリを使うものだと聞いたのでFinchを使って実装を行いました。はじめFinchを触って感じたことは、Playよりも応用がきいたライブラリなのか色々コードの自由度が高いなと感じました。JsonのパースもPlayの時のような最初からパーサーが付属されている感じではなく、circeなどのパーサーライブラリを使わなければならないことも自由度が高いと感じる部分でもありました。関数型に実装を近づけるならFinchだとということがよく分かりました。5日目5日目はFinagleサーバーの実装をギリギリまでしました。本当はこのブログも最終日に書かなければいけなかったのですが、僕のムチャブリで後日提出する形にさせてもらいました。ありがとうございます。褒められるほど綺麗なコードとまではいきませんでしたが、動くものが完成してベンチマークも行いました。最後はキリの良いところで終わることができたので良かったです。今回作成した2つのサーバーは僕のGithubにあげました。github.comgithub.comFinagleサーバーのベンチマークは後日酒井さんがプルリクエストを送っていただきました。88.00%また、Playサーバーのベンチマークです。83.00%確実な結果ではありませんが、Finagleで実装したサーバーの方が早そうです。最後に1週間と短い間でしたが、メンターとしてテーマやScalaについて真摯に教えてくださった酒井さん、他社員のみなさんありがとうございました。Scala、初めてのサーバーサイドでかなり苦労しましたが、多くのことを学ぶことができました。アドテク業界の奥の深さについても知ることができて、この業界の興味がとても湧きました。今後は自分でもっとScalaやデファクトスタンダードであるCatsについて勉強してしていくことで関数型についての学習を深めていきたいと思います。終えてどうも、僕です。え?知らない?それはそう。Aerospike×DynamoDBこんにちは、k_oomoriです。Are青山のアドテク会社。アドネットワークやDSPを開発・運用。サーバを止めてみたよ。インターン:実業務体験編インターンでCTR予測をしましたSearchArchiveスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。