blog

DeNAのエンジニアが考えていることや、担当しているサービスについて情報発信しています

2025.11.25 インターンレポート

チーム開発未経験者がDeNAインターンで掴んだ成長と技術的挑戦

by Yuki Kawata

#internship #typescript #nextjs #frontend

はじめに

こんにちは!東北大学情報科学研究科の川田裕貴です。私は画像処理に関する分野を専攻しており、プログラミング経験としてはPythonとC#を研究として学んだことがある程度でした。DeNAの2週間の内定承諾前学生向け短期就業型インターンシップに参加させていただき、社内動画プラットフォームの改善プロジェクトに携わることができました。

インターンシップに参加する前は、DeNAの最先端の技術環境やスピード感のある開発に期待を膨らませる一方で、私自身はWebフロントエンド開発の経験が浅く、とくにNext.jsはほとんど触ったことがありませんでした。さらに、本格的なチーム開発への参加もはじめてだったため、チームの一員として貢献できるかという不安も抱えていました。

この記事では、そんな私がDeNAのインターンでどのような挑戦をし、どのように成長できたのかを、具体的なエピソードを交えてお伝えします。とくに、未経験の技術領域やはじめてのチーム開発でもDeNAの手厚いサポートがあれば課題を達成できること、自分の状況を積極的に共有することの重要性、そしてチーム全体で支え合うDeNAの温かいカルチャーについて深くお話しできればと思います。この経験が、DeNAのインターンシップに興味を持っている方や、スキルセットやチーム開発経験に不安を感じている学生の皆さんの参考になれば幸いです。

社内動画プラットフォームの概要

私がインターンシップで携わったのは、社内動画プラットフォーム「miruca」です。これは「社内YouTube」という発想から生まれたプロダクトで、Google Driveに置かれた社内動画をより便利に視聴・管理できるようにするために開発されました。勉強会や部会の録画など、社内には多くの動画コンテンツが存在しますが、それらを効率的に活用するためのハブとして機能しています。

「miruca」の主な機能としては、動画の視聴管理、気になるチャンネルの動画を見逃さないためのInbox機能、動画タイトルを対象とした検索機能、新着動画のSlack通知機能などがあります。さらに、動画から自動で要約付きのチャプターが生成され、文字起こしがされるといったAI機能も充実しています。

技術スタックとしては、バックエンドにGo、フロントエンドにNext.js(TypeScript)、インフラにGoogle Cloudを利用しており、モダンな開発環境が整っています。

今回のインターンシップでは、この「miruca」の中でもとくに「Preview」機能の改善に焦点を当てて取り組みました。この機能は、まだ「miruca」にアップロードされていないGoogle Drive上の動画も、「miruca」のビューワーで視聴できるようにするもので、社内動画の利活用をさらに促進するための重要な役割を担っています。

インターンシップの課題

今回のインターンシップで私が担当したのは、既存の「Preview」機能に文字起こしデータを連携させることで、動画視聴時の利便性を向上させるという課題でした。社内には、ZoomやGoogle Meetで録画された文字起こしデータが多数存在するため、これらを活用することで、動画の閲覧体験を大きく変えることができると考えられていました。

この課題の目的は、動画視聴時に不要な会話をスキップしたり、目当ての会話にすぐにたどり着けるようにすることです。この目的を達成するために、以下の完了条件が設定されました。

  • 文字起こしデータのURL(またはアップロード)を指定することで、動画の横に文字起こしテキストがサイドバイサイドで表示されること。
  • 文字起こしテキストの特定の発言をクリックすると、動画がその地点へジャンプできること。

私にとって、Next.jsでの開発経験がほとんどない中、この大規模な社内プロダクトの新規機能開発に携わることは、まさに技術的な挑戦そのものでした。そして、それがはじめての本格的なチーム開発の現場であったことは、私にとって一層大きな挑戦でした。

タスク遂行プロセス

開発環境の準備とオンボーディング

インターンシップ初日、まず驚いたのは、メンターさんによる手厚いオンボーディングでした。Next.jsは未経験、TypeScriptも本格的に触るのははじめてという私の状況を考慮し、基本的なプロジェクトの構造から開発ワークフローまで、丁寧に相談に乗っていただきました。Next.jsのファイルベースルーティングやAPI Routes、TypeScriptの型定義のメリットなど、一つ一つ自分で調べ、これをメンターさんに相談していくことで疑問を解消しながら開発を進めることができました。

