enPiT個人レポート

筑波大学の[enPiT](https://enpit.coins.tsukuba.ac.jp/)という授業でチーム開発をした時の個人レポートです。
作成したプロダクトの紹介や、開発を通して感じたことを書いていこうと思います。

## 開発したプロダクト名:Goodbuy

- [Chrome拡張機能](https://github.com/Memolution/Goodbuy_ChromeExtension)

- [webアプリ](https://bloodcurdling-cemetery-16965.herokuapp.com/will/)

## プロダクトの紹介
### このプロダクトを作ろうと思った経緯

- **ペルソナ**
  - 21歳の大学生。趣味は読書。いろんな本をネットで買っている。
- **課題**
  - 買ったものを最後まで使わない
  - 買って満足してしまって終わり
  - よく考えたらいらないものだった
- **解決策**
  - 買い物の理由を言語化する習慣を作る
     - 買う前に理由を考えられる仕組み
     - 何か買う前に使ってもらえる仕組み

購入理由を記述することで、客観的に自分の思考を整理したり、過去を見つめ直したりすることができると思い、このGoodbuyというプロダクトを作成しようと考えました。

####簡単に説明すると
######エレベーターピッチ
> Goodbuyは目的のない買い物を解決したい慎重に買い物をしたい人向けのWebサービスです。
これは購入理由を記述するタイミングを与えることによって、
家計簿・買い物リストとは違って理にかなった買い物を実現できます。

### 使い方
[Chrome拡張機能](https://github.com/Memolution/Goodbuy_ChromeExtension)
上のリンクからzipファイルをダウンロードすることで使うことができます。

1. Amazon,楽天市場,Yahoo!ショッピングの「買い物カートに追加」をクリック
2. 出てくるポップアップの「OK」をクリックするとwebページに飛んで購入理由を記入するフォームが表示される。
拡張機能のアイコンをクリックすることでも同じwebページに飛ぶことができます。
![Screen Shot 2021-02-09 at 23.31.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/708343/28d92bf6-7d51-6f8e-d1d9-f2873e76f36e.png)
3. 購入理由を言語化する
   - 購入理由を記述する場合:「エレベーターピッチ風」と「自由記述」で好きな方を選択して記述する
   - 質問形式で言語化する場合: 購入する商品のカテゴリを選択し、そのカテゴリに応じた質問を5つ回答することで言語化する
![Screen Shot 2021-02-09 at 23.35.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/708343/8599cae2-a587-5db5-5bdd-992440826113.png)

4. 作成した文章はtwitterに投稿したり、pdfとして保存したりすることができます。

[webアプリ](https://bloodcurdling-cemetery-16965.herokuapp.com/will/)
これが作成したwebページへのリンク。
拡張機能を入れずとも購入理由を記述して投稿、保存ができます。
まあ、使ってみるのが一番わかると思います(笑)

## チーム開発について

####自分のチームの役割
- **コミュニケーション面**： 後で述べますが、オンラインでの開発とあって、人と面と向かって話すことができなかったので、どうにかして他の人が話しやすいように雰囲気を作りたいなという意識を持ってこの開発に取り組みました。具体的には、沈黙しているときに今何をしているのかを聞いてこまめにコミュニケーションを図ったり、暗いトーンではなく明るいトーンで少し笑いを入り混ぜたりといった具合です。
- **技術面**:全然知識がなかったので、力になれなかったですが、モブプログラミングでドライバをやって開発に携わりました。反省は後で述べます。

他のチームメンバーからのコメントはこんな感じです。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/708343/d1cd64e2-47ff-4f40-55a8-e95aef02bc0e.png" width=50%>

#### チーム開発の印象
- **良かったところ**
  - **早期リリースすることができた**:他のチームからのフィードバックをたくさんもらうことで開発期間内にたくさんの修正をすることができました。
  - **プロダクトの価値について深く考えることができた**:このプロダクトって端的に言えば買い物に時間をかけさせているっていうひねくれたプロダクトですが(笑)、ターゲットを絞ったりこのプロダクトの必要性を時間をかけて考えたりしたので、価値のあるプロダクトにできました。
  - **勉強の意欲が沸いた**： チーム開発とあって、他の人に触発されて自分ももっとやれることがあるなと考えさせられました。


- **悪かったところ**
  - **沈黙の時間が多い**:オンラインだからこそもっと積極的に発言していかないとチームの雰囲気は暗くなってしまうなと感じました。それが作業スピードにも影響したり、それぞれの考え方の相違を生んだりしてしまう。雰囲気大事。
  - **個人スキルの差**: それぞれ今まで勉強してきたことは違っていて、それをどうフォローしあっていくのかを考えるのは難しいなと感じました。それがチーム開発の面白さでもあるのかな。

## 個人的に感じたこと
このenPiTでの開発を通して感じたことがたくさんありました。
#### オンラインでの開発って難しくない?
コロナでオンラインでの開発とあって、最初はほんとに戸惑いました(笑)。使ったこともないアプリ(Discord,miroなど)がたくさん出てきて正直大変でした。ですが、先生やメンターの方が親切に教えてくださったので、なんとかやり切れたと思います。

チーム決めの時も顔も見た事ないし、喋ったことも無い人と一緒のチームになって期待よりも不安の方が大きかったです。声でしかコミュニケーションが取れないのでお互いが少し遠慮してるのかな？とか話を切り出しづらそうだなとは感じました。
だからこそ、開発中にたくさん発言してチームの雰囲気を良くすることはとても大切で、それがプロダクトの価値を高めるのに必要なことでもあると思います。

#### 客観的な意見は大事
今回enPiTでの開発とあって、他のチームの方からフィードバックをもらう機会があったのですが、自分たちのチームでは気づかなかったことがよく出てきました。
開発側の考えとユーザーの印象というのは必ずしも一致しない。その客観的な意見を授業という形ですぐもらえて修正できるというのは貴重だなと思いました。

#### 言語化は大事
このプロダクトの売りでもあるのですが(笑)、ただ考えているだけでは全然考えがまとまっていないなと感じました。
この後の流れなどをきちんと文章として残したり、それぞれの意見や約束事を話すだけでなく、文字におこすことが、考えをまとめる上で大切だと感じました。後から見たときにすぐ思い出せるし。

#### 技術が足りない
チーム開発を通して、自分の技術不足をかなり痛感しました。チームの中に技術面で強い人がいたので、なんとかプロダクトにはなったのですが、全然力になれませんでした。
今回使った言語としては、python(flask),javascript(vue.js)でしたが、少し触ったことがある程度ではまるでわかりませんでした。
多分、自分はインプットだけして、できた気になっていたからだと思います。それと勉強不足。これを機にもっと勉強したことをアウトプットしていこうと思います。

#### docker面白い
途中から環境構築にdockerを使いました。その時は他の人が実装してくれて「こんなものがあるんだ」程度にしか思っていませんでしたが、詳しく学びたいなと思って自分なりに独学してみたらめっちゃ便利で感動しました。ただそれだけです。

#### モブプロ良かったな
チーム開発のコーディングでよくやったのがモブプロです。自分は知識は全然なかったのでよくドライバをやっていましたが、他の人の知識を借りて、自分も学びながら開発できるというのがとても楽しいなと感じました。ただ自分がドライバ終わった瞬間に何もできなくなるのが悔しかった。

#### 個人勉強問題
チームメンバーでそれぞれ知識の差があるわけで、それを授業外の時間に個人勉強して埋めることができたのか？

個人的な意見としては正直「**難しかった**」です。

開発中にそのコードが何をしているのかについてきちんと理解できていれば、個人勉強の時間に時間をかけて整理することができたのかもしれませんが、そうもいかず、「何がわからないのかわからない状態」でした。
途中でdockerを導入して、自分でもやろうと思ったらエラーが発生し、調べてもわからず、次の授業のタイミングでわかる人に聞くといった感じでした。その授業までの間は個人勉強はできませんでした。メンタル的に結構挫折しました。

#####じゃあどうすれば良かったのか
- もっと最初から自分の知識をつけておくべき
- 少なくとも何がわからないのかを明確にする

#### チーム開発の一連の流れを知ることができた
今までこんな本格的な開発をしたことがなかったので、enPiTの学習を通してチーム開発の手順を学ぶことができました。
課題提起、プロジェクト管理、役割分担、時間管理などなど、考えることがたくさんあってめっちゃ勉強になりました。

#### プレゼンについても学ぶことができた
授業ではゲスト講義が定期的に行われ、git講義やテスト駆動開発についての講義がありました。
その中でプレゼンの講義が印象に残りました。
高さを揃えたり、色を少し工夫するだけでプレゼンの感じ方は変わってくるのだと感じ、感動。enPiTの最後に作成したプロダクトに関するプレゼンをしましたが、資料を作る際にその講義のことを意識しながら作成することができました。以前よりすごく見やすくなってビビりました。

##最後に
全体を通してenPiTを受講して良かったです。自分の知らない世界を知ることができました。
チーム開発はこれからもやると思うので、この経験は絶対に活かします。
そして課題である自分の技術力をもっと高めて、技術面でチームを引っ張っていけるようになります。
後半部分は思ったことをつらつらと書いたので見づらかったらごめんなさい。
また、今回の記事が初投稿でしたが、このようなアウトプットはとても大切なので、今後もやっていきたいです。