はじめに
Supershipはマーケティングテクノロジー事業(インターネット広告事業など)とデータイネーブラー事業(検索事業など)を手掛けている企業で、今回私が参加したのはマーケティングテクノロジー事業のほうのアドテクチームの広告コースになります。
自己紹介
普段はセキュリティに関することをやっていて、Webに関しては、Web開発を少しやったことがあり、CTFのWeb問も何度かCTFに参加して解いたことがあったりするという感じのレベルです。
今回は広告技術やWeb開発を勉強する目的でインターンに参加させて頂きました。
目標
今回は2人1組のチームでSSPを実装することを目標としており、技術選定から行いました。
開発目標として、Level1からLevel3までレベルを分けて課題内容が用意されていました。
課題内容
課題内容はこちらのリンクから参照できます。
ざっくりとした内容を先程のリンク先から引用すると次のような内容となります。
- 前準備: 技術選定
- Level1: 媒体とSSP 間とSSP と DSP 間のやり取りの実装
- Level2: アドテクの基本的な集計指標である売上、impression 数、click 数をレポートする UI を実装
- Level3: 不正課金対策を行いつつ、より多くのリクエスト捌けるように SSP を改修
1日目
自己紹介、開発準備などを行いました
また、チーム分けの発表がされ、パートナーが決まりました。
2日目
開発が本格的に始まり、まずは課題の理解や技術選定などに取り組み始めました。
3~4日目
技術選定に関して、Level3におけるパフォーマンスの点で、Golangが優れているだろうとのことでGolangが候補の一つにありました。また、パートナーが実装経験があり、実装が比較的容易であると考えられたPHPも候補になりました。我々のチームではこの2つの候補で迷い、中々決めることができず、2つの言語で並行して実装することで、どちらにするかを決定しようとしましたが、この並列はチームの力を分散してしまい、あまり効率的ではありませんでした。最終的には4日目の昼にPHPと決定したのですが、技術選定と並列開発にかなり時間をかけてしまいました。
PHPを採用した理由としては、Golangに関する経験はお互いにあまりなく、限られた期間内に最後まで実装しきる自信が得られなかったためです。また、広告技術は今回のインターンなどでしか学ぶことができないので、PHPを採用することで最後まで実装しきり、広告技術を学ぶことを重要視しました。
私はPHPの経験がなかったので、パートナーに親切に教えてもらいながらLevel1の開発をしました。
5日目~9日目
最終的には、Level2及びLevel3の途中までやりきりました。
Level2の実装をしている頃にはPHPやLaravelにもある程度慣れてきました。
Level3に関しては、まずはパフォーマンスチューニングから取り掛かり、NginxやPHPの設定ファイルなどが開発用のものであったので、色々調べながら設定を変更しました。
不正対策としては、クッキーなどを用いてセッション管理を行ったりして行う予定でしたが、時間の関係上実装しきれず時間を迎えてしまいました。
感想
完走した感想としては、まず、土日やインターン終了後も大学院のほうの演習などが入っており、ほぼ休みがない中で取り組んだので体力的に少し大変な面もありましたが、結果として、Level3の途中まで到達でき、スキルとしても、広告技術、PHP/Laravel、Git/GitHub、Docker、パフォーマンスチューニングなどを学ぶことができ、非常に満足する結果を得ることができました。
途中、コードレビューを社員の方々から頂くことができたのですが、様々なことを指摘して頂き、非常に参考になりました。やはり、プロのエンジニアの方々からアドバイスなどを頂ける機会は学生にとって貴重なことだと思います。また、技術選定から開発まで適宜相談しながらではありますが、基本的に僕らが方針を決めることができたので、自由度の高さもこのインターンの魅力だと思いました。
最後に
2週間にわたって様々な面でサポートしてくださったSupershipの社員の方々に感謝申し上げたいと思います。貴重な機会を頂き、本当にありがとうございました。
チームのパートナーに関して、僕がPHP/LaravelやGit/GitHubの知識が足りず、様々な面で迷惑を掛けてしまったなと少し反省しています。また、PHPを採用したことで、当初、僕があまりタスクをこなせないことなどを心配してくださっていたことは非常に優しい方だなと感じました。自分としては、サポートのお陰でタスクもある程度こなすことができたので全く問題なかったと思っていますし、やはりPHPを採用してよかったと思いました。今回のインターンでは、最高のパートナーと組めたと思っています。ありがとうございました。
フィードバックを受けて
インターンの最後にフィードバックを頂くことができました。
自分としては、今回のインターンでWeb開発に関する知識などを数多く得ることができましたが、開発の世界の知識や技術はまだまだあるのでこれからもそれらを勉強していければなと思いました。