こんにちは、@p1assです。
前々から Twitter を見てくれていた人はわかるかもしれませんが、3 週間ほど CyberAgent の AbemaTV というサービスでインターンをしてきました。
AbemaTV でインターンした理由
CyberAgent は沢山の子会社を持っていて様々なサービスを提供しているのですが、その中でも AbemaTV に行きたいと思った決め手は、
- 自分が使っているサービスである
- 大規模なサービスである
- 技術スタックが合っている
の 3 つでした。
いまいちドメイン知識がないサービスでインターンするよりも学びが多いと思いましたし、絶対に落とせない大規模なサービスを作る環境に身を置くことで、品質の高いコードを書けるようになれるのではという思いがありました。
そのため、 「サイバーに行くなら AbemaTV しか有り得ない」 いうレベルで AbemaTV に行きたいと考えてました(そして実際に行くことができました)。
AbemaTV でしたこと
自分はプロダクト開発チームというユーザー側・管理側両方の API などを担当するチームに配属されました。
自分はその部署で、運用側からの要望を聞いて、仕様や設計を考え、実際に実装をするという一連の流れを丸っと行いました。
詳しいことを書いて良いのか分からないのでふわっとした感じで言うと、「SNS から番組への流入を増やしたい。今のメタデータだけでは不便なので、自由度高く設定できないか?」という感じの内容でした。
これだけ聞くと簡単に思えるかも知れませんが、番組情報は AbemaTV のコアとなる部分で、様々なマイクロサービスやクライアントから使われています。そのため、後方互換性を保ちながら新しいデータ構造に移行していく必要があり、さくっとフィールドを修正して終わりではないタスクでした。
タスクで行った作業のうち、特に印象に残っているのは DB のデータ移行です。 AbemaTV では MongoDB をメインのデータベースとして使っているのですが、今回のタスクに伴い旧フィールドのデータを新フィールドへコピーする必要がありました。最初は mongo shell 上で移行のコマンドを叩こうとしたのですが、データ数が多く、全てのデータを移行するのは 数十時間かかる見込みでした。流石にこれだけの時間をかけてやるのはしんどいということで、bulk update でデータを移行するスクリプトを書いたところ、10 分程度 完了することができました。冪等性を担保する書き方など、とても学びが多い作業でした。
他にも、メモリリークや DB のセッションの持ち方、goroutine 内で panic が起きた時の対処など、今まで考えたことがなかったことを多く学ぶことができました。
また、最後の 3 日間では 5 つの gRPC の rpc と 5 つの JSON API を設計・実装して、それに関連する DB 処理や負荷対策のためのキャッシュの実装、API ドキュメントなどを爆速で終わらせました。3 日間で出した PR の合計 additions は 2000 行を超えてた気がするので、我ながらよく頑張ったなと思ってます。送別会に行く 5 分前まで dev 環境で検証していたのはいい思い出です。
インターンの待遇とか
宿
会社が持っているシェアハウスに住まわせていただきました。リビングやキッチンなどは共用ですが、1 人ごとの個室はちゃんとあるので、プライベートの空間はちゃんとあります。Abema Towers までも徒歩 5 分くらいので、ギリギリまで寝てられます。
ただ、9 月末でシェアハウスはなくなってしまうので、今後はどうなるか分からないです。
ご飯
朝と夜は自分でなんとかしていましたが、ランチに関してはほとんど社員の方々に連れて行ってもらいました。
チームランチや人事主催のシャッフルランチなど、色んな方と交流する機会があり、ただ働いているだけでは分からない他の部署の話を聞くことができました。
自分の財布を開けたことが片手で数えても余るくらいの回数しかなかったので、本当に感謝です 🙏
報酬
時給は 1500 円です。すごい高いわけじゃないですが、一般的(?)な価格帯だと思います。 宿を自分で払う必要がなく、ランチも実質無料だと考えたら十分です。
ちなみに、定時は 10 時~19 時で休憩 1 時間です。インターンでは珍しいかも知れませんが、残業が出来て、ちゃんと割増賃金が出ます。 自分は 8 時間以上働いてもパフォーマンスが出ないことが分かりきっていたので、ほとんど定時で帰っていました。
少し気になったところ
インターンの途中にあった面談では、「困ったことは特にありません!」と言っていたのですが、改めて考えてみて思いついたことを書いておきます。
モニターが 4K じゃない
これは自分が貰ったモニターがたまたま 4K じゃなかっただけかもしれませんが、文字の見やすさなどが段違いなので、できたら使いたかったです。
シェアハウスの wifi が弱い
これは本当に致命的です。シェアハウスで AbemaTV を見るのが難しかったです()
渋谷人が多い問題
もう CyberAgent 関係ないんですが、なんであんなに人が多くて臭い土地に IT 企業が集まるんですかね??
東京にはもっと良い場所はないんですか?
まとめ
長々と書きましたが、AbemaTV のインターンを通して多くのことを学ぶことができて、本当に満足しています。
トレーナーさんを始め、皆さん本当にお世話になりました 🙏
おまけ
深夜のラブホ街のど真ん中に集まるオタク
初夏フェス