サイバーエージェント主催のGo Collegeで2週間かけて成長した話。
はじめに
大学の春休みの間に参加したインターンでGo言語以外にも多くの学びがあったので記事を書いてみようと思いました。このインターンで目標としていたのにできなかったこと、できたことについてお話していきます。この記事が少しでも参考になれば嬉しいです!😸
Go Collegeとは?
概要
Go Collegeは、株式会社サイバーエージェントが主催するGo言語を使用したサーバーサイド開発のほか基礎、データベースを使ったAPI実装の周到を目標とした短期インターンシップです。このインターンでは、5日間の事前学習、課題を進めたのちに、自身が決めた目標を残りの5日間の応用として行います。
スケジュール
Day | 日付 | 内容 | 開催場所 |
---|---|---|---|
Day 1 | 2月8日(土) | Goの開発環境整備と言語解説 | オフィス |
Day 2 | 2月15日(土) | Docker解説、フレームワークなど | リモート |
Day 3 | 2月22日(土) | Database解説、ORMなど | リモート |
Day 4 | 3月 1日(土) | Redis解説 | リモート |
Day 5 | 3月 8日(土) | パフォーマンス、単体テストなど | リモート |
Day6 ~ 10 | 3月10日(月)~3月14日(金) | 発展課題 ※一番重要 | オフィス |
※ 全日程10:00~19:00の間に行われました(懇親会やチーム交流などを除外)
Go College supported by リスキリングセンター エントリーページより引用
募集対象・条件
- サーバーサイドの開発に興味がある方
- 高い意欲を持ち、主体的かつ積極的に取り組むことができる方
- ご自身で開発に使用しているノートパソコンを使用可能な方
- OSはWindowsもしくはMacのみ対象とし、docker環境を使える方(その他のOSは応相談)
- 最終日の懇親会を含め、全日程終日参加可能な方
- 2027年4月以降に入社可能な学生(28卒以降も可。既卒可)
Go College supported by リスキリングセンター エントリーページより引用
選考の流れ
- 🖊 公式ページからエントリー
- 📁 書類選考
- 🥷人事担当者との面接
僕の場合はこのような流れで行いました。エントリーでは、チーム開発経験、実務経験、キャリアに関する質問が重点的にありました。面接でも、エントリーシートに書いたチーム開発について重点的に問われました。
応募した理由
もともとサイバーエージェントさんの事業の多さにとても興味があったのに加え、Go言語を完全に理解したかったというのもあります。正直、サイバーエージェントのインターンは倍率が高く、28卒ということもあり書類選考で落ちるかと思っていましたが、無事に合格したので嬉しかったです。やはりだめもとでエントリーしてみるものですね。
インターンで行ったこと
インターン10日間は基礎学習と発展課題で分かれていました。基礎学習の内容はとても進みが早く感じ、かといって付いていけないと思ったのですが先生方やメンターのおかげもあり何とかしがみつきました。
基礎学習(Day1~Day5)
Day1にAbema Towersで簡単な説明を受け、環境構築しGo言語の基礎的な文法について勉強をしました。Day2では、早速Go言語で簡単なウェブアプリケーションを作成したり、Gin
やEcho
などの勉強を行いました。個人的にDay3, Day4、Day5で扱ったデータベース、Redisのそれぞれの基礎的な勉強やパフォーマンスチューニングがとても勉強になりました。今まで個人開発であれば基本的にパフォーマンスを気にせず開発していたので目からうろこでした。
発展課題(Day6~Day10)
当初、発展課題ではパフォーマンスチューニングを中心に取り組むことを参加前に決めていました。しかし、チームメンバーとの交流やメンターとの面談を行う中で、自分がアーキテクチャに対する知見が不足していることに気づき、アーキテクチャに詳しいメンバーチームいて、実務を経験しているメンターがいるなら今が絶好のチャンスだと思いました。
そのため、課題の方向性を見直し、まずは発展課題のアプリケーションをクリーンアーキテクチャを考慮した設計に変更することに注力しました。チームメンバーの協力やメンターの支えもあり、クリーンアーキテクチャの導入が一定の段階まで完了しました。
そのあとに当初のやりたかったことであるパフォーマンスチューニングを行うためにOpenTelemetryやpprofを導入したり、ローカルのDocker上でSigNozを構築してアプリケーションの観測可能な環境を整備しました。自分が満足する結果にはならなかったですが、参加前の自分ができたことと比べたら間違いなく圧倒的な成長をしたと思います。
インターンで得られたこと
今回参加したGo Collegeのインターンでは、当初設定した目標に対してどれほど達成できたのか、また具体的にどのようなことが学べたのかを振り返ります。
インターンでの目標と達成度
Go言語が完全に理解する
- ✅達成 ままだまだ未熟な部分はありますが、自信を持ってGoを使った開発ができるレベルにはなったと思います。
同年代のエンジニアと仲良くなる
- ✅達成 交流会やランチタイムを通じて、他の参加者との交流を深め、SNSでもつながりを持つことができました。
パフォーマンスや負荷対策 & 負荷試験に対する知見を増やす
- ❌未達成 他のメンバーの発表や取り組みから新しい知識は多く得られましたが、自分自身が満足できるほどの深い理解や実践には至っておらず、今後も頑張ります。
Abemaグッズを手に入れる
- ❌未達成 最優秀賞を狙っていましたが、今回は手に入れられませんでした。次こそはと
技術的な学び
技術面では、特にクリーンアーキテクチャへの理解が深まりました。実務経験を持つチームメンバーや、現場のメンターから多くの意見をいただき、設計思想や具体的な実装方法について多くのことが学べました。
特に、OpenTelemetryを導入することで、ログ収集や設計の重要性を強く感じました。単に導入するだけではなく、ルールや構造を適切に定めなければ、観測環境を整備しても効果的に活用できないことを実感しました。
また、k6やpprofを使った負荷試験やパフォーマンス計測においても、計測条件や前提をしっかり決めておかなければ、有意義な結果が得られないと思いました。インターンの最後で発表を行いましたが、私が前提条件や計測を正しく行っていなかったため、説得のある説明ができませんでした。
これらの経験を通じて、単なるツールの使い方ではなく、運用設計そのものを重視する考え方が身につけられたように思います。
メンターからの学び
メンターさんからは、未知の分野に取り組む際の具体的な方法を教えていただいたり、現場の実務で求められるコードや設計について、実例を交えながら丁寧に解説していただき、とても勉強になりました。
また、キャリアについての相談にも対応していただき、参加前よりも自分の未来像が少し見えるようになりました。
チームメンバーから学び
チームメンバーとの日々の交流を通じて、自分だけでは気づけなかった問題や、その解決策を共有できたことで、とても良い学習環境が形成できたと感じました。わからない部分を素直に共有し、自分がわかる部分は積極的に教えることで、お互いに学び合える「WIN-WIN」な関係が築けたのが印象的でした。
発展課題が個人作業と聞いたとき、最初は少し残念に感じていました。せっかく同じ志を持ったチームメンバーがいるのなら、一緒に成長したいという思いがあったからです。しかし実際に発展課題を行ってみるとメンバーと協力し合いながら課題に取り組むことができ、チーム開発ならではの楽しさや学びがたくさん得られて嬉しかったです。
特に印象に残っているのは、クリーンアーキテクチャの導入方法について深く議論したことです。普段の個人開発では意識してこなかった「設計」をテーマに、意見を出し合いながら進めたことで、理解が大きく深まりました。また、データベースのトランザクション管理やクエリ最適化についても、多くの意見を共有でき、新たな発見がたくさんありました。
それぞれが異なる経験や知識を持っていることで、自然と強みを共有し合う環境ができ、とても良い開発体験になりました。チームで共に成長できたことが、とても貴重で嬉しい経験でした。
チームメンバーだった皆さん、本当にありがとうございました!
今回のインターンを通じて、想像以上に広く深い学びを得ることができました。みんなと一緒に考え、意見を出し合いながら取り組めたからこそ、ここまで成長できたと思います。
このインターンでの反省
インターンを通じて多くの学びがありましたが、個人的にまだ足りてない努力するべきだと感じた部分はたくさんありました。
まず、発展課題を行う期間中にクリーンアーキテクチャの実装が一段落した後、次に何をすべきか方向性が定まらず、手を広げすぎてしまったことが一番の反省点です。せっかく設計を改善したのに、その後の目標を具体化できなかったため、結果として効率的に進められなかったと感じています。発展課題に入る前に、達成すべきゴールをもう少し具体的に設定し、遂行するべきでした。
他にも、パフォーマンスチューニングや負荷試験を行った際、前提条件をしっかりと定めずに進めてしまったため、計測結果が曖昧になってしまいました。次回は、計測の目的や基準をしっかりと設定してから取り組むことで、より意味のあり、他人に説明できる結果を得られるようにしたいと思います。
今回の反省を踏まえ、今後のプロジェクトでは、計画段階での目標設定や、検証手法の明確化を意識して進めていきたいです。
このインターンで楽しかった・印象的だったこと
このインターンでは、開発以外の様々なイベントがあり、その中でも特に楽しかったことについて詳しく書いていきます。
初日の懇親会
基礎学習期間の初日はオフラインで授業を受けたのですが、そのあとにあった懇親会がとても楽しかったです。インターンの説明前にみんな自己紹介を行ったり、雑談をしましたが、これがなければ発展課題で行っていた関係性はなったように思います。
チームメンバーとメンターの全員で Gartic Phone という伝言ゲームを行いました。
最後のはキリンか、、、?
とても楽しかったです(笑)
社員さんとのランチ、ディナー
サイバーエージェントのインターンはチームメンバーと社員さんでランチやディナーに行く機会がありました。みんなで雑談したり、サイバーエージェントの社内の雰囲気、今後のキャリアについてお話したりととても楽しい時間でした。
超おいしいハンバーグ!!
同年代の技術力が凄すぎた。。。
このインターンで特に驚いたのが、周りの技術力の高さです。多くの参加者が実務経験やハッカソンへの参加経験を持っていて、そのレベルの高さに圧倒されました。
自分も実務経験やハッカソンを経験してきましたが、これほど自発的で志が近いメンバーが一堂に集まる場はなかなかないので、本当に貴重な経験でした。チームで意見を出し合ったり、技術について語り合ったりする中で、刺激を受けることが多く、学ぶこともたくさんありました。
インターン終了後には、何人かと技育祭で再会することができました。同年代で技術に真剣に向き合っている人たちと出会うことで、モチベーションや競争心が一気に高まったと感じています。これからもこういった繋がりを大切にして、お互いに刺激を与え合える関係を続けていきたいです。
これから応募を考えている方へ
選考に落ちるかもと思っても、挑戦できるチャンスがあるなら、ぜひ応募してみてほしいです。
私は参加したことにより技術面だけでなく、仲間との学び合いを通じて成長できました。
少しでも興味があるなら、ぜひトライしてみてください。きっと得るものがたくさんあります!(=^・・^=)
終わりに
Go Collegeでのインターンを通じて、技術面だけでなく、チームワークや考え方についても多くの学びを得ることができました。特に、他のメンバーとの議論を通じて新たな視点を得られたことが大きな収穫でした。今後もこの経験を活かして成長し続け、さらに技術力を磨いていきたいと思います🐱
Discussion