筑波大学enPiTプログラムに参加した結果ｗｗｗ

はじめまして[A.M.R](https://qiita.com/ssf2xguile)です！
この記事は2022年度の筑波大学の[enPiT](https://enpit.coins.tsukuba.ac.jp/)という授業でチーム開発をした時の個人レポートです。
enPiTを受講した動機、作成したプロダクトの紹介や、開発で得られたものを書いていこうと思います。

# そもそもenPiTとは
enPiTについて[公式ホームページ](https://enpit.coins.tsukuba.ac.jp/)より引用します。
> enPiTビジネスシステムデザイン分野(通称:BizSysD)は、社会やビジネスニーズに対する実用的なソリューションとしてのビジネスアプリケーションやシステムデザインを自ら提案、開発し、顧客の潜在的要求を満たすことのできる人材育成を目指します。

要はユーザーの困りごとを自ら見つけ、開発によってその問題を解決する人材を育成するというプログラムのことです。このenPiTの授業では、学生が身近な困りごとを持ち寄って、チームで課題分析からプロトタイプ実装までを1年かけて取り組みました。

# 自己紹介
ところで私が誰なのか紹介します。私は筑波大学情報学群情報科学類のA.M.Rです。Webバックエンドの技術に興味があり、バイト先(開発系)や個人開発でもDjangoを使ってWebアプリを作成しています。最近はフロントのReactも勉強し始めました。

# なぜenPiTに参加したのか
きっかけはバイト先の先輩が3年生の授業について話していた時に『enPiTは絶対取ったほうがいいよ』と勧められたのがきっかけでした。その先輩はD〇NAに内定をいただいたらしく、enPiTで開発したプロダクトをアピールしまくって内定を勝ち取ったという話を聞いて、これは取るしかないと思い履修することにしました。もちろんenPiT自体面白かったといっていました。

# 開発したプロダクト
私は通年でenPiTを受講していたのですが春学期と秋学期で作ったプロダクトが違ったのでそこらへんを話していきたいと思います。

## 春学期
春学期は筑波大生のための匿名学習支援SNS『A+つくば』を制作しました。詳しいことを知りたい人のためにEVPを書いておきます。
> このプロダクトは大学の課題を効率よく十分な品質で提出することができない問題を解決したい、同じ講義に知り合いが少ない筑波大生向けの匿名学習支援SNSです。これは認証機能付き匿名SNSを実現することによって、Yahoo知恵袋やTwitterとは違って同じ大学内かつ匿名で相談して課題解決に取り組むことを実現できます。

完成デモを貼って機能を紹介してきます。デプロイもしてあるのでよかったら使ってみてください。

* [A+つくば](https://aplus-tsukuba.net/)

![紹介動画 公開用 0-6 screenshot.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3039414/20de6381-c90e-d07a-f2df-569e4ec8ac2b.png)
![紹介動画 公開用 0-10 screenshot.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3039414/03c37929-31ff-d91d-f28f-f106fdbc284a.png)
![紹介動画 公開用 0-14 screenshot.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3039414/474c0877-5995-fed1-739f-5d4a39f5bf7e.png)
![紹介動画 公開用 0-24 screenshot.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3039414/9037e607-1744-8760-d728-d1c9f43f45fa.png)
![紹介動画 公開用 0-41 screenshot.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3039414/62ed430d-e059-7d65-8b31-51724cba969c.png)
![紹介動画 公開用 0-53 screenshot.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3039414/34e84a1b-f2e9-eb73-be3c-3181ecc21d37.png)
![紹介動画 公開用 1-14 screenshot.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3039414/4549c82f-021f-7ff2-8f35-afc64061946a.png)
![紹介動画 公開用 1-22 screenshot.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3039414/9c37dc76-580a-090e-df1a-80483db4e6ba.png)


上でも述べましたが要は掲示板です。それが筑波大生限定であるというだけの話なのですが、世に出回っている掲示板と差別化する点が3点あります。それは、
* 掲示板らしくないUI
* 投稿内容に感情を表現できる機能
* リアルタイムにコメントが反映される機能

があることです。

### 掲示板らしくないUI
一般の人は掲示板と聞くと「2チャン〇ル」や「俺的ゲ〇ム速報」といった、いかにもネットの住民が使いそうな2000年代初期風なイメージがあるかと思います。(ド偏見)
しかし、A+つくばはそういったイメージを払拭するためにモダンなデザインをこころがけ、ユーザーが投稿しやすいような設計になっているため、一般の人でも使いやすくなっているのが特徴です。技術はBootstrapを使用しています。

### 投稿内容に感情を表現できる機能
例えば、授業に関してわからないことがあってしかも締め切りギリギリであればなおさら焦ることかと思います。そんな時、質問しようと思ったときに投稿に対して感情表現を付けることができます。上の例でいうと、「非常事態」といった感情をつけ、自分は今どうにも困っていて早く助けてほしいという意思表示ができます。これにより他のユーザーの目にとどめやすくなる効果があります。他にも感情がありますが、よければ自分の目で見てみてください。

### リアルタイムにコメントが反映される機能
普通の掲示板であれば、自分が投稿内容を書いている間に他のユーザーが先に投稿していたとしてもリロードが入らない限り投稿が見えません。しかし、筑波大生が授業や課題の内容を議論しようとした時にいちいちページをリロードしないと投稿が見えないとなると不便極まりありません。そこでA+つくばでは、自分がページをリロードしなくてもコメントが反映される機能が備わっています。これにより、筑波大生同士で議論をした時に不便さが解消されリアルタイム感を出すことができます。

しかし、ここに至るまでには大きな困難が立ちはだかりました。
### ぶちあたった壁
まず一つが**本当にこのプロダクトに価値があるのか？** と問い詰められたことです。
サービス名で『A+つくば』を謳っておきながら、A+評価をとれるのか？質問すれば回答は返ってくるの？質問の回答者にメリットは？などさんざんダメ出しされました。それくらい自分たちのプロダクトはユーザーの問題を解決するための核に迫ることができていませんでした。そこでこれらの問いに対して、最初のうちは自分たちが投稿された質問にさくらで答えまくりました。こうすることで質問すればかえってくるんだなとユーザーに認識してもらい、どんどんユーザーの数も増えていきました。

開発自体は春学期で終わらせることができなかったのですが、夏休みも使ってみんなでやろうということになって無事完成させることができました。最後までやりきれてよかった！！

## 秋学期
秋学期はやらなきゃいけないことがあるがやる気でない人向けのLINE Bot『ヤルキッカケ』を制作しました。こちらもEVP書き残しておきます。
> このプロダクトは自分が抱えているタスクを期限ギリギリにならないと始められないという困りごとを解決したい強制力が無いと始められない人向けのきっかけづくりアプリです。これはユーザー同士の相互監視によって、後回しにしたり、締め切りギリギリで焦ってやったりすることとは違ってやり始めるきっかけが得られて、期限以外の強制力が得られる状態を実現できます。

デプロイまではできなかったのでデモだけ貼ります。
![やるきっかけ01.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3039414/975fc4f8-d312-a6cf-420e-4b7ce08785a6.jpeg)
![やるきっかけ02.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3039414/a1ff5641-76a6-2759-b51f-cb14c458c4f3.jpeg)
![やるきっかけ03.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3039414/eec8c02c-d23b-692b-cb20-a7b6908dd254.jpeg)


要するに自分でタスクを期限と一緒に登録して、開始時刻までにタスクが開始されなければこのBotを追加した人全員に晒されるというプロダクトです。

ユーザーにレビューを2,3回もらって改善し続けた結果現在のプロダクトになりましたが、結果的には『やる気が出るようになる』という問題は解決できませんでした。しかし、ここに至るまでのプロセスで様々な学びを得ました。

### 根底から見直す
私が参加する前のこのチームは授業の課題へのやる気が出ない問題を解決しようとしていましたが、本当にやる気が出ないのは授業の課題だけなのかと根本から問題を考え直しEVPを更新しました。これらのことより、状況の変化に合わせて臨機応変に対応し、勇気をもって根底から見直すことが大切であると学びました。

### ロール変更
私のチームでは3回ロール変更しました。1回目は、秋学期ではスクラムマスター(SM)が決まっていなかったので、3人で1スプリントごとに回していました。2回目は、プロダクトオーナー(PO)として適している人が他にいたため、POが変更を提案しました。また、SMは固定の方が開発の安定性が出ることが分かったので、両方とも変更しました。3回目は、他の人がSMをやった際に上手くいっていたと感じたため、SMが変更を提案しました。このことから、適材適所を見極めないと役割を担うことは難しいですが、適していそうなロールも予測だと学びました。

### 動くソフトウェア
私のチームのレビューでは実際に体験が出来るようなプロダクトになっていませんでした。※最後の発表会を除く
レビューの際はコマンドラインから送信するWoz法や、使っている様子を演じて見せる寸劇などで代替していました。意見やフィードバックをもらうことは出来てはいましたが、動くソフトウェアでは無かったため、「本当にやる気が出る」のかの検証は出来ませんでした。このことから、実際に体験できる「動くソフトウェア」だからこそ検証出来るものがあると学びました。

プロダクト作りに失敗してしまいましたが、その過程で様々なことを学び、エンジニアとして成長した気がします。チームメンバー全員に感謝ですが、特にこのチームを共に引っ張ってくれた[amixedcolor](https://qiita.com/amixedcolor)さん、[たけのこ](https://qiita.com/rnk0085)さんありがとう！！


# enPiTを受講した感想・得られたもの
enPiTを受講して思ったことがあります。

**圧倒的成長を感じました！！！**

開発手法や技術そのもの、チームの在り方など様々な面で成長を実感しました。
開発手法はアジャイル開発の手法の一つである「スクラム」を学びました。情報処理の試験でさらっと触れたことはあったのですが実践したことは一度もありませんでした。enPiTではスクラムの基礎を座学と実践の両方で学んだためかなり理解が深まりました。スクラムの一連の流れや「スプリント」「PBI」「レトロスペクティブ」「ベロシティ」等カタカナ用語を聞いてぱっとどんな言葉か説明できるようになりました。
技術はDjangoはもちろん、vue.js(CDN)の基本的な使い方、restful APIの仕組み、LINE Botの仕組み、レンタルサーバーの知識など習得しました。
チームはかなり恵まれていたと思います。春学期のチームは、男6人でTHE・野郎という印象が強くチームメンバー1人1人が思うことを言い合えるという状況であったため、スクラスマスターとして上手く進めやすかったです。一方、秋学期のチームは、プロダクトオーナーを担当していたのですがあれが欲しいこれが欲しい全て欲しいただむなｓ(ry というように開発者に色々頼んでいたのですがどれもこれも実装してくれて頼もしかったです。

# 最後に
これだけは声を大にして言わせてください。

**enPiTを受講した方がいいぞ！！**

結果論ですが技術力だけでなく開発そのものに対するモチベもあがり、インターンにも通りやすくなりました。もし情報科学類3年生の実験テーマで悩んでいるのだとしたら絶対にenPiTを取りなさい。大変だけど得られるものは多いから。ゲスト講義としてアジャイル界隈で有名なきょん氏のGit入門講義やみほらぶ氏によるアジャイル開発基礎講義が受けられるのでマジでおすすめ。

長くなってしまいましたがこれで個人のレポートを終わりたいと思います。今後いつかまたお会いできることを楽しみにしています。