enPiTを終えて

この記事は、筑波大学のenPiTという授業のレポートです。
enPiTを通して学んだことや感じたことについてまとめようと思います。

enPiTとは、簡単に言うとチームでのアジャイル開発を学ぼう！という授業です。より詳細については https://bizsysd.enpit.jp/ を参照してください。


# 開発したプロダクトについて
アルフォートというチームで「ゼロメモ」というプロダクトを開発しました。

- **[プロダクト](https://tmluku.github.io/ZeroMemo/)**
- **[Github](https://github.com/TMluku/ZeroMemo)**

## 概要
「ゼロメモ」は、買い忘れをなくしたいけどメモするのが億劫な大学生向けの買い物メモアプリです。既存の買い物メモアプリとは異なり、買いたいものを思い出すこと、またメモを取る手間を省くことが出来ます。

## 使い方
初めてゼロメモを使う時には、以下の動画のように画面上に説明文と青色のガイドの出るチュートリアルが始まります。まずは説明文と青色のガイドに従って、チュートリアルを一通り終わらせてください。最低限の使用方法が分かるはずです。

<img width="40%" alt="qiita用録画2.gif" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4000272/34a4e45c-58a2-e681-0a8b-e7ec9189352b.gif">

~~チュートリアルを終えた皆さんは使い方が分かるので、もう説明は不要でしょう。~~
せっかくなので、アプリの機能の詳細についてこの記事でも説明します。

### 「探す」
「探す」タブでは、以下の画像のように画面の中央に商品のカードが表示されます。このカードをスワイプすることで、**いる・いらない**を選択でき、**いる**にした場合はその商品をメモに追加します。**一つ戻す**ボタンで一つ前のカードを戻すことも出来ます。間違って**いらない**にした時使う想定。

<img width="40%" alt="qiita用録画_探す.gif" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4000272/934ce168-9188-125a-97f6-3705d165f685.gif">

上の「食料品」「調味料」「日用品」タブは、それぞれのカテゴリに属する商品のみを探すための機能です。
カテゴリのタブについては、「探す」「メモ」「カード」でも同様に選択することが出来ます。

### 「メモ」
「メモ」タブでは「探す」「履歴」で欲しい商品があった場合に追加した商品をまとめてメモとして表示します。また、自分で文字を入力してメモに追加することもできます。メモは個別に、もしくは全て同時に削除することが可能です。

<img width="40%" alt="qiita用録画_メモ.gif" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4000272/d03cd14a-0f9e-8993-a074-7bcda8ecd6f6.gif">

### 「カード」
「カード」タブでは「探す」タブに出てくるカードの管理を行うことが出来ます。カードゲームみたいに自分が買いそうなものだけ表示させるようにして、自分だけのデッキを作成しましょう()。

<img width="40%" alt="qiita用録画_カード.gif" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4000272/84fa01dc-6f9f-6d67-05f2-2bebdf398044.gif">

### 「履歴」
「履歴」タブでは「探す」タブで**いる**にして追加したものについて、追加した日付とその商品名をカレンダー形式で見ることが出来ます。先週これ買ったから今週も買おう的な想定。

<img width="40%" alt="qiita用録画_履歴.gif" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4000272/35a02b7d-38b8-60ee-3aaf-09d121373ce3.gif">

# チームについて
「ゼロメモ」は最初期には5人態勢で進めていましたが、秋学期に入ってからすぐに1人がチームを移籍したので、4人で秋学期は開発をしました。
役割としては、

- T. N. 
プロダクトオーナー(PO)です。意見を積極的に言ったり、場を上手くまとめたりしていて安心感がありました。
- J. N. 
開発を主に担当していました。技術力が凄すぎて実装面でかなり頼り切りになってしまった印象。
- R. T. 
発表がとても上手でした。最終成果発表会では、上手く発表してもらい本当に助かりました。
- kqse
自分です。基本的には開発の方向性やプロダクトの機能についてチームメンバーと議論していました。

スクラムマスター(SM)に関しては、ある程度のサイクル(2, 3スプリントくらい)で回すということをやっていました。

# 秋学期のプロダクト・チームの軌跡
秋学期は5スプリント×3回で5スプリント毎にロングレビューがありました。各ロングレビューに対して、どのような機能を実装するのか・どのようなことをレビューしてほしいか、という事を決めて開発を進めていきました。

プロダクトの主要機能の実装の順序と経緯は以下の通りです。

1. **メモ機能を実装**
あくまでも買い物メモアプリを作りたいから、メモ機能は最重要でしょって事で。
2. **Tinderみたいなカードを実装してそのカードをスワイプを実装**
スワイプでメモを自動的に作成できることが、既存のメモアプリとの差別化において重要に考えていた点なので。
3. **商品のカテゴリごとに分けて表示**
食料品を買いに行きたい時、日用品が出てきたらイラッとしない？と思ったので。
4. **チュートリアルの作成**
説明がないと操作方法が分かりづらいという声があったので。
5. **カードの編集画面を作成**
カードの表示・非表示を切り替えられたり、自分でカードを追加したいなって声があったので。
6. **履歴機能を実装**
以前、**いる**にしたものついてメモから削除してしまった場合に、わざわざ「探す」タブでもう一回**いる**にするのは手間だという事で。

それぞれについて、後に修正を加えたりしましたが、大まかな実装の順序としては上記のようになりました。議論するだけでなく、フィールドワークなどを通してユーザーレビューを貰えたことが、実装順序の方針決めにおいてかなり役に立ったと感じました。

また、スプリントを回していく中で、実装が1人に頼りすぎているという問題が浮かび上がりました。この問題を解決するために以下のようなことをしました。
- **他3人で実装出来そうな簡単なものは実装する**
- **実装したい機能について細かい仕様まで議論を重ねて考えることによって、後は実装してもらうだけにする**

これらの対策で、少しは負担の軽減が出来ていたかと思います。

最終的なチームAMF(チーム内における項目毎の振り返り)はこんな感じになりました。

<img width=70%" alt="スクリーンショット 2025-02-06 191618.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4000272/000b4a7b-3099-2214-d01c-24c4ff2961a3.png">

# 個人的振り返り
チームメンバーに恵まれたこともあり、楽しくチーム開発を学ぶことが出来たと思いまます。アジャイル開発という視点では、僕らのプロダクトはフロントエンド主体で構成されていたこともあり、かなりアジャイルな開発を出来ていたのかな、と思いました。また、ユーザー目線について意識をしながら開発というものは、実際にやってみると言葉以上に難しいことだと実感しました。

enPiTを通して、技術面で学ぶこともありましたが、それよりも**何カ月もかけてチームで一つのプロダクトを作る**という経験をできたのが大きいなと思います。
自分はB3の主専攻実験でこの授業を受講しましたが、行きたい研究室が決まっていない場合や他に興味を引くような実験があまりない場合は、主専攻実験としてのenPiTは割と良い選択肢だと思っています。

# 最後に
最後まで付き合っていただきありがとうございました！
今回参加したenPiTからB3以外でも参加できるようになったっぽいので、少しでも興味を持ったらenPiTに参加してみましょう！