はじめに
はじめまして!東京工芸大学芸術学部3年の山根雄飛です。これまで約2年間、Android開発に携わりながら、クライアント側からサーバー側まで幅広い実装経験を積んできました。
私は2024年10月に「CA Tech Job」のインターン生としてABEMAに1ヶ月間参加し、AndroidTVアプリの課金機能開発に取り組みました。
本記事では、インターンシップを通じて学んだ技術的な知見や、CyberAgentの文化について紹介します。
インターンシップへの参加経緯と目標
私が「CA Tech Job」に応募した背景には、これまで約2年間にわたり実務で培ってきたAndroid開発の経験をさらに活かし、新しい領域に挑戦したいという強い意欲がありました。特に、UI中心の開発から一歩進んだ非UI機能に取り組むことで、より幅広い技術力を身につけたいと考えていました。具体的には、プラットフォームの課金処理やユーザーごとの管理機能の実装に挑戦することで、システム全体の理解を深め、技術的な幅を広げることを目指しました。
また、アプリのパフォーマンス改善に挑戦してみたいという理由でCYCOMPEに参加しました。このイベントでは、Android部門で優勝することができ、これがきっかけとなり、ABEMAのAndroidTVチームでのインターンシップに参加することになりました。
本インターンの目標
これまでの課題として、技術的にはアプリの基本的な制作以外の能力、特にプラットフォームの課金周りやユーザー管理の実装経験が不足していました。また、コミュニケーション面では他職種とのキャッチアップ経験が乏しく、効果的な情報交換方法に課題がありました。
これまでの経験を踏まえ、私のインターン開始時に設定した目標は二つあります。第一に、技術力の向上です。AndroidTVや非UI機能の実装について深く学び、サービスやプラットフォームに最適な実装ができるようになることを目指しました。第二に、コミュニケーション能力の向上です。特に他のプロダクトマネージャーやデザイナーとのキャッチアップに慣れ、効果的な情報共有方法を習得することを目指しました。
担当したタスクについて
私の担当したタスクは、ABEMAプレミアムの購入フローを改善し、ユーザー体験を向上させることでした。
配属当時、ABEMAプレミアムの購入を試みた際に、ユーザーがメールアドレスを登録していなかった場合、「メールアドレスの登録が必要です」というポップアップが表示されていました。ユーザーはメールアドレスを登録するために設定画面まで移動してメールアドレスを登録し、再度購入ページに戻る必要があった為、ABEMAプレミアムの登録までのフローが煩雑で不便を感じることが多かったです。
そこで、ユーザーがABEMAプレミアムを購入する際にシームレスにメールアドレスを登録できるようにするため、購入フローにメールアドレス登録フローを追加する実装を担当しました。この機能は、ユーザーがプレミアムサービスに円滑に移行できるようサポートすることを目的としています。
プロジェクトへのアプローチと実装プロセス
まずは仕様の詳細やデザインについてプロダクトマネージャーやデザイナーに確認するところからタスクを開始しました。
まず、詳細な仕様が決まっていなかった事もあり、プロダクトマネージャーから実装の背景を確認しつつ、具体的な要件を決めていきました。これにより、実装すべき機能の全体像を把握することができました。仕様が決まった後、今回の実装に合わせてデザインを変更することになったので、デザイナーから新しいデザインを受け取り、実装しました。実装したアプリをデザイナーに渡して、デザインレビューを受けながら修正しました。最後に、GitHub上でPRを作成し、コードレビューを受けました。指摘された点を修正後、最終的にマージすることができました。
この一連のプロセスを通じて、タスクの開始から完了までの流れを理解することができました。プロダクトマネージャーやデザイナーとの密な連携を通じて、ABEMAでのプロジェクト進行方法やチーム内での役割を学びました。
成果と気づき
一連の流れを通して、このタスクがどのようにプロダクトへ貢献しているかを深く考えることができました。ユーザーがABEMAプレミアムに登録する際の障壁を低減することで、登録のしやすさが向上し、結果として収益の増加にも繋がります。また、プロジェクトを通じてプロダクト思考の重要性を認識し、ユーザーの行動やニーズを考慮した実装がプロダクトに与える影響を実感しました。また、このようなプロダクト思考で考える上で、実際のアプリの機能や別プラットフォームの挙動、競合となるサービスについて理解することも重要だと感じました。
技術的な学びとプロダクトへの貢献
今回、課金周りのタスクを受けるにあたり、実際のアプリ内で発生する課金フローやドメインのキャッチアップを行いました。特に、Apple、Amazon、Googleそれぞれのプラットフォームが提供するサブスクリプションプランの違いについて深く学ぶことができました。
さらに、内容は同じでもプラットフォームごとに名称が異なるため、これらを適切に管理する必要があることを理解しました。例えば、ABEMAでは、Android TVやFire TVといったデバイスに対応するため、アプリ内で動いているOSがFire TVのものかどうかを見て、AmazonかGoogleの課金フローに分岐させる実装となっていました。この中でも共通の処理部分は共通化し、複雑ながらも効率的なコードベースを維持することができていました。この経験を通じて、異なるプラットフォーム間での課金処理の違いを理解し、それぞれに最適な実装を行う重要性を認識することができました。また、TVのFocus周りの実装やDDD(ドメイン駆動設計)のテストについても触れることができ、実践的なスキルを身につけることができました。
CyberAgentの企業文化と職場環境
今回、現場チームのメンバーとの面談や、部署を含めた様々なプロダクトのエンジニアとの交流ができ、私の中でのCyberAgentの理解が深まりました。
CyberAgentの魅力の一つは、若い社員が中心となって活発に動いている点です。若手エンジニアが多く在籍しており、ABEMAチームでも若手エンジニアが多く、他社とは違う雰囲気や勢いを感じることができました。
エンジニア同士や他職種とのコミュニケーションは非常に活発で、Slackや定期的なミーティングを通じて情報共有が行われています。特に1on1ミーティングやランチミーティングは、社員との交流を深める貴重な機会となり、技術的なフィードバックやキャリアに関するアドバイスを多く受けることができました。
また勉強会も充実しており、技術力向上やチームビルディングに大いに役立っていると感じました。特にエンタメや勉強系のイベントが社内外で多く、社員同士の交流が活発に行われています。これにより、異なるプロジェクト間での知識共有が促進されています。
自己成長と目標達成
インターン開始時に設定した目標は、技術力の向上と他職種とのキャッチアップに慣れることでした。具体的には、AndroidTV特有の開発環境や課金周りの実装を通じて技術力を高めること、そしてプロダクトマネージャーやデザイナーとのコミュニケーションを円滑に行うことを目指しました。
技術力の向上に関しては、TV特有のUIやモバイルとは別のTV専用ライブラリを使用した実装、課金周りの実装を通じて実務での経験を深めることができ、目標を達成できたと感じています。特に、ユーザー体験を向上させるためのプロダクト思考を身につけることができました。一方で、コミュニケーション面ではまだ改善の余地がありました。自身はあまり深く考えずに進めてしまう癖があり、メッセージの内容が分かりづらくなってしまったり、必要な情報が抜けていて、その分の手間が発生してしまうことがありました。
この課題を克服するために、今後は以下のことを意識して取り組んでいきたいと思います。それは自分が考えていること、悩んでいること、わからないことをどんどん吐き出していくことです。これにより、自分の苦手分野でもある自己開示が促進され、時間を有効活用しながら仕事の質を上げることができます。具体的には、コミュニケーションの仕方を学び、不明確な点を明確にし、議論のタネになるような情報を共有することで、より効果的な情報交換を実現したいと考えています。
最後に
このインターンシップを通じて得た経験と学びは、私の今後のエンジニアとしてのキャリアに大きな影響を与えるものとなりました。CyberAgentでの貴重な1ヶ月間を支えてくださったトレーナーやチームメンバーに心から感謝するとともに、今後は技術とプロダクトへどう貢献していくかを追求していきたいと思います。