enPiT史上初のチーム分裂を経験しながら、筑波大生向け長期インターンサイトを立ち上げた話
はじめに
はじめまして!Shirasawaと申します😎
この度は筑波大学のenPiTというプロジェクトでWebアプリケーション開発を行いました。
enPiT史上初のチーム分裂などを経験しながらも、何とかアプリを形にすることができたので、その経験をブログ形式で記録したいと思います。
そもそもenPiTとは?
enPiTとは、文部科学省が支援する「成長分野を支える情報技術人材の育成拠点の形成」を目的とした教育プロジェクトです。
筑波大学で実施されているenPiTでは、アジャイル開発の手法を学びながら実際にプロダクトを開発することで、チーム開発の流れや技術を学ぶことができます。
※ アジャイル開発とは、短期間のサイクルで開発を進め、状況に応じて柔軟に対応するソフトウェア開発手法のことです
学部2年生から院生まで様々な学年の方が参加していて、いろんな方とお話しすることができました。
学部3年生は、必修実験の代わりに履修でき、プロダクト開発の経験が積めるので、エンジニアを目指している方にはすごくお勧めです!(宣伝)
開発したプロダクトについて
私たちのチームでは、筑波大生向け長期インターンシップ探しサイト Tsukuba Intern を作成しました。
このサイトでは、実際に長期インターンをやっている筑波大生が、「どんな業務を行っているのか」、「どのようにインターンを始めたのか」 といった情報を閲覧することができます。
「就活のために長期インターンはやっておくといい」という話は聞いたことがあるが、「どんな業務をやっているのか」、「実際に何から始めればいいのか」、「みんなは何年生からやっているのか」 などが分からず、動き出せない学生がたくさんいると思います。(自分もそうでした)
このプロダクトを通じて周りの筑波大生のそういった情報を集めることで、長期インターンを始めるきっかけにしていただければ嬉しいです!
開発の軌跡
enPiTは夏季集中授業 + 秋学期授業の形式で実施され、約半年間チーム開発を行いました。
チーム結成
夏季集中授業では、受講生内で解決したい課題を出し合い、共感したもの同士で集まり4 ~ 7人程度のチームを結成します。
私たちのチームは、**「筑波大生が長期インターン探すの難しい」**という課題に共感したメンバー6人で結成されました。
地理的な要因や、情報の少なさから、都内の学生に比べて長期インターンを開始するハードルが高いという課題を解決できるようなプロダクトの開発を目指しました。
順調な滑り出し
私たちは、課題を解決するために、筑波大生特化の長期インターン求人サイトを企画し開発を始めました。
つくば市内のインターン求人を多く取り扱うことで地理的な要因を解決し、実際に働いている学生の口コミを閲覧できるようにすることで情報の提供を行おうとしました。
チーム内にデザイン経験者や開発経験者がいたため、サイトのモックが早い段階で決まり、開発が順調に進みました。
初期のモック画像
また、サイトに掲載する求人を集めるためにつくば市内の企業を中心に電話をかけ営業を行いました。どこの企業も筑波大生にリーチしたいという思いがあり、いい反応をもらえることが多かったです。
中でも、つくば市内のソフトウェア企業である VeBuIn 株式会社 さんには、実際にオフィスへ招待してくださり、貴重なフィードバックをたくさんいただきました。
大きな課題に直面
企業からの所感もよく、開発も順調に進んでいるように見受けられましたが、私たちは大きな課題に直面することになります。
課題は大きく以下の二つありました。
- 授業内のレビューでいい反応がもらえない
- チーム内での、enPiT の取り組み方に対する考えの違い
授業内のレビューでいい反応がもらえない
enPiTでは、毎授業ごとに教員や他受講生に実際にプロダクトを触ってもらい、フィードバックをもらう時間が設けられています。
私たちのチームはこのレビューでいい反応をもらうことができず苦戦することになります。
具体的には、「他の求人サイトとの差別点が少ない」、「企業側はうれしいかもしれないが、筑波大生ユーザーへのメリットが薄い」、**「そもそも、長期インターンのハードルを下げるための解決策が求人サイトであっているの?」**といった意見をいただくことが多くありました。
このようなレビューでいただいたことを、プロダクトに反映させることで、より良いものにしていくのがアジャイル手法やこの授業の醍醐味であります。
しかし、改善するための方法をチーム内で模索するも、これといった案がなかなか出ず、チームメンバーのモチベーションが毎授業ごとに下がっていってしまいました。
(授業外で、土日などに繰り返しミーティングを行っていましたが全員が納得する案が出ず、この時期はしんどかったです。。。)
チーム内での、enPiT への取り組み方に対する考えの違い
また、チームメンバー間でenPiTへの取り組み方に大きなズレがあったことで、チームの方針が定まらなくなってしまいました。
メンバー内に、
- enPiT内で完成しきるプロダクトを、enPiTの流れに沿って開発し、楽しさを重視したい
- enPiT後も続けていけるようなプロダクトを、マネタイズ前提で開発し、事業化を目指したい
という二つの考え方を持つ人がいることが分かっていきます。
同じ課題を解決したい人同士で集まったものの、enPiTへの取り組み方などは共有することができておらず、後になってこのような問題に直面することになりました。
チームの分裂
上記の問題を解決するために私たちのチームは enPiT 史上初のチーム分裂という選択をすることになります。
はじめのうちは、私自身 6 人で最後までやりきりたいという思いが強く、様々な妥協案を模索しました。
しかし、考えつくどのような妥協案をとっても、どちらかの考え方のメンバーが我慢する必要がでてしまいました。
結局、チーム分裂を行うことが全員が気持ちよく作りたいものを実現できる手段であるという結論に至りました。(よく聞くバンドの解散話ってこんな感じなんだろうなあ🤔)
楽しさや enPiT 内で完結することを重視するつくログ 4人と、マネタイズや事業化を目指すTsukuba Intern 2人にチームが分かれました。
私はTsukuba Internに所属し、今まで開発していた求人サイトの開発を継続していくことを決心しました。
一方のつくログは「先輩や同期が就活に向けて大学生活の中でどんな行動をしたのかを可視化するアプリ」を1から開発することになります。
チーム分裂のタイミングが、12月前半で最終発表まで1か月ほどしかなかったにも関わらず1からアプリを作り上げたつくログメンバーには尊敬しかありません。
つくログのリンクはこちら↓↓
2人での再始動
なんだかんだあって2人で再始動することになったわけですが、課題は山積みでした。
いただいていたレビューの中でも 「筑波大生ユーザーのメリットが少ない」 という点は、何としてでも改善する必要がありました。
これまでのプロダクトではマネタイズが先行しすぎていたため、求人がメインになっていました。
口コミという形で筑波大生ユーザーにインターンに関する情報を提供していたものの、ここから得られる情報は少なく、プロダクトの強みにはなれていませんでした。
そこで私たちは、筑波大生のインターン体験記をメインに据え、筑波大生への情報の提供を第一に考えるような方向の転換を行いました。
インターン体験記
インターン体験記は閲覧することで、長期インターンがどんなもので、何から始めればよいのかといった情報を集められるような設計にしました。
情報を集めたい筑波大生のアクセスが増えることで、プロダクトの価値が上がり、最終的にマネタイズにつながるといった方針に切り替えたのです。
これにより、授業内のレビューでも前向きな反応をもらえることが増え、「こういった情報を知りたい」や「体験記をこういった条件で絞り込み出来るようにしてほしい」といった機能面に関するレビューをいただけるようになりました。
この経験を通して、ユーザーを第一に考えて開発を行うことが、ソフトウェアエンジニアにとってとても重要であるということを再認識しました。
成果発表会
1月の終盤に、完成したプロダクトのプレゼンやデモを行う成果発表会が行われました。
成果発表会では来賓者や教員、メンター、受講生による投票で最優秀チームと優秀チームが決まります。
投票の結果、Tsukuba Internは優秀賞を受賞することができました🎉
表彰状
最優秀賞を目指していたこともあり、若干悔いの残る結果とはなりましたが、プロダクトの価値や開発の過程を評価していただけたことは素直にうれしかったです!
最後に
今回は、筑波大学の enPiT での経験をご紹介させていただきました。
一緒に開発を行ったチームメンバーや、レビューや壁打ちに付き合ってくださった教員やメンター、他受講生の方々には感謝の気持ちでたくさんです。
今後も、筑波大生の働き方として長期インターンが当たり前の選択肢になるように、Tsukuba Internでの活動を継続していきたいと思います。
ここまで、読んでいただき誠にありがとうございました!
おまけ
Tsukuba Intern の技術スタックなどを載せておきます。
フレームワーク
- Next.js
- Ruby on Rails
インフラ
- Vercel
- Fly.io
- Docker
言語の割合
開発者
enPiT内で使用したAMF
Discussion