見出し画像

電通デジタルのインターンに参加してみた(2020年12月期エンジニアコース 中山)


この記事は大学院生である私が、2週間のインターン期間中に開発業務に参加し、学んだことや一日の様子、そして良かった点だけではなく、私が残念だと思った点も正直に紹介するものです。

自己紹介 👨‍💻

初めまして。電通デジタルで2020/12/01~2020/12/14の間インターンに参加していた中山です。
現在情報系の大学院M1で、研究では分散処理フレームワークであるApache Sparkの高速化を研究しています。

私の技術スタック 💻

はじめに自分のスペックを参考までに共有しておきたいと思います。

これまでのインターンの経験は、3週間の開発系就業型のインターン、2週間のハッカソン形式の開発インターンです。

前者はサーバサイドエンジニアとしてGo, Swaggerを用いた開発、
後者はサーバサイド・インフラエンジニアとしてGo, Swagger, AWSを用いた開発部分を担当していました。

これらインターンの経験、それ以外の学校の授業や自主開発を含め、私の技術スタックは以下のようなものになります。

- フロント: React
- サーバ: Go
- フレームワーク: Swagger, gin
- DB: MySQL, Dynamodb
- インフラ: AWS, EC2, ECR, CodeDeploy, GitHub Actions
- その他触ったことある言語: Python, C++, Ruby, Scala, C, Swift, Java...

上記のインターンで利用したことがある技術以外は、趣味や友人との開発で触ったことがある程度になります。

インターン参加の動機

次に、今回このインターンに参加した動機を述べます。

このインターンへの志望動機は、いわゆる大企業のグループ会社に当たるような会社でエンジニアはどんな仕事を実際に行っているのか知りたいというものでした。

正直、参加前に思っていたイメージと実態はかなり違うものでしたので、そういった点を後ほど伝えられたらと思います。

インターンの概要 🖊️

- 期間:2020/12/01(火)~2020/12/14(月)
- 時間:9:30~17:30
- インターンシップの種類:就業型
- 報酬:10万円
- 支給物:PC(MacBookPro 13インチ 2020 JIS配列)💻, iPhone(希望者, テザリング用) 📱 , USBハブ
- 実施方法:完全オンライン 🏠

今回のインターンは、電通デジタルの開発部に参加し開発メンバーの一人として社内向けプロダクトのサーバサイド部分の開発を行うものでした。

インターンの詳細 📝

それでは、ここから具体的に2週間のインターンでどのようなことを行ったのか紹介します。

配属されたプロジェクト 👨‍👧‍👧

今回のインターンでは電通デジタルが社内・電通グループ向けに内製で開発しているプロダクトのコードを実際に書くものでした。

電通デジタルでは、電通グループが行ってきた広告代理店業務の中に存在する、これまで人が手動で入力してきた箇所を自動化し、効率的に行えるようにするための全社向けプロダクトを開発しています。

実際のタスク 📑

今回のインターンでの自分のタスクは、既存のプロダクトのサーバサイドのコードをPythonで記述されていたものからGo+gRPCに書き換えるというものでした。

私自身、gRPCを触るのは初めてであったため、幾ばくかの不安を抱えながらインターンに臨みましたが、期間中メンターを担当してくださった社員さんの手厚いフォローアップもあり、なんとか0から既存のAPIを置き換える部分まで実装することができました。

なかなか実際の就業型インターンにおける作業内容は想像がつきにくいと思いますので、実際のインターンにおけるとある1日を紹介したいと思います。

インターンのとある1日

09:30 作業開始 🖥️
朝はSlackのチャンネルで出勤報告を行うことから始まります。
インターンの活動時間は毎日9:30~17:30でした。7時間業務は短い方なのかなと思います。

10:30 メンターさんと通話をつなぎながら、分からない部分を教えてもらう 📲
分からない箇所がある場合はSlackを利用してメンターの方と相談しながら進めていました。
相談し合う際にはSlackの通話を利用して画面共有しながら相談することもありました。