また、はじめてのチーム開発で重要となるGitを用いたバージョン管理や、GitHub上でのプルリクエストを通じたコードレビューのプロセスについても、実際の開発で使われているワークフローに沿って教えていただけました。これにより、どのようにコードを共有し、チームで協力して開発を進めるのか、具体的なイメージを持つことができました。

既存の「miruca」のコードベースは大きく、最初はどこから手をつければ良いのか戸惑いました。しかし、メンターさんからプロダクト全体のアーキテクチャやPreview機能の概要について詳細な説明を受け、関連するファイルを特定する手助けをしていただいたことで、徐々に全体像を把握できるようになりました。

機能実装の詳細

私が取り組んだ主要な機能実装は以下の通りです。

  • 文字起こしファイル解析: Zoomから得られるWebVTT形式やGoogle Meetから得られるSBV/SRT形式、さらにはGoogle Docsやプレーンテキストなど、多岐にわたる文字起こしファイル形式に対応する必要がありました。それぞれのフォーマットを分析し、統一されたデータ構造に変換するためのパーサー関数を実装しました。とくに、ミリ秒単位の正確なタイムスタンプ抽出には苦労しましたが、正規表現や文字列操作を駆使して対応しました。
  • ユーザーインターフェイスの実装: 動画プレイヤーの横に文字起こしを表示するサイドパネルを開発しました。動画のサイズに合わせてパネルの幅が動的に調整されるように工夫し、ユーザーが快適に視聴できるレイアウトを目指しました。
  • 動画と文字起こしの同期: もっとも核となる機能の一つが、文字起こしをクリックすると動画がその時間にジャンプするタイムジャンプ機能です。JavaScriptの currentTime プロパティと、文字起こしデータから抽出したタイムスタンプを照合することで、ミリ秒単位の正確な同期を実現しました。
  • 共有機能: 現在の再生位置や特定のタイムスタンプをURLパラメーターに含めることで、その状態を共有できる機能を実装しました。これにより、チームメンバーが特定の話題を議論したい際に、URL一つで動画の該当箇所を共有できるようになり、コミュニケーションの効率化に繋がりました。

技術的課題と解決策

Next.jsでの開発ははじめての経験でしたが、メンターさんのサポートと公式ドキュメント、そしてOSSの豊富な情報に助けられました。とくに、ReactのライフサイクルやState管理、TypeScriptによる型安全性の確保など、基本的ながらも重要な概念を実践を通して学ぶことができました。

このプロセスでもっとも重要だと感じたのは、自分の状況をできるだけ人に見えるようにしておくことです。疑問に思ったことや、実装に詰まってしまった際には、すぐにメンターさんに相談することを心がけました。はじめてのチーム開発だからこそ、自身の進捗や課題を共有することが、チーム全体の生産性向上に繋がると実感しました。すると、的確なアドバイスやヒントをいただけるだけでなく、「この部分はこうするともっと良くなるよ」といった建設的なフィードバックもたくさんもらえ、一人で抱え込むことなく課題を乗り越えることができました。この経験を通じて、自身の行動の可観測性を向上させることの価値を強く実感しました。

インターンシップで得られた学び

今回のインターンシップを通して、技術面だけでなく、エンジニアとしての働き方やチームでの開発における重要な学びを数多く得ることができました。

技術的な成長

Next.jsとTypeScriptでの開発経験は、私にとって大きな財産となりました。Webフロントエンド開発の全体像を掴むことができ、モダンなフレームワークを使った開発の楽しさを知ることができました。とくに、TypeScriptの導入により、開発の初期段階で型に関するエラーを発見できるようになり、コードの品質向上に繋がることを実感しました。また、Google CloudのAPIを実際に利用したことで、クラウド環境でのサービス連携に関する実践的な知識も身につきました。

課題解決能力の向上

未経験の技術領域で新しい機能を作り上げる過程は、まさに課題解決の連続でした。どのようなアプローチで実装を進めるか、発生したバグをどう特定し修正するか、そしてどのようにテストを行うか。これらのプロセスを通じて、問題を細分化し、一つ一つ着実に解決していく能力が養われたと感じています。デバッグの際には、複数の可能性を検討し、仮説を立てて検証することの重要性を痛感しました。

