見出し画像

CA Tech Dojo(Go編)という最高のインターンで最優秀賞を頂いた話

はじめまして、からまるです!

先日CyberAgentさんが主催する「CA Tech Dojo ~Go編~」に参加し、最優秀賞を頂くことがことが出来ました🏆

3週間という決して長くはないインターンでしたが、そこで出会った人達との繋がりの中で技術的・人間的に成長できたこの経験は、時間では測れない程自分の中で大きなモノになりました。

今回は備忘録・アウトプットの一環として、インターンでの経験の振り返りをしていきたいと思います!

結論、運営である人事の方・CAエンジニアであるメンターさん・参加学生と、全てにおいて最高のインターンだったので、少しでも多くの人に知っていただけたら幸いです💭

スクリーンショット 2020-09-14 22.58.37

CA Tech Dojoについて

「CA Tech Dojo」とは、株式会社サイバーエージェントが開催する育成型のエンジニアインターンです。
詳しくはGottyさんの記事をご覧ください👀

参加した13名の学生のほとんどは(私も含め)Go言語に触れたことがないという状況でしたが、このインターンを通して簡単なゲームAPIを実装できることはもちろん、メンバーそれぞれが+αのスキルをつけることが出来ました。

インターン内容の概要

具体的なインターンの内容は以下の通りです
・インターン開始前に各自でGo言語の基礎文法を学習(A Tour of Go)
・初日はメンターさんと共にAPIをハンズオン形式で実装(tutorial)
・2日目以降、いくつかのAPI処理が「基礎課題」として発表され、個人で取り組む
・基礎課題が終わった学生から、各々が突き詰めたい・課題意識をもった箇所を「発展課題」として取り組む

上記の通り、基本的に個人で開発するという点や、発展課題では各々が課題設定をしていくという点で、学生主体で技術力向上・課題解決するようにデザインされています。(これが自走力でしょうか👀)

また、実装で分からない所・詰まった所がある場合には、CAでエンジニアとして活躍しているメンターさんに質問・相談できる様になっており、迅速で手厚く温かいその対応には何度も救われましたし、社員さんのインターンへのコミット量に驚かされました👀

画像5

自己紹介&参加経緯

ここから具体的な参加経緯や内容に触れたいと思います。
まず簡単に自己紹介させてください🐶

私がプログラミングを始めたのは大学1年生からで、長期インターンや個人開発で主にRubyonRailsReactNativeを用いてwebサイトやアプリの作成をしていました。

しかし、大学3年生になり就職を考え始めてから自分のスキルの無さ・視座の低さを自覚し、「サーバーサイドエンジニアとしてやっていけないのではないか」と不安に思うようになりました。

また、ある模擬面接で「君はエンジニア向いてない、やめたほうがいい」と辛辣な意見を頂いた直後だったということもあり、エンジニアを続けるかどうかも迷っていたぐらいでした。

そんな中見つけたのが、学生の成長にスポットした「CA Tech Dojo」というインターンです。

憧れであるCAエンジニアの貴重な指導の元、優秀な学生と共に切磋琢磨することで技術力を向上させ、「サーバーサイドエンジニアです」と胸を張って名乗れるようになりたいという想いから応募しました

後日談ですが、ここで何かの結果・賞を取れなかったら本当にエンジニアを辞めるつもりだったので、文字通り人生を賭けて望みました。

インターンの目標&意識した事

合格した後は、恵まれた環境を最大限活かすためにインターンでの目標を明確化しました。(人事の方にもお世話になりましたmm)

インターン参加前から機能実装ができるだけのエンジニアから脱却したいと強く思っていたので、「+αを積極的に考えられるエンジニアになる」という目標を定め、その具体的な行動として以下を意識しました。

スクリーンショット 2020-09-14 2.20.32

基本的な機能実装の先にある保守性やユーザビリティという「+α」に着目し、長期的に運用しやすくゲームとしても面白いプロダクトの作成を目指しました。また、優秀な学生さん方と交流できる機会も貴重なので、特にチームメンバーとは深い交流を意識しました👀(あとは全力でゲーム開発を楽しむこと🔥)

実際にやったこと

前置きが長くなりましたmm
ここからは私がインターンで具体的にどんなことを行ったのかについて記述します。

[1週目]
チュートリアルとして1つのAPIをメンターさんと作った後、いくつかの与えられたAPI(基礎課題)を実装しました。

基礎課題の内容についてはネタバレになるので深く言及はしませんが、ユーザー情報のやりとりやガチャロジックの実装など、ゲーム開発の基本となるAPIが用意されていました。

[2~3週目]
基礎課題が終了してからは、上記した「+αを積極的に考える」という目標の元、発展課題に取り組み始めました。

以下ジャンル毎にやった事を紹介したいと思います。

スクリーンショット 2020-09-14 3.05.31