12:00 お昼休憩! 🍖
特に12時からという決まりはなく、11:30~14:00ぐらいの間で1時間好きなタイミングでお昼休憩を取れる形でした。

13:00 開発共有会(聴講)👨‍👩‍👧‍👦
定期的に行われている開発部内の技術共有会でした。メンバーの方が新しい技術などを紹介し、参加者内で議論するものでした。

14:00 Retrospective 参加 👨‍👩‍👦‍👦
KPTフレームワークを用いて、1週間の作業の振り返りを行っていました。
リモートワークになる前は実際に付箋を用いて行っていたそうですが、現在はGoogle Jamboardを利用して行っていました。

15:00 Sprint Planning 参加 👨‍👩‍👧‍👧
次の1週間でどんなタスクを行うのか検討するものでした。

Jiraのアジャイルボードを活用しながら、今週1週間のタスクの完了具合を確認してスプリントを締めたり、次の1週間で行うタスクを洗い出したりしました。また、この会議で細分化されたタスクにかかる工数の検討も行います。

16:00 開発再開 🖥️
作業に復帰し、自分に与えられたタスクを再開しました。

17:00 Daily 参加 👨‍👩‍👦
その日一日の作業を振り返る会です。口頭で一人ずつ、その日行った作業の報告を行います。

17:15 日報記述 📝
インターン期間中はesaを利用して、日報をつけていました。日報は事前にテンプレートが用意されてあり、気軽に書けました。

17:30 終業 🏡
Slackで退勤報告、TeamSpiritの勤務表に必要事項を記入して1日の作業は終了です!

開発部ではScrum開発を採用しており、上の一日はスプリントの終了日の例となります。そのため、1週間の振り返りを行ったり、次の1週間のスケジュールを組んだりと、会議が多めで忙しい1日ですが他の日にはほぼ開発のみの日などもあり、1日の忙しさは割と日によります!

インターンで学んだこと 📑

今回のインターンではコーディングとチーム開発の両面で多くのことを学びました。
コーディング面では下記のような内容を学びました。

- gRPC+Goのサーバサイド構築、gRPC, gRPC Gatewayの概念の理解
- Dockerを用いた開発&デバッグ
- Clean Architectureを用いた実装
- Mockを利用したテスト

リポジトリのInitial Commitから担当させて頂いたgRPCのサーバ構築では、protoファイルの書き方から、普段開発部内で使っているgRPC用のデバッグツール、Clean Architectureに添ったコードの実装、Mockを利用したテスト記述まで一通りを体験することができました。

また、Clean Architectureは開発チームによってそれぞれの層にどのような処理を記述するかブレがあるものですので、電通デジタルの開発部的な考え方を学びつつ、ドキュメント化されている内容に添いながら実装しました。
ここで改めてドキュメント化しておくことの大切さを学びました。

また、チーム開発の面では初めて本格的なスクラム開発の現場に参加させてもらうことで、スクラム開発の進め方、1週間に一度行うイベントの大切さ、JIRAの活用など多くのことを学びました。

インターン参加前からスクラム開発自体は知っていましたが、Sprint Planningに時間を割く量や、スクラムマスターの大切さなど感じ、改めてエンジニア組織の運営はただコードを書くだけではなく、他の部分で大切なことが多くあるのだなと感じました。

インターンの感想&振り返って...

インターン参加前と参加後のイメージ 💭

今回のインターンは参加の動機でも述べたように、電通という大企業のグループ会社におけるシステム開発職はどのような仕事をしているのかなという思いでした。

参加前の仕事内容のイメージは、電通からプロダクトの設計書が渡され、それを元に詳細設計を行ってさらに下請けの会社に流すようなものでした。(実際はインターン面接の際に社内、グループ会社向けのプロダクトを自社開発しているという説明は受けます)

しかしインターンに参加した結果、この認識が間違っていたことに気づきました。

