CA Tech Accelで大きく成長した話

2020年11月〜2021年3月で,CyberAgent が企画する育成型プログラム CA Tech Accel に参加していました.

今回はこのプログラムの振り返りをしていこうと思います.

CA Tech Accelとは

CA Tech Accel (以下 CTA )とは,CyberAgent が企画する育成型プログラムです.

今回は,主に23卒向けエンジニア志望学生を対象にし,21卒の CyberAgent 内定者の方々とチームを組んで様々なことに取り組んでいきます.

サーバサイドエンジニアや web フロントエンドエンジニア,インフラエンジニアや iOS エンジニアなど様々な方が参加していました.

私は,サーバサイドエンジニアとして参加し,21卒内定者の方々3人と私の計4人でチームを組んでいました.

成長差分

CTAを通して様々なことに取り組んだ結果,大きく成長することができました.

様々なことを学びましたが,ここでは大きく5つの項目についての成長差分を取り上げます.

どれも未経験からのスタートで,Docker や CI についてはそもそもどのようなものであるのか,どのようなメリットがあるのかなどを全く知りませんでした.

しかし,CTA での取り組みが終わった今では,どれもある程度の知識を持ち,実際に活用することができるようになっています!

CTAで行ったこと

CTA では以下の流れのように様々なことに取り組みました. 

基礎的な勉強

まずは,Go 言語を学ぶために A Tour of Go を行いました. goroutinechannelなどを理解することが困難でしたが,内定者の方に質問することで大方理解することができました.

次に,入門 Docker を行いました. コンテナの概念などを理解することが困難でしたが,とりあえず手を動かしてみることで雰囲気をつかんでいきました.

また,上の2つと並行して,アーキテクチャの勉強もしていました. pospomeさんが書いた pospomeのサーバサイドアーキテクチャ を読みました. 代表的なレイヤ構造について,そのメリット・デメリットを参考コードとともにまとめてあり,非常に参考になりました.

チャットアプリ

基礎的な勉強の後,チャットアプリ作成に取り掛かりました.

大まかな内容は以下の通りです.

ユニットテストを書く際に,interface を用いた抽象化や DI などの重要性を感じました.

ソースコードはこちらです.

github.com

CA Tech Dojo

11月から学んできたもののアウトプットの場として,CyberAgent が企画するサーバサイド向けインターンである CA Tech Dojo に応募しました.

書類選考・面接の結果,インターンに参加させていただくことになりました.

CA Tech Dojo では,最優秀賞をいただくことができました!

詳しくは,以下の記事を見てください.

arkuchy.hatenablog.com

プロトスプリントリーグ

CA Tech Dojo で最優秀賞をいただいたことから,CyberAgent が企画するハッカソンインターンであるプロトスプリントリーグに参加させていただくことになりました.

このインターンでは,クライアントサイド4人(C#, Unity)とサーバサイド1人(Go 言語)でチームを組み,ゲームを開発します.

私のチームでは,流れてくるブロックを盤面にうまく配置していくパズルゲームを作成しました.

パズルゲームとしての完成度を評価していただき,結果は3位でした!

TODOアプリ

CTA での集大成(?)として,クライアントサイド3人(Swift)とサーバサイド2人(Go 言語)でチームを組み,アプリ開発をすることになりました.

大まかな内容は以下の通りです.

私は,ユーザ認証周りとデプロイ周りを担当しました.

ユーザ認証は,jwt-goを用いて実装し,JWT に対する有名な攻撃手法(alg:none など)に注意しました.

また,デプロイは,コンテナに関する知識があまりにも足りないことをプロトスプリントリーグ中に自覚したので,GCP の Cloud Run を採用してコンテナ周りの勉強をしました.

github.com

CTAの良さ

CTA では,各々の興味があることや習得したい技術をもとにして,個別にカリキュラムを決めていきます.

それゆえ,勉強していく中で,前までは興味がなかったが今は興味があることをカリキュラムに入れたり,前までは興味あったが今は興味が薄れてきたことをカリキュラムから外したりなど,柔軟に学ぶことを変更することができます.

さらに,インフラで困ったらインフラチームのメンターの方に質問したりするなど,他のチームのメンターの方に質問することもできました.

(困っていることを slack で投げたら,それを見た他のチームのメンターの方が教えてくれたりもしました)

まとめ

CTA を通して大きく成長することができました!

今後は,実務経験を積むことや,知識のインプットやアウトプットをすることなどを通してさらに成長し,「頼られるエンジニア」に近づけるように努力していこうと考えています.

CTA のメンターをやってくださっていた21卒の CyberAgent 内定者の方々,様々な場面で手伝ってくれていた人事の方々など,本当にありがとうございました!

特に,私のチームメンターをしていただいていた@kume_ruさん,@konnyaku256さん,@u_chi_ha_ra_さん,ありがとうございました!!!!