💡

【チーム開発】Apprenticeでチーム開発を体験したお話

2024/02/02に公開

はじめに

僕は2023年11月から「アプレンティス」というエンジニア学習プログラムに参加しています。
そのプログラムの中で、チーム開発があり先日行われた発表会ではメンターの方々からBest Awardsに選んでいただきました。
この記事では、チーム開発での開発工程、アプリケーションの紹介、良かった点、反省点など学びの整理をしていきます。

チーム開発実装期間前の過ごし方

事前に、アプリのコード実装開発期間は1週間と決まっていました。
それまでの期間にチームメンバーでミーティングを重ね、チーム開発期間が始まったらすぐにコード実装をスタートできるように準備を行いました。
その準備内容を下記にまとめておきます。

1.課題定義

テーマは、「自分たちの役に立つものを開発せよ」 というものでした。
そこで自分たちチームが挙げたのは、タスク管理と時間管理について。

現状

  • 提出Questの締切を厳守するために、タスク管理とタスクにどれくらいの時間が掛かるのか把握しておくことが重要。

課題

  • 提出Questの締切でいつも慌てる。
  • 一つのタスクが自分が見積もっていた以上に大幅に時間が掛かってしまっている。

これらの課題を解決するアプリケーションを作ったらどうかという意見が出たため、タスク&時間管理アプリを制作することに決定しました。

2.要件定義

  • タスクに対して実績を踏まえた定量情報でタスク管理
    実績が積み上げ、実績が伴ったタスク管理をしていければ、より効率的にタスクを積み上げてイレギュラータスクが発生しても柔軟に対応できる

  • さらに同じタスクを行なっている人と共有すれば
    タスク効率、時間配分の比較でなんであの人あんなに仕事が早いんだろ?
    そんなに勉強してないのにめっちゃ成長してるのなんでだろうの謎が解ける。
    比較できる事で学習、スキル取得、業務効率改善へ。

定量情報 Weblio国語辞典

3.インセプションデッキ

インセプションデッキについて話し合うことで、開発のイメージを具体化し、優先順位や認識の共有を図りました。

詳しい内容

1.我われはなぜここにいるのか

目的:プロジェクト(QUEST)を円滑に進めるタスク管理アプリを作る
①プロジェクト(QUEST)が遅れるのは、タスクの見積もりの甘さ(バイアス)に原因がある。
②実際のタスクを定量化し可視化することで「実際にかかる量」にバイアスを矯正する
③タスクの見積もりが正確になりプロジェクト(QUEST)が円滑にすすむ

2.エレベーターピッチ

タスク管理の肝は「ちょうどいい見積り」
タスク管理がうまくいかない理由、それは「見積時間が間違っていること」が原因です。
このアプリはそのタスクにかかる「正しい時間」を提案します。
「終わらないタスク」「遅れるプロジェクト(QUEST)」に悩むすべての仕事人に送る「正しい時間見積り」ができるようになるタスク管理アプリです。

3.パッケージデザイン

使用しやすいようにシンプルなデザインでまとめる。

4.やらないことリスト

やることリスト

  • タスク登録
  • 実績登録(タスクごとの振り返り)
  • タイマー
  • 実績タスク項目・時間蓄積 + 可視化
  • 投稿機能(Discord)投稿
  • ログイン機能(ユーザー登録機能)

やらないことリスト

  • 人との共有

やるか、やらないか、後で決めるリスト

  • アラート機能
  • 通知機能
  • ChatGPT 140文字要約・誤字脱字 自動修正
  • タスク実行状況に応じたアニメーション

5.ご近所さんを探せ

  • パートナー
    • チームメンバー
  • 顧客
    • アプレンティス生
    • 学習中の方
    • ルーチン業務をしている方
  • ステークホルダー
    • メンター

6.解決案を描く

プログラム言語:

  • HTML
  • CSS
  • JavaScript
  • PHP
  • SQL(MySQL)

ライブラリ

  • グラフ
    • chartjs
  • ツール
    • Git / GitHub
    • Figma (デザインツール)
    • ローカルサーバー or Docker(未定)

7.夜も眠れない問題

  • スキル不足

8.期間を見極める

  • 1月27日(土)

9.トレードオフスライダー(優先順位)

優先順位
機能を全部揃える(スコープ遵守) ★★★★★
予算内に収める(予算遵守) ★(予算なし)
期日を死守する(納期遵守) ★★★★★
バグを出さない(品質遵守) ★★

※致命的なバグはここでは含めない。

10.何がどれだけ必要なのか

期日:1月27日(土)
スキル:学習範囲内のプログラムスキル、ライブラリ・API利用知識

インセプションデッキについての記事
https://do-scrum.com/inception-deck
https://abi-agile.com/inception-deck