①レイヤードアーキテクチャの実装
[目的]
・仕様変更に強くテストしやすい・保守運用しやすいアプリを目指す
[実装]
レイヤードアーキテクチャ+DDDの構成に変更
・自分なりの理解をqiitaにまとめたので、気になる方は見てみてください👀
https://qiita.com/karamaru/items/74880b29a054bdeb356c

②テスト・リンターの導入・自動化
[目的]
・ヒューマンエラーをテスト・リンターで未然に防ぐ
[実装]
CircleCiを用いてテスト・リンターの自動化
・リンターはgolangci-lintを使用
・全てのレイヤーをgomock/sqlmockを用いてテスト
テーブルドリブンテストの採用

③パフォーマンスチューニング
[目的]
・ゲーム特有のアクセスの多さに耐える
[実装]
・クエリ呼び出し量削減(n+1解消/contextの有効活用)
redisキャッシュの使用
・不変のマスタデータは変数で保持

④ゲーム機能拡張
[目的]
実際のゲーム運用を想定する
[実装]
・Banユーザー追加とアクセス拒否
・確率アップのPickUPガチャアイテム追加
・Slackへ毎日DAU/MAUなどを通知するbatch処理追加
・ログ周りの修正

以上がやってきたことです。
ただ機能実装をするだけでなく、その先にある保守性やユーザビリティなどの「+α」を加えようと試行錯誤した結果です

インターンの雰囲気&振り返り

運営である人事の方・メンターであるCAエンジニア・学生それぞれの熱量・優しさがえぐいです。

[運営・人事の方々]
インターン開始前の面接や、目標を明確化するための面談でお世話になりましたmm

当時の僕は「これからどんなキャリアを歩みたいか」「中長期的な目標はなにか」「自分に何が足りていないのか」などの質問に黙り込んでしまう始末でしたが、それに対して「過去の体験・思想からこんなことが言えるんじゃない?」「さっきの発言からこんなことを大事にしてるんじゃないかな?」など積極的に思考の言語化を手伝ってくださいました

他社での面接などで人事は怖いイメージがあったので、CAの人事さんとお話した際は「これが真の人事か😭」と優しさに感動した記憶があります。

目標設定や将来像の具体化はもちろん、全体進行も含めて、このインターンでの経験をより豊かにしていただきました、ありがとうございましたmm

[メンター(CAエンジニア)の方々]
メンターとして協力してくださったSGE(CAのゲーム&エンタメ事業部)のエンジニアの方々には、質問PRレビュー面談など様々な面でお世話になりました。

まずメンターの方々には、実務(SGE)がある中我々学生のサポートしてくださったことに感謝申し上げますmm

レビューが早く説明も丁寧で、熱を持って温かく接してくれたことから、雑なPRは投げない様に意識するなど、その対応に見合った成長・努力をしようと思えました。

このような手厚いサポートを通して、技術面で成長出来たことはもちろん、CAのエンジニア環境を知れた貴重な経験になりました。インターンということでレビューはかなり手加減をしていただいたと思うので、いつかハードモードにも挑戦できるようなエンジニアになりたいと思います🔥

[参加学生]
優秀成長に前向きな方が多かった印象です。
中にはAtCorder最強の人や、Googleなどの有名企業インターン経験者、スタートアップで実務経験ゴリゴリの人などもいました👀

インターンは質問・交流のしやすさから4チームに分かれるのですが、私のAチームは途中から急に仲が良くなり、最終週では毎日深夜にもくもく会(勉強会)を開く程でした。

進捗状況やわからないことをお互いに相談できる仲間がいるということは心理的にも技術的にも支えで、仲の良いチームは強いんだなと強く実感しました👀

スクリーンショット 2020-09-17 13.27.18

結果&今後

始めに定めた「+αを考えられるエンジニアになる」という目標の元3週間頑張った結果、🏆最優秀賞🏆を頂くことが出来ました🎉

身に余る光栄。。。今でも嬉しいです。これから景品のぬいぐるみが届くらしいのでめっちゃ楽しみです!!(ずっと欲しかった)

実務を想定した「+α」を考え課題設定し、それに対するPRを出すというサイクルを人一倍回したという活動量や積極性を評価していただけたみたいです。

サーバーサイドとしてやっていけるのだろうかという不安から、3週間で全てを吸収し、少しでも「サーバーサイドエンジニア」に近づきたいと精一杯頑張った結果だったので、賞を頂いた時は認められたような気がして泣きそうになってしまいました😭

先述しましたが、他社と比べ段違いで運営・メンター陣のコミット量・熱がすごいので、学生である我々としても心から学ぼう・成長しようと思える濃密な3週間にすることが出来ました。そういった意味で、このインターンは密度濃く主体的に成長できる環境として最高のインターンでした!!!

レビューや面談などで温かく接してくださった運営の方々やメンターさん、最後まで一緒に頑張ったメンバーに感謝しながら、これからもエンジニアとして成長していきたいと思います!!

三週間お世話になりました!!!!

スクリーンショット 2020-09-17 1.09.44

画像7

他のDojo生のブログ


この記事が気に入ったらサポートをしてみませんか?