電通デジタルの開発部では、電通グループ内で主にデジタルコンテンツ(インターネット広告、ECサイト、コーポレートサイトなどに代表される)に対する広告事業全般を担当していました。そして、これまでにも何度か述べているように、現在は電通デジタル社内・グループ会社向けに、これまでプランナーと呼ばれる方々が手動で行っていた広告予算の配分などを自動化するプロダクトや、それら社内プロダクトの基盤を支えるAPI、データインフラの開発を内製で開発しています。

このため、参加後のイメージは、電通デジタル内部に開発部が存在し、そこでの開発文化はいわゆるWeb系企業とあまり変わらないものというものです。

参加してよかった点 😊

上記のイメージについて書いた通り、電通デジタルの開発部の仕事は私がインターン前にイメージしていたものとは全く違い、インターンで学んだことでも述べたようなScrum開発をばりばり活用してgRPC, Goを用いてマイクロサービスを採用している会社でした。

今回のインターンはいい意味で当初の期待が裏切られ、モダンなWebアプリケーションのバックエンド開発とチーム開発を学ぶことができて非常に良かったと感じました。

残念だった点 🤔

ここまで散々褒めちぎってきたので、最後にインターンを行っていまいちだったと思うポイントを何点か上げておきます。

Clean Architectureの実装に関しては私自身一度軽い経験があったため、あまり詰まりませんでしたが、はじめは口頭の説明しかなく、別リポジトリのコードを参考にする必要が大いにありました。

インターン中盤にドキュメントの存在が判明し、改めてドキュメントを見てみると、自分の現状の実装がある程度合致していることが分かり、無事PRのマージまで進めました。

後からメンターの方に聞くと、そもそもそのドキュメント自体存在を知らなかったと言うことだったので、開発組織が出来上がってから日が浅いことに起因する問題なのかなと感じました。

また、実際の開発を体験するには2週間はやはり短いと感じました。ある程度プロダクトが何をしているのか理解したり、コードの中身を理解したり、開発環境を用意したりと色々経験してある程度開発に慣れてきたなと思う頃にインターンの最終日がやってくる印象です。

開発風土やコーディングがある程度学べる一方でどうしても短期のインターンではプロダクトやコーディングの深い理解には至らない印象でした。

ただ、リモート開催のインターンにも関わらずPCセットアップがかなりしてあった点と社内Proxyを使う環境でないおかげか、開発期間中に環境依存の問題にはほとんど遭遇しなかった点は非常に助かりました。(唯一注意点として上げたいのは、Dockerを使った開発を行う場合はクラウドセキュリティソフトには注意しましょう・・・)

結び

今回のインターンのためにPCのセットアップから詳細な解説付きタスクの準備まで多くの時間を費やしてインターンの受け入れを担当してくださったメンターの関本さんと石原さん、インターン開始前から終了後まで多くのバックアップを頂いた人事の井上さん、そしてインターン期間中色々とお世話してくださった開発部の皆さんに改めて感謝を述べて、私の電通デジタルインターン体験記を締めさせていただきたいと思います。

最後まで本記事を読んでいただきありがとうございました。


採用情報

 本記事を読んで、電通デジタルに興味をもたれた方は下記をご確認ください。

①22年卒の学生について
電通デジタルの本選考エントリーはこちらからhttps://job.axol.jp/cr/s/dentsudigital_22/entry_2210101115/

②23年以降卒業予定の学生について
21年以降のインターンの開催については未定ですが、ご質問やお問い合わせについてはこちらにご連絡をお願いいたします
newrec_inner@dentsudigital.co.jp
※アットマークは大文字になっていますので、小文字に変更してください

③中途採用について
ソフトウェアエンジニア(サーバーサイド)
ソフトウェアエンジニア(SRE、サイトリライアビリティエンジニア)
ソフトウェアエンジニア(フロントエンド)


みんなにも読んでほしいですか?

オススメした記事はフォロワーのタイムラインに表示されます!