コミュニケーションの重要性

インターンシップでもっとも強く印象に残ったのは、コミュニケーションの価値です。前述の通り、自身の進捗状況や困っていることを積極的に共有することで、メンターさんはもちろん、チームメンバーの方々も惜しみなくサポートしてくださいました。日々のコードレビューでは、自分では気づかなかったより良い実装方法や、ユーザー体験を向上させるための視点など、多角的なフィードバックをいただけました。DeNAでは、質問することや助けを求めることを歓迎する文化があり、そのおかげで安心して開発に集中できました。

はじめてのチーム開発の経験

実際に運用されているプロダクトにチームの一員として参加できたことも、私にとってははじめての貴重な経験でした。Gitを用いたバージョン管理、GitHubでのプルリクエストを通じたレビュー、そしてCI/CDパイプラインを通じたデプロイの流れなど、実際の開発現場で使われているツールやプロセスを肌で感じることができました。はじめての共同開発で、コードマージの衝突解決やレビューでの建設的な指摘の受け止め方など、実践的な学びが数多くありました。共同で一つの目標に向かって進むことの難しさと、それを達成した時の喜びを味わうことができ、「チームで創る」ことの醍醐味を学びました。

DeNAのカルチャーと働き方

インターンシップ期間を通じて、私はDeNAの「挑戦と成長を支えるカルチャー」を強く感じました。

メンターさんからは、技術的な指導だけでなく、日に一度の1on1では今後のキャリアパスについて相談に乗っていただいたり、ランチに誘っていただいたりするなど、公私にわたって手厚いサポートをいただきました。どんな小さな質問にも丁寧に答えてくださり、「いつでも頼っていいよ」という温かい言葉に、何度も救われました。

また、チームの皆さんともランチや休憩時間に談笑する機会が多く、DeNAの社員の方々が、仕事に対して情熱を持ちながらも、非常にオープンでフレンドリーな方が多いという印象を受けました。私が困っていると、担当外の先輩社員の方々も「こうしてみたらいいんじゃない?」と声をかけてくださり、部署やチームの垣根を越えて助け合う文化が根付いていることに感動しました。

開発チーム全体には、活発な議論が飛び交い、常に最善の解決策を追求する姿勢がありました。技術選定の自由度も高く、ユーザーにとって何がもっとも良いかという視点から、新しい技術を積極的に取り入れている点も印象的でした。このような環境で働くことができたことは、私にとって非常に大きな刺激となりました。

おわりに

この短期インターンシップは、私にとって想像をはるかに超える学びと成長の機会を与えてくれました。Next.jsやTypeScriptといった未経験の技術に臆することなく挑戦し、はじめての本格的なチーム開発を通して、技術的な貢献だけでなく、チームの一員として協調し、課題を乗り越える経験が、私に大きな自信を与えてくれました

DeNAのメンターさんをはじめ、関わってくださった社員の皆様には、心から感謝申し上げます。皆さんのサポートがなければ、ここまでやり遂げることはできませんでした。

DeNAのインターンシップは、技術力だけでなく、コミュニケーション能力や課題解決能力といった人間力も磨ける最高の経験でした。

もし、この記事を読んでいるあなたが、DeNAのインターンシップに興味があるけれど、「自分のスキルは足りないのではないか」「本格的なチーム開発の経験がないから不安だ」と感じているなら、ぜひ一歩踏み出してみてほしいです。DeNAには、あなたの挑戦を歓迎し、成長を最大限にサポートしてくれる環境が間違いなくあります。

今回の経験を通して私は、自分がしてもらったようにほかの社員や今後できるであろう後輩をサポートし、現状に甘んじず色々なものに興味を持って成長を進めていく、そんな先輩のエンジニアのようなキャリアを歩んでいけばいいのだ、と将来像が明確になりました。この学びを活かし、これからも技術を追求し、社会に貢献できるエンジニアを目指していきたいと思います。最後までお読みいただき、ありがとうございました!

最後まで読んでいただき、ありがとうございます!
この記事をシェアしていただける方はこちらからお願いします。

recruit

DeNAでは、失敗を恐れず常に挑戦し続けるエンジニアを募集しています。