FANCOMI Ad-Tech Blog

株式会社ファンコミュニケーションズ nend・新規事業のエンジニア・技術ブログ

1週間のSSP構築インターン by Scala を終えて

どうも、僕です。
え?知らない?それはそう。はじめまして倉林です。
5日間のScalaを使ってのSSP構築インターンということで色々やってきましたが、技術の突っ込んだことを書くとどうせ間違ったこと書きそうで怖いのでやったことを日記みたいな感じにまとめたいと思います。

この5日間でやったこと

1日目

Scalaはほんの少しだけ触ったことがあるくらいで、書き方に困ったら関数型ガン無視の脳筋コードを書くレベルです。
サーバーに関してもいじったことはないので、仕様書を渡されてまず何をするかを考えました。
「とりあえず、サーバーに必要なものを打ち込んでいくべ」的なノリで必要なもののインストール作業から入りました。(のちにこれが裏目にでる・・・)

今回、使ったのは
scala : 2.12.2
Play Framework : 2.6.18
です。

2日目

この日でSDK -> SSP -> DSPの流れを想定したリクエスト、レスポンスの受け渡しの大枠ができた感じです。
ただ、Scalaの非同期処理についてまったく理解ができていなかったので電車と自宅で頑張ってました。なお結局理解ができなかった模様。
この日はそこまで進捗という進捗を出すことができなかった。

3日目

この日は非同期処理で苦戦してました。
Future[List[Future[Hoge]]]みたいなネストした型をどう処理するかとかで悩んでたのですが、色々な方にフォローを受けながらなんとか解決をして仕様を完全に満たしてないですがローカル環境でリクエスト、レスポンスのできるSSPを作れました。
ひとまず安心して、整理のためにPlayで自動生成される使わないファイル群を削除したら。。。

Unexpected exception
ProvisionException: Unable to provision, see the following errors:
1) Error injecting constructor, Configuration error: Configuration error[Cannot load class filters.ExampleFilter]

ふぁーーーー!!!消したファイル別に使ってないやんけ!!!!って心で叫んでました。

まぁ、conf/application.confファイルのExample.Filterをenabledにしたら直ったんですけどね。
どうでもいいところで時間を取られた。。。
でもこういったエラーにはこう対処するって知識はめっちゃ大事だと思うので逆に今回で知れてよかったと思うことにしました。
つーか、Play2.6のリファレンスくそやんな。

4日目

寝坊しました。
この日は一番Scalaを書いた日です。
正直、Play使ってると便利すぎて毎回決まり切ったコードしか書かないような感じになってしまうのですが(個人の感想)受け取ったレスポンスに対する処理とかは紛れもなくScalaでした。
Optionをどう使ったらよいか、いかにScalaらしく書くかなどを考えさせられる1日でした。
普段はJavaを書いているのですが、Scalaに触れてみるとこんな書き方ができるのか、イミュータブルになるとどんな利点があるのかなどを調べたりして他の言語とはまた違った興味深さや面白さがありました。

5日目

実際に本番環境に移してテストをする日です。
ここまでは思ったよりも順調(そんなことはない。)だったのですが、いざ本番のサーバーに移して実行するとまぁ動かないこと。
サーバーにインストールしたsbtのバージョンが悪かった、そもそもコードの書き方が悪かった(ブロッキング、ノンブロッキングをここで知った)etc...があり、なかなかうまく動かず、社員の方につきっきりになってもらい最終的にしっかりと動くものが作れました!!!
ただ、動くものは作れたがここからどうパフォーマンスをあげていくのかなどのことを考えたら「ここからがめっちゃ楽しいじゃん!」という気持ちになりました、いつもは単に動くコードを書くということだけを考えていて、どういう処理にしたらより高速になる、どういう非同期処理にしたら効率よくリクエストが捌けるなどは考えたこともなかったのでとても新鮮で面白いと感じました。

最後の方はこの記事を書くのだったりでバタバタしてしっかりしたSSPのテスト結果とかは用意できなかったです。ごめんなさい。
あ、ブランチでよいのならGithubのURLをあげておきます。
github.com

これ書いているときはまだ最新版をpushしていない罠
まだ自分なりに書き直したりしたいのでこれで許してください。

感想

5日間という短い時間でしたが、内容の濃く、楽しいインターンにすることができたと思います。
普段耳にするけど実際に触れたことのないアドテクについて触れられてとてもよかったです。
社員の方々も色々教えていただき本当にありがとうございました!!!
ここで学んだことをこのインターンで終わりにしないで、自分なりに復習して他でも活かせるように今後も努力していきたいと思います!
本当にありがとうございました!