AbemaTVのBackend Teamでインターンした話
2021年5月11日〜2021年5月31日で,CyberAgent が企画する就業型インターンシップ CA Tech Job に参加していました.
私は,AbemaTV の PBU開発局 / Backend Team に配属され,開発を行っていました.
今回はこのインターンの振り返りをしていこうと思います.
選考の流れ
私の場合,募集要項の選考フローとは少し順序が違い,
- ES
- 人事面接
- エンジニア面接
といった流れでした.
人事面接後に受け入れ候補の事業が「ABEMA」であることが伝えられ,エンジニア面接では「ABEMA」のエンジニアの方に面接していただきました.
人事面接・エンジニア面接ともに,受け答えがしやすい雰囲気を作ってくれているように感じました.
配属先について
株式会社 AbemaTV とは,「ABEMA」というサービスを持つ会社です.
「ABEMA」は、2016年4月に本開局した、テレビ&ビデオエンターテインメントとして展開する動画配信事業。国内唯一の緊急・速報をはじめとした 24 時間編成のニュース専門チャンネルや、オリジナルのドラマや恋愛リアリティーショー、アニメ、スポーツなど、多彩な番組をお楽しみいただけます。
PBU とは,Premium Business Unit の略で,主に認証周りや課金回りを担当している開発局のことです.
私は,その PBU 開発局 の Backend Team に配属されました.
やったこと
主に認証改善系のタスクを行なっていました.
使用技術
インターンの中では,以下のような技術を使用しました.
- Go 言語
- gRPC
- gRPC gateway
- Spanner
タスク
認証改善周りの以下のようなタスクを行なっていました.
-
管理者側 API の実装
-
HTTP middleware の実装
特定の API レスポンスをキャッシュするために.Cache-Control ヘッダーを適切に設定するような middleware を実装しました.
- native 用 Content-type の対応
application/protobuf でやりとりできるように,gRPC gateway に Marshaller を追加しました.
- proto ファイルへのレスポンスの追加
定義されていなかった異常系のレスポンスを追加しました.
- エラー伝播周りの実装
レポジトリ内で定義されている private error を適切な gRPC status codes に変換するような interceptor を実装しました.
- コード生成系のコンテナ化
各開発者の clang-format や protoc のバージョンの違いにより,生成するコードに diff が発生してしまっていたため,コード生成系のためのコンテナを作成し,コンテナ内でコード生成を行うようにしました.
学んだこと
技術面
技術面ではかなり多くのことを学んだので,いくつかピックアップします.
- 認証周りの知識
認証の流れや,セキュアにするためにはどのような処理が必要なのか,実際に Go 言語を用いてどのように書くのかなどを学びました.
認証周りはなかなか触れることのできないセンシティブな部分だと思うので,とても良い経験になりました.
- 保守性や可読性を高めるための知識や方法
functional option pattern や,DI パターンなどを学びました.
- Go 言語に関する知識
「loop variables は同じ pointer を使うため,気をつけるべき」といったことや
「struct は embed したからといって親子関係ができるわけではないので気をつけるべき」といったことなどを学びました.
- Spannerに関する知識
Spanner がどのようなものかや,そのメリットやデメリット,使い方などを学びました.
- gRPC(gateway)に関する知識
gRPC(gateway)の使い方や,実装に必要な部分に関してはコードを読んで内部実装などを理解しました.
技術以外の面
- 大規模プロジェクトの動き方
「ABEMA」という大規模プロジェクトに携わることができたので,どのように大規模プロジェクトが進んでいくのかなどを経験することができました.
- 何でも話せる環境の重要さ
私が配属されたチームが気軽に話せる雰囲気だったり,トレーナーの方に気軽に質問することができたので,「何をすれば良いのか分からない」といった状況がなく,進捗を生むことができました.
このことから.何でも気軽に話せる環境(心理的安全性)がとても大事なことを改めて実感しました.
感想
新型コロナウイルスの影響でリモート勤務になってしまったことが残念でしたが,技術的なことを学んだだけではなく,今までしっかりとは考えてこなかった将来のキャリアについて考える良いきっかけにもなったインターンでした!
1ヶ月弱という期間でしたが,関わってくれた人事の方々やトレーナー,メンター,チームの方々,本当にありがとうございました!