【ITニュース解説】☘️サイバーエージェントのサマーインターンに参加してきた話
ITニュース概要
サイバーエージェントのサマーインターン「Specialized Boot Camp」に参加した筆者の体験談。インターンで得られた学び、感想、反省点などが詳しく書かれており、今後の就職活動やスキルアップに役立つ内容となっている。
ITニュース解説
先日、ある参加者がサイバーエージェントの「Specialized Boot Camp」というサマーインターンシップに参加した体験について報告があった。これはシステムエンジニアを目指す初心者にとって、実際の現場がどのようなものか、またインターンを通じて何を学べるのかを知る良い機会となるため、その内容を詳しく解説する。 まず、インターンへの参加理由についてだが、就職活動の一環であることはもちろん、エンジニアとして自身の技術レベルを向上させたいという強い思いがあったという。特に、インターンシップで行われる評価制度に興味があり、客観的な評価を受けることで自身の成長を促したいという明確な目標を持っていた。 インターンの選考プロセスは、一般的なエンジニア採用と同じく、書類選考、技術課題、そして面接という流れで進められた。技術課題では、バックエンドのAPI開発が求められた。具体的には、ユーザー登録やログイン機能、スレッド投稿、投稿の一覧表示や詳細表示、そして投稿に対する「いいね」機能といった、Webサービスの基本的な機能をGo言語で実装する必要があった。Go言語は、Googleが開発したプログラミング言語で、高速な処理や並行処理に強く、Webサービスのバックエンド開発でよく利用される。この課題を通して、参加者は実務に近い開発経験を積むことができた。 インターンシップは、3人チームでの開発という形式で行われた。新規サービスをゼロから開発するのではなく、既存サービスに対して新しい機能を追加するという、より実践的な内容であった。開発期間は実質8営業日という限られた時間の中で、チームメンバーはそれぞれフロントエンド、バックエンド、インフラなどの役割を分担し、協力して開発を進めた。参加者はバックエンドを担当し、Go言語とgRPCという技術を主に利用した。gRPCは、異なるプログラム間で効率的に通信するためのフレームワークで、高速なデータ転送が可能である。 システムを動かす基盤となるインフラには、Google Cloud Platform(GCP)が採用された。GCPは、Googleが提供するクラウドコンピューティングサービス群であり、参加者はその中のいくつかのサービスに触れる機会を得た。例えば、Cloud Runはアプリケーションをサーバレスで実行できるサービスで、インフラ管理の手間を大幅に削減できる。また、Cloud SQLはデータベースサービスであり、ここではMySQLというリレーショナルデータベースが利用された。MySQLは、世界中で最も広く使われているデータベース管理システムの一つである。さらに、画像などのファイルを保存するためにCloud Storageが使われ、これはオブジェクトストレージサービスと呼ばれ、大量の非構造化データを保存するのに適している。開発プロセスでは、GitHub ActionsがCI/CD(継続的インテグレーション/継続的デリバリー)のために活用された。これは、コードが変更されるたびに自動的にテストを実行したり、本番環境にデプロイしたりする仕組みである。開発環境の構築にはDockerが使用され、アプリケーションをコンテナという独立した環境にパッケージ化することで、環境の違いによる問題を解消し、どこでも同じように動作させることが可能になった。そして、インフラの設定をコードで管理するInfrastructure as Code(IaC)ツールとしてTerraformが用いられ、手動での設定ミスを防ぎ、インフラ構築を自動化するのに役立った。 インターン期間中、各チームには社員メンターが付き、開発の進捗状況に関する相談や、作成したコードのレビュー、技術的なアドバイスなど、手厚いサポートを提供した。これにより、参加者はプロのエンジニアの視点からフィードバックを受け、自身のスキルアップに繋げることができた。最終日には、開発した機能のデモンストレーションを行い、技術的な工夫点やインターンを通して得られた学びなどを発表する機会が設けられた。 このインターンを通して、参加者は多くの学びと気づきを得た。最も大きな学びの一つは、チーム開発の難しさと面白さであった。複数人で一つの目標に向かって開発を進める中で、コミュニケーションの重要性や、役割分担、意見調整の難しさ、そしてそれがうまく機能したときの達成感を経験した。また、バックエンドだけでなく、インフラまで含めた開発に携わったことで、自分の作ったプログラムが実際に動く環境、すなわちサーバーやネットワークなどの基盤部分に対する理解が深まった。 レビュー文化の重要性も強く認識された点である。自分の書いたコードを他の人に見てもらい、改善点や潜在的な問題を指摘してもらうことで、より品質の高いコードを書くための視点や知識を身につけることができた。限られた期間の中でサービス開発を行うことは、計画性や優先順位付けの重要性を教えてくれた。メンターからのサポートは、技術的な知識だけでなく、プロフェッショナルとしての仕事の進め方や考え方にも触れる貴重な機会となった。また、なぜ特定の技術が選ばれたのか、その技術選定の背景を理解することの重要性も学んだ。 一方で、自身の課題も明確になった。インフラに関する知識が不足していることや、Go言語への習熟度がまだ十分ではないこと、そしてチームメンバーとのコミュニケーションをより円滑に進めるための能力向上など、今後の学習や成長に向けた具体的な課題を発見できた。 このインターンシップは、システムエンジニアを目指す初心者にとって、実社会のチーム開発や最新の技術スタックに触れる貴重な経験となった。座学だけでは得られない実践的なスキル、課題発見能力、そして解決へのアプローチを学ぶことができ、将来のキャリアを考える上で非常に有意義な期間であったといえる。