はじめに
こんにちは。慶應義塾大学商学部に在学中の原慎之介です。2024年6月、「CA Tech JOB」で1ヶ月間のインターンシップに参加しました。この記事では、その間に得た学びを、「チーム開発」という部分に焦点を当てていくつか共有したいと思います。
CLとは
CLは、LDH所属アーティストのコンテンツを楽しめるオンラインサービスです。ライブのキャスト映像やミュージックビデオ、オリジナル番組など、さまざまな動画を視聴できるプラットフォームとなっています。
私はこのサービスのWebチームにジョインし、Reactを使って開発に携わりました。具体的な仕事内容としては、新しい機能の実装からテストまでを一貫して担当したり、Webサイトのアクセシビリティチェックを行ったりしていました。
一ヶ月の業務
コミュニティに投稿する枚数の上限を増やす
まず、CLのコミュニティページでの投稿画像の上限を増やす業務に携わりました。
また、これまでは画像の添付に失敗すると、成功した画像も含め全てをリトライする必要がありましたが、今回の改修で失敗した画像だけをリトライし、順番も維持できるようにしました。
E2EテストではPlaywrightを使用し、テストケースの作成や意図的に画像送信を失敗させるケースなど、柔軟に対応することができました。
Webアクセシビリティの調査
上記のタスクで1ヶ月を消化する予定でしたが、思いの外早く終わったので、CLのWebアクセシビリティの調査も行いました。
Webアクセシビリティとは、すべてのユーザーがWebサイトを利用できるようにするための基準です。
各項目に対して対応状況を確認し、普段何気なく使っているタグが実は重要な役割を持っていることや、逆に必要なタグが欠けていることが明らかになりました。
2024年4月から施行される新しい法規制により、Webアクセシビリティの対応が一層重要になっています。
この時期にCLでその重要性を学べたことは、今後の開発において非常に有意義なものになりました。
得た学び
私のような小規模なチームでしか開発経験のない者にとって、CLでの開発は新鮮な発見がたくさんありました。ここからは、実際に1ヶ月間チームで働いて得た学びをいくつか共有したいと思います。
全員がレビュアー
最初に驚いたのは、プルリクエストに全員がレビュアーとしてアサインされていることでした。普段は上司からレビューされるだけで、自分からレビューすることがなかった私にとって、これはとても新鮮な体験でした。このように複数人でレビューを担当することには、主に二つのメリットがあります。以下で詳しく説明していきます。
開発が人に依存しない
複数人でレビューを行うことで、コードが特定の個人に頼らない状態になります。チーム全員がコードを理解し、プロジェクト全体を把握できるようになります。これにより、メンバーが休んだり退職したりしても、プロジェクトへの影響を最小限に抑えられます。結果的に、長期的なプロジェクトの安定性が非常に向上します。
それに加えて、メンバーが作業内容をある程度理解しているので気軽に相談し合える雰囲気も生まれます。
コードの品質向上
複数人でのレビューは、コードの品質を大幅に向上させます。様々な視点や経験を持つメンバーが確認することで、一人では気づきにくい潜在的なバグや非効率な実装を早期に発見できます。実際に、私が1ヶ月間働いている間にも、レビュアーの一人がバグを指摘してくれたおかげで、リリース前に修正できたという経験がありました。
また、設計の改善点や最適化の提案も得られやすくなります。結果として、堅牢で保守性の高い、質の高いコードが生まれやすくなります。このようなプロセスは、長期的なプロジェクトの成功に大きく貢献します。
トランクベース開発
トランクベース開発は、開発者が頻繁に小さな変更をメインブランチにマージする手法です。この方法により、開発チーム全体のコードが常に最新の状態に保たれます。
メリット
トランクベース開発のメリットとして、変更が迅速に取り込まれるため、各開発者の作業が他のメンバーとスムーズに統合される点が挙げられます。これにより、コンフリクトが発生しにくくなります。また、短いリリースサイクルによって、新機能や修正をユーザーに早く提供することが可能になります。
CLでのトランクベース開発
CLのWebチームではこの方法を採用しており、複数プロジェクトの同時開発が可能になっていました。頻繁なマージにより、問題の早期発見と迅速な対応が実現でき、全体的なプロジェクトの進行がスムーズになります。
インターン期間中、大規模なプロジェクトが進行していましたが、フィーチャーフラグを活用したトランクベース開発が行われていたおかげで、私の変更内容をメインブランチにスムーズに統合することができました。
トランクベース開発および先述のフィーチャーフラグに関しましては、同サイトのこちらの記事で詳しく紹介されていますのでぜひ確認してください。
プロジェクトに対する意見の出しやすさ
これは開発そのものからは少し離れてしまいますが、エンジニアとして働くにあたってとても魅力的に感じたので紹介します。
CLでは、複数のプロダクト開発プロジェクトが並行して進行しています。これらのプロジェクトにおいて、プロジェクトマネージャーの役割は固定されておらず、誰もがオーナーシップを持って主導する機会が与えられています。
このような環境は、就職活動の際に「オーナーシップ」を重視していた私にとって、非常に魅力的でした。
(おまけ)社内ドキュメント、すごい充実してる
インターンをしている1ヶ月間は、サイバーエージェント社内のみで共有されている技術ブログが見放題になるのでとにかく読んでみるのをオススメします。私は1ヶ月間舐めるように見ていました。
まとめ
インターンシップを通じて、大規模なチーム開発を行う上での基礎を学ぶことができました。
また、「CA Tech JOB」自体メンタリング制度が非常に厚く、自分の就活の軸などのブラッシュアップもしていただきとても充実した1ヶ月間になりました。
トレーナーの方をはじめ、やりたいと言ったことを積極的にやれる環境を提供してくださったWebチームの皆さんには感謝でいっぱいです。これからも引き続き頑張ります。1ヶ月間ありがとうございました!