見出し画像

24年新人研修グループ演習「YouTube風動画共有アプリ」

株式会社アクティブ・ワーク(以下、当社)では、例年4~6月末までの約3ヶ月の間、新人研修を行っております。新人研修では様々なカリキュラムがあり、研修の締めとして世の中にある著名なWebサービスを例題に、そのWebサービスを自分たちで1からプログラミングするグループ演習を行っております。

今回は、グループ演習の1つ「YouTube風動画共有アプリ」についてご紹介します。



開発背景

私たちは、YouTubeの擬似Webアプリケーション「mntube」を作成しました。アプリ名の由来は、アプリの名前を考える際に私たちは「命名ナンセンス」であるため、研修で使われる「mn(命名ナンセンス)」という言葉を使い「mntube」としました。
開発人数は7人で、これまでの研修で学んできたJava、HTML、CSS、JavaScript、SQLなどの技術を用いました。

アプリ概要

「mntube」は、動画共有サービスであるYouTubeを模したWebアプリケーションです。
主要な機能として以下があります。
・動画投稿
・動画閲覧
・ライブ配信
・プレミアム機能
チャンネルを作成すると、動画投稿、ライブ配信が可能になります。
アカウントなしでも動画の視聴はすることはできますが、アカウントを作成することで、動画やライブ配信に対してのコメント、いいねをすることができるようになります。また、プレミアムに入ることで、動画の広告を表示しないようにすることができます。

アプリの機能

アプリの機能一覧

・ログイン機能
・動画投稿
・動画再生 
・再生リスト
・コメント
・ライブ配信
・ホーム画面
・検索機能
・マイページ
・チャンネル登録
・プレミアムメンバーシップ機能
・広告
・追加機能(コメントが動画再生で流れる)

開発環境

フロントエンド     :Bootstrap/jQuery
バックエンド      :Java8
データベース      :Oracle Database
アプリケーションサーバー:Apache Tomcat
実行サーバー      :CentOS
ソースコード管理    :GitHub
ローカル開発環境    :MacBook Air/Eclipse2024-03

設計書

画面遷移図(一部抜粋)

テーブル定義書(一部抜粋)

制作過程

作業人数  :7人
作業期間  :2024年6月3日(月)~2024年6月27日(水)
作業日数  :19日
日の作業時間:8時間

全体スケジュール

1週目(要件定義・詳細設計・実装)

まず、YouTubeを利用する上で必要な機能を洗い出しました。
その後、設計担当、DB担当、機能一覧、画面遷移図担当に分かれました。

次に、完成した機能一覧をもとにメンバーごとに機能の担当、スケジュールを決めました。自分のやるべきこと、スケジュールが明確になり作業を効率的に進めることができました。

1週目から実装に入るメンバーの詳細設計、画面遷移図を優先し、ヘッダー、ログイン機能のメンバーは実装に移りました。

2週目(実装)

要件定義、詳細設計が2週目の最初まで伸びましたが、終わり次第各自、実装に移りました。実装するにあたって、グループのルール事項を作成しSlackのスレッドなどを使用し、情報共有を多く行い、全員が共通認識を持ち実装を進めました。

3週目(実装・テスト)

最後の週には、残った実装と単体テスト、結合テストを行いました。
本番環境で動かないなどの不具合が起こり、何度も修正を重ねました。

振り返り

Keep(継続すること、良かったこと)

・Slackの活用
  ・SlackのCanvasを使った情報整理
  ・Slackのスレッドで情報を共有
・一時間タイマー
・実装の担当者分け
・迅速な情報共有

Problem(問題点、反省点)

・報告の遅延
  ・スケジュールに遅れが出そうな段階で相談しなかった
  ・遅れが出ても「なんとかしなきゃ」だけで報告しなかった
・遅れている工数の把握が出来ていない
  ・個人単位で何日遅れているかの報告のみだった
  ・グループ全体で何人日遅れているかまとめていなかった

Try(次回に向けて、改善点)

・報連相確を迅速に
・怪しいと思ったら実際に遅れが発生する前に相談
  ・実際に遅れが出たら即報告
・開発の進捗は工数で把握する
  ・グループ全体で何人日分の作業が終わったかまとめる
  ・各機能で何人日という単位で考える

苦労した点

・初めて扱う技術が多く、調査に時間を費やした
・実際にコードを書いてみると足りないものが出ることが多かった
・1週目の機能の洗い出し、詳細設計の詰めが甘く、実装週でも仕様の確認を頻繁に行った

まとめ

ほとんどのメンバーがアプリを作成したことがないグループでした。
その中、機能洗い出しでたくさんの機能が出てきた際、メンバー全員とても不安な気持ちになりました。しかし、各々が担当の機能を責任を持って取り組むことで、サーバーにデプロイして動作するものを作ることができた際には、大きな自信に変わりました。

今回のグループ演習では、情報共有を多く行うことが必須で求められたので、改めて、報連相確の大切さをメンバー全員が実感することになりました。この経験を配属後も忘れずに、活かしていきます。