[チーム開発]本当に使ってもらえるものを開発する

# はじめに
本記事では、私が2回目のチーム開発を経て経験したこと、学んだことを書いていきます！
今回のチーム開発では1回目のチーム開発の反省を生かして進めていったので、[チーム開発1回目の記事](https://qiita.com/ryunosukematsuoka/items/c338bab9b8db32b4aea9)も参考にしていただけると幸いです！

# 解決したい課題は？

現在、私は内定直結のエンジニア実習ができるサービス[アプレンティス](https://www.youtube.com/watch?v=3B8RyrN9bls)に参加しています。

アプレンティスでは、毎日、学習したことの振り返りとして**日報**を書きます。
その日報で以下のような課題がありました。

:::note warn
- 仕事や用事で日報を書くのが大変💦
→日報を書かない人も出てくる

- 内容がマンネリ化してしまう💦
→日報本来の目的である振り返りがおろそかになる
:::

そこで、これらの課題を解決するために、
**「<font color="ligreen">アプレンティス生に特化した日報作成アプリ</font>」**
を作ることになりました！

# 課題は解決できた？

結論から申し上げますと課題は解決できました！

**では、どのように解決したのか**

:::note warn
### **課題1. 仕事や用事で日報を書くのが大変💦**
:::

<font color="ligreen">可能な限り手軽に日報をかけるようにしました。</font>

**従来**：すべて手書きで日報を作成していた
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3638476/4f43084b-4a9a-b808-c81a-9b376344ed7d.png)

**アプリを使えば**：必要最低限の入力で済む
<img width="100%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3638476/20d0ca22-ec42-7a9a-8ca2-58f4d6018bec.gif" alt="">

**メリット1**
日付や学習時間は選択するだけでOK！

**メリット2**
明日やることとして保存しておけば次の日のタスクにそれが反映されます。なので、毎日するタスクなどを記入する手間が省けます。


:::note warn
### **課題2. 内容がマンネリ化してしまう💦**
:::

<font color="ligreen">PDCAサイクルを用いての振り返りを促し、さらにAIを用いて日報をレビューできるようにしました。</font>

**従来**：毎日同じような内容になってしまい日報の意味がなくなってしまう


**アプリを使えば**：PDCAフォーマットとAIを活用した振り返りができる。

# 使用技術
- **フロントエンド**：React
- **ソース管理**：Git／GitHub
- **インフラ**：Vercel

今回の開発ではデータベースを使いませんでした。
理由は2つあります。
1. 少量のデータしか保存しない
1. 一時的にしかデータを保存しない

また、コンポーネントごとに開発を進めるためにReactを使用しました。

# チーム開発の流れ
チーム開発の流れとしては前回とほとんど同じでしたので、異なる点や反省を生かした点をメインに書いていきます。

- **前回の反省点：** 完成が発表当日になるほどぎりぎりの開発だった
→早めにガントチャートを導入し余裕を持ったスケジューリングをした

### 1. アイデア決め
- **前回の反省点：** 本当に使ってもらえるようなものを考える
→ターゲットをアプレンティス生に絞り自分たちが本当に必要とするものを考えた



### 2. スライド作成
前回と同様にチームで作るもののイメージを共有するためにこの段階でスライドを作成しました。

### 3. 要件定義

- **前回の反省点：** 認識のずれを100%なくす
→全員で設計を進めることで細部まで認識のすり合わせができた

今回は以下2つの要件定義を行いました。
#### 1. 業務フロー
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3638476/db6ff47d-6689-3be8-fcfe-5187e87e2c6b.png)

:::note info
ポイント
- 登場人物を明確にする
:::

#### 2. 画面遷移図、ワイヤーフレーム
チームメンバー全員で画面遷移図、ワイヤーフレームを作成しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3638476/25fa825a-4782-e6b3-4fb0-a4ec8e4b73d2.png)


### 4. タスク出し
- **前回の反省点：** ゴールから逆算してタスクを出す
→必ず実装すべき所と後回しでいい所と分けてタスク出しをした

今回はReactを使っての開発だったので、コンポーネントごとに実装を担当しました！


### 5. 実装

- **前回の反省点：** やりすぎくらいの **報連相** を意識する
→常にDiscordで連絡を取り合えるようにしながらチーム開発を進めた

また、今回は初めてReactを使ったので、実装に移る前にチームで勉強会を開いたり、自分で調べたりしました。

### 6. 発表
- **前回の反省点：** 実装をもう少し早く終わらせて練習時間を担保すべきだった
→実装が早く終わったので練習時間を担保できた

また発表自体はチームメンバーの方がやってくださったが、前回と違って自分も発表の練習をできたので良かった！

# チームの振り返り
## 良かった点
### 1. 本当に使ってもらえるものを開発できた

前回のチーム開発での一番大きな反省点としてこれが挙げられました。
ですから、我々アプレンティス生としての課題を解決することで、実際に使ってもらえるものを開発しようとしました。
結果的に自分たちチームメンバー含め、ほかの方たちにも使っていただいています！
実際に使ってみて改善点も多くあるので、また時間があるときにアップデートしたいです。

### 2. 早め早めにチーム開発を進められた
早め早めにチーム開発を進めることでかなり早い段階で実装に移れました。
これも前回の反省を生かして早めにガントチャートを導入したことが功を奏しました。
実務では納期があるのでバッファを設けて進めていきたい。

### 3. アジャイル開発で進められた
今回は早めに開発が進んだこともあり、使える状態にしてから機能を足していった。
ただ反省点として、どこまで実装したら使える状態なのかまで設計の段階で決めておくべきだった。


## 改善点
### 1. プレゼンの内容をもう少し考えるべきだった。
今回は5分という時間制限がある中でのプレゼンだったので、どの機能を説明すべきかもう少し考えるべきだった。
どれだけ自分たちで頑張って実装しても、評価されるのはプレゼンでのたった5分間なのでそこをもう少し意識する。同様に実務では評価されるのはお客様に使ってもらうところなのでそこを意識すべきだと思った。

# 個人の振り返り
## 良かった点
### 1. 初めてのReactだったが実装できた
自分で公式ドキュメントなどで調べながらReactで実装できた。自分がReactを使ってみたい！とチームのメンバーに押し付けてしまったが、快く教えていただけた！

### 2. 粘り強くtry and errorを繰り返せた
今回はReduxを使っての実装にかなりてこずったが、何とか調べながら動くところまで持って行けたので良かった。

## 改善点
### 1. 時間がかかっていたらメンバーに報告する
今回はReduxで詰まっていて一日強かかってしまったが、その間メンバーと連絡を取っていなかったので、時間がかかっていることを伝えるべきだった。
その反省を生かしてほかの機能で詰まった際はメンバーに伝えて巻き取ってもらった。

自分一人で解決しようとしてしまうので、時間がかかっていたら助けてもらうべき！

# 最後に
今回は惜しくも1票差で**Best Award**は逃しましたが、チームメンバー全員で反省を生かしたチーム開発ができたので結果以上に満足しています。
また、Reactでの実装を快く受け入れてくださったチームのメンバーに感謝します(__)ありがとうございました！

アプレンティスでのチーム開発は今回で最後となりますが、これからもチームメンバーと共に切磋琢磨していきます！

ここまで読んでくださりありがとうございました！