4.設計

アーキテクチャ

データベース設計

ワイヤーフレーム

チームメンバー全員でデザインのアイディアを出した後たたき台を作成して、最後は僕の方である程度使いやすそうな形まで整形しました。
Figma ワイヤーフレーム

ロゴマーク

チームメンバーの方がお手隙の際にロゴを作成してくださり、そのまま採用させていただきました。
ありがとうございます。

タスクばらし

僕がワイヤーフレームや環境構築をやっている際にチームメンバーの方がタスクばらしの方をやってくださりました。
開発の手法としては、メンバーは機能ごとにタスクを振り分けていく形となりました。

  • ログイン機能
  • カレンダー機能
  • タイマー機能
    上記のような形で機能ごとに担当を振り分けました。

環境構築

環境構築は僕が担当させていただき、今回はDockerを使用して開発を進めていく方針でした。
Dockerでの環境構築は初めてだったのでかなり苦労しましたが、なんとか実装期間が始まる前にチームメンバーの皆さんの方でも動くことが確認できるものが共有できたのは良かったです。
また、チームメンバーの皆さんはDocker自体を使用したことがなかったのでそれを考慮して、README.mdに使用するコマンドの説明についても載せることでメンバーの皆さんが構築で時間をかけることのないようにしておきました。

構築内容
PHP8.3.1-apache
MySQL8.2

ライブラリ
xdebug

スライド作成

実装期間の最終日に発表会があるため、あらかじめプレゼン用のスライド作成もほとんど終わらせておきました。
どのような発表にするかの流れに関してのたたき台をチームメンバーの方に作成していただき、最後に自分の方で発表するアプリのデザインに合うようにスライドを作成していきました。

5.予定管理・進捗管理

チーム開発を進めていく中で、予定管理と進捗管理は必須だったため、Notionというメモアプリのボードとガントチャートを活用しました。
予定管理

進捗管理

Chodoii Task 機能紹介

今回作成したChodoii Taskの機能を紹介します。

ログイン機能
メールアドレスとパスワードによるログイン

カレンダー機能
flatpickerというJavsScriptのライブラリを使用し、日付を選択できるようにしました。

タスク管理機能
その日に行うタスクの登録や削除をここで行います。

タイマー機能
登録の行われたタスクがSelectボックスにて選択できるようになり、実際にタイマーにて計測が行えるようになります。また、タイマーの下の方ではその日に行ったタスクの学習時間が表示されます。

計測時間可視化
過去に学習したタスクの総学習時間を元に1日毎平均のそのタスクにかかる時間がグラフとして可視化されます。

振り返り保存機能
1日の感想などをテキストボックスに書き保存および、Discordに投稿ができるようになっています。

作品のリポジトリはこちら
GitHub:Chodoii Task

良かった点

  • 初期の段階で予定管理を行なっていたことで多少各タスクで遅れがでた時にでも少し日程調整をすれば修正が可能であったこと。
  • チームメンバー同士でどうすれば良いものになるなどをしっかりコミュニケーションをとって伝え合っていたこと。
  • Notion でチーム開発の情報整理・共有をしたことで、情報のやりとりや振り返りがスムーズになった。
  • データベースやDocker環境などの事前準備ができていたため、スムーズに開発をスタートできた。
  • 課題を明確にし、課題に沿ったコンセプト通りのプロダクトを作成することができており、メンバー全員が課題解決に対して意識して最低限必要なものの作成に集中して取り組めていたこと。

反省点

  • チームメンバー間でプログラミング歴や知識・技術に差があったため、メンバーが何をしようとしているのか分からない部分があったので、事前にもっと詳しく説明したり、情報共有をすれば良いと感じた。
  • 上記に連なってもくもく会などの技術会を定期的に開くことで、技術力の差をできるだけ無くしていくことなどの行動が大切だと感じました。
  • 開発期間までに実装方法などを調べきれていなかったため、事前に調べておくともっと効率よく開発できた。

さいごに

まずは、チームメンバーの皆さんありがとうございました。
チームメンバーと協力して1週間でなんとかアプリを作り上げ、Best Award を受賞できたことは励みになりました。

足を引っ張るわけにはいけないと思いながら作業を行い、最終日まで時間を費やして必死にエラーと戦いました。
結果的に、チームメンバーが各々担当したログイン機能、タスク管理機能、タイマー機能などそれぞれについて、メンターからお褒めの言葉をいただくことができ、チーム開発としてそれなりの成果を出せたのではないかと思います。

今回の学びを大いに活かして、さらによいチーム開発にできるようにしたいです。
ここまでお読みいただいてありがとうございました。
少しでもチーム開発をされる方々などの参考になれば幸いです。

Discussion