はじめに

こんにちは!2024年9月にインターン生として就業させていただいた籾井野乃加です。

約1ヶ月間、ABEMAの広告に関する部署でバックエンド開発に携わらせていただきました。この記事では、私がインターンシップを通して学んだことや感じた魅力について紹介させていただきます。

 

参加した経緯

サイバーエージェントが通年で募集している就業型インターン「CA Tech JOB」に参加するきっかけとなったのは、2023年12月から3ヶ月間参加した「Women Go College」というインターンでした。このプログラムでは、Go言語やサーバーサイド開発、データベースを使ったAPI実装の基礎を学びました。

 

このインターンでは、CyberAgentのエンジニアの方がトレーナーとなり、1on1やコードレビューを通して多くのサポートをしてくださいました。特に、インターン生の成長に真剣に向き合う姿勢や、若手とは思えないほどの高い技術力と視座の高さに強く惹かれました。

 

私もそのように誰かの成長を支えるとともに、自身も成長し続けられるエンジニアになりたいと感じました。また、そんな方々と共に働きたいと思ったことが、最初のきっかけでした。

 

配属先と業務について

ABEMAの広告に関する部署に配属していただき、バックエンド開発に携わらせていただきました。配属先の部署では、広告代理店向けの広告入稿システムや広告配信システムの開発を行っています。

 

今回は、広告代理店向けのABEMAへの広告入稿システムのバックエンド開発に携わらせていただきました。

 

技術面での学び

【 実務で学んだDDDとGoの活用 】

今回のインターンシップでは、Go言語を用いたバックエンド開発に携わり、実務におけるドメイン駆動開発(DDD)のアプローチを学びました。個人開発でDDDを使った経験はありましたが、実務レベルでの開発は規模や複雑さが異なり、機能の追加や改善を繰り返す中でコードが肥大化しやすくなる課題に直面しました。

 

この課題に対して、サブドメインに責務を分割する設計方法を学びました。サブドメインごとの独立性が高まることで、認知しなければいけない範囲が狭まり、効率的に開発を進められることを実感しました。

 

さらに、Goのinternalパッケージを使うことで、特定のサブドメインの内部ロジックを外部から隠蔽し、システム全体の安全性や依存関係の管理が強化できることを学びました。このアプローチにより、設計の境界がより明確になり、モジュール間の適切な分離が可能になります。

 

【 コードリーディング・仕様を理解するスキル 】

1ヶ月という短いインターンシップ期間で、初めて広告ドメインの開発に携わり、多くの学びを得ました。特に、コードリーディングや仕様の理解が重要でした。今回は、既存機能に新規機能を加える開発だったため、既存コードの読解と仕様の把握が欠かせませんでした。

 

ここで特に重要だと感じたポイントは2つです。

 

1. 技術・ドメイン・仕様、何が分からないのかを常に意識する

新しいドメインでキャッチアップをする際、最初は分からないことだらけですが、その中でも「何が分からないのか」を意識することが大切です。

 

技術的な部分、ドメイン知識、仕様の理解、それぞれについて意識を向ける必要があります。技術やドメインはまず自分で調べ、解決を試みますが、仕様についてはドキュメントを探したり、場合によっては直接質問するほうが効率的です。

 

何が不明なのかを常に意識し、適切な手段で解決を図り続けることが、スムーズなキャッチアップのために重要だと学びました。

 

2. Whyを大切に。プロダクトの歴史的背景を知る

コードや仕様を理解する際には、常に「Why」、すなわち「なぜそうなっているのか」を意識していました。

 

意図が読めないコードや仕様があった場合、トレーナーやチームメンバーに質問し、背景を探るようにしました。これにより、過去の意思決定や課題を知り、今後の開発や運用にも活かせる知見を得ることができました。

 

インターン全体を通して

【 ランチ 】

Tech Job生には、週2回まで経費でランチが楽しめる制度があります。この制度を活用して、配属先だけでなく、他の部署の方々ともランチをご一緒する機会がありました。

 

さらに、トレーナーさんや一部の社員さんの配慮で、週2回の経費ランチ以外にも、さまざまな部署の方とランチの機会を設けていただきました。ランチでは、他部署の方々と交流することが多く、配属先の業務だけでなく、他のサービスや事業、CyberAgent全体についての理解を深めることができました。

 

このように、学びを最大化できる環境を提供していただき、本当に感謝しています。

 

【 1on1 】

ABEMA開発本部では、新規メンバーのオンボーディングとして、チームメンバーとざっくばらんに話をする1on1が設定されます。ありがたいことに、インターン生もこの施策の対象にしていただき、10名ものチームメンバーとお話しする機会をいただきました。

 

1on1の目的は、新規メンバーとチームメンバーが互いに人となりを知り、スムーズなコミュニケーションを築くことにあります。新規メンバーにとって、最初は多くの人の名前や顔を覚えるのが難しいこともありますが、1on1を通じて共通点を見つけたり、価値観を共有することで、信頼関係を築くことができます。

 

私も1on1を通じて、チームの皆さんの多様なキャリアやその節目での意思決定に触れ、多くの学びや刺激を受けるとともに、深い尊敬の念を抱きました。

多様なキャリアを知ることで、新たな選択肢を発見したり、自分のエンジニアとしての未来にもわくわくとした前向きな気持ちがグッと強くなりました。

 

毎回の1on1が楽しみで仕方なく、貴重な経験をさせていただいたことに心から感謝しています。

 

【 ミーティング 】

インターン生も一社員として扱っていただき、チームや部署のミーティングにも参加させていただきました。

 

これにより、自分のタスクの範囲にとどまらず、チームやプロダクトが抱える課題や目標を理解し、自分の取り組みがプロジェクト全体にどう繋がっているかを意識するようになりました。特に、技術的な解決策だけでなく、プロダクトの成長やユーザー体験、ビジネス目標との関連性を意識することができました。

 

【内定者・インターン配属について】


CyberAgentのように多くの事業を展開する企業では、配属先によって事業のフェーズや領域が異なるため、「希望する部署に配属されるのか」「自分に合った部署を見つけられるのか」といった不安を感じる方もいるかもしれません。私もインターン開始前には、そのような不安を抱いていました。

しかし、インターン期間中に内定者バイトを経験した先輩方や新卒社員の方々、人事の方とお話しする機会があり、その中で不安を解消することができました。

 

CyberAgentの内定者バイト制度は非常に充実しており、複数の部署でスキルを磨きながら就業経験を積むことができる仕組みが整っています。これにより、さまざまな部署を経験する中で、自分に合った部署を見つけられる安心感がありました。また、人事の方々も一人ひとりの成長を全力でサポートしてくださるため、非常に心強いです。

 

さらに、ランチや社内イベントを通じて多くの部署の方々とお話しする中で、どの部署も魅力的で、それぞれの事業領域やフェーズに応じた多様な学びがあることを実感しました。このような環境であれば、どこに配属されてもエンジニアとして大きく成長できると感じました。

 

これらの経験を通じて、配属に対する不安は期待へと変わり、幅広い経験を積めることがCyberAgentの大きな魅力の一つであると確信しました。

 

最後に

最後になりますが、トレーナーさん、担当人事さん、配属先のみなさま、関わってくださった社員の皆さま、本当にありがとうございました!

 

人の魅力、組織の魅力、本当にさまざまな魅力に溢れる会社だと日々感じており、1ヶ月共に働くことができて本当に幸せでした。今後も、今回得た知識や経験を活かし、エンジニアとしてのスキルを磨き続けていきたいと思います。

 

少しでも私が得た学びやCyberAgentの魅力をお伝えできたら幸いです。最後までお読みいただき、ありがとうございました!