筑波大学の授業「enPiT」でアジャイル開発を体験した記録
📝 この記事を書いた経緯
筑波大学の enPiT という授業で、チーム分裂⚡やら何やらがあって、怒涛の半年間を過ごしたチーム開発の経験を振り返り、学びを共有したいと思います。
🎓 enPiTとは?
筑波大学の公式ページより引用
プロジェクト型学習(Project Based Learning, PBL)を基軸に、学生がチームを組んで自律的に自分達のテーマの具現化を目指します。チームでのプロダクト開発を通じて、チーム運営や、ユーザが本当に必要としているものを掘り下げる技術を体験します。
https://enpit.coins.tsukuba.ac.jp/より
📍 実際の流れ
- 夏休みの集中授業で各自の悩み・課題を共有
- 共感した人同士で4〜6人のチームを結成
- アジャイル開発について講師から指導を受ける
- 半年間かけてアジャイル開発でプロダクトを作成
なぜ enPiT を取ったのか?
- 「特にやりたい研究がない」 → チーム開発の経験が積める実験があるらしい?
- 「就活を見据えて制作物を増やしたい」 → 制作物が生み出せるらしいぞ?
- 「知り合いが多くて安心」 → 同じ学類の友達が6,7人応募するらしい、楽しそう!
開発したプロダクト「つくろぐ」
「つくろぐ」ってなに?
- 「先輩や同期が就活に向けて大学生活の中でどんな行動(インターン・開発)をしたのかを可視化し、気軽に見れるアプリ」
📌 エレベーターピッチ
就活を成功させたいと漠然と考えているが、どう行動すれば良いかわからない
筑波大生向けの「つくろぐ」というプロダクトは
筑波大制限定の就活情報共有プラットフォーム
このサイトを利用すると、先輩や同期がどのような経験を経て、就活に向けて行動をしてきたのかを気軽にすることができ
就活を経て感じたやっておいた方が良いことなど、同じ大学の同じ学類といった似た境遇の先輩や同期の情報を知ることができて、就活に向けた行動の一歩を踏み出すきっかけになる
なぜこのプロダクトを開発したのか?
このプロダクトの発想は自分の経験から
💭 長期インターンに興味はあるけど...
大学1年生の頃から、周りに長期インターンに参加している友人が数人いる環境で生活していました。
「すごいなぁ、自分もやりたいなぁ...」とぼんやり思っていたものの、
「今の自分じゃなんもできないからな...」
「技術も知識もないし...」
とハードルを感じてしまい、結局行動を起こせないまま3年生になってしまいました。
‼️ 開発チーム内に長期インターン経験者が3人も!?
夏休みの集中授業で「筑波大生の就活事情を変えたい!」という強い思いを持っていたKくんと、
一緒に参加していたcoinsの友達Oくん、さらにOくんの友達Sくん。
この3人、なんと同じ長期インターン先に所属している強強エンジニアたちでした💪
自分が就活のスタートダッシュに失敗した身だったので、解決したい課題にも共感!
そこで、
「Oくん、なんかすごい人たちと集結してる...!?」
「このチームに入ったら、なんか自分も変われるかも?」
と感じ、このチームに参加することを決めました✨
🏢 チームでの開発を通して長期インターンが身近に!
チームは長期インターンの応募ハードルを下げ参加者を増やすことにフォーカスし、
- 企業に電話でインターンの実態を調査
- 直接企業訪問して話を聞く
- 学生向けのアンケート調査
などを行いました。するとだんだん
「あれ?長期インターンって意外と遠い存在じゃなくね?」
と思えるようになり、実際にインターンを探し始めたり、おすすめされたサポーターズ主催のイベントにどんどん参加していくことに!
🎊 ついに長期インターンに参加!?
いろいろなサイトに登録して探していると、
「インフラインターン」というサイトからスカウトメールが
しかもその企業は、Kくん・Oくん・Sくんが所属している会社!
「友達が3人もいる」+「スカウトが来た」ということでハードル爆下がり⤵️
すぐに応募し、無事に研修を突破して、今ではバリバリ出社してます🔥
💡 この経験、再現性があるのでは?
自分が長期インターンに参加できた最大の理由は、
「実際に参加している友達から話をいろいろ聞いたりすることを通して、インターンを身近に感じられたこと」
でした。
この経験をもっと多くの人が体験できるようにしたい!
そう考えて生まれたのが、「つくログ」 です
どうやってプロダクトの方向性を決めたのか?
筑波大生の長期インターン状況について調査してみた
長期インターンに対するこれまでの経験や感じていたハードルや懸念点などをアンケート調査
📊 筑波大生70人のアンケート結果
- インターン未参加者 6割強
- その中で「やりたいとは思ってるけど、参加できていない」人 8割以上
参加していない理由
- 技術力に不安
- 一歩踏み出せない
- 情報がない
⚠️ つまり…自分と似たような境遇の人が沢山!!
「興味はあるけど、情報不足とハードルの高さが原因で動けない!」
以上の調査から
就活について、先輩に直接聞きづらかったり学類によっては上下の関わりが少なくてとにかく他人の長期インターンなどの事情を知る機会が少ない...
よって、この問題を解決する手段としてチームで話し合った結果
「自分が体験したように先輩や同期たちのインターン事情などを含む情報を可視化して気軽に触れられる、それによって親近感を少しでも持ってもらうことができるプロダクト」
を開発することに決定しました。
📌 「つくろぐ」でできること
-
筑波大生の先輩や同期の就活履歴を可視化
- 自分と同じ学類の先輩や同期などより境遇が近い身近な人たちの経歴が見れることで、再現するビジョンが浮かびやすい
-
就活に役立つ特化情報を閲覧
- 就活を経て感じたやっておいた方がいいことや、やっておくべきことなどを聞きまわらずとも様々なバックグラウンドの先輩の意見を気軽に見ることができる
-
インターンや企業研究の流れがひと目でわかる
- この時期にこの経験をすると、ここのインターンに行けるんだ!と目標までのルート立てがしやすい
-
未来の筑波大生のために経験を記録
- 自分が就活を始めるときに悩んでいたことや、知りたかったことをつくろぐに歴史をとして残すことで同じ悩みを今抱えてる後輩たちの助けになるかもしれない
📌 技術スタック
📂 バージョン管理
- GitHub にてリポジトリを管理
🎨 フロントエンド
-
Flutter (Dart)
- クロスプラットフォーム対応
- UI/UXにこだわった設計
- 読みやすい量/デザイン
- 探しやすいフィルター機能
🛠️ バックエンド
-
Firebase
- Firestore(データベース)
- Authentication(ユーザー認証)
- Storage(画像・データ管理)
🔑 認証
- Firebase Authentication
⏳ 開発期間
- 約1ヶ月(企画含め 約2ヶ月)
- 2024年12月 〜 2025年1月
チームの軌跡
はじめに
私たちのチームは多分異例のチーム分裂ということをしました
最初に集まったチームで開発しようとしていたプロダクトはいわゆる就活サイトで、学生が掲載されているインターンを探して、実際にそのプロダクトの中で応募までできるといったものでした。
最初のリサーチ段階では、企業さんからいい反応をたくさんいただけてなんかいけそう感がすごくてみんなノリノリで企画をしていたのですが、開発が始まるにつれ
- メンバー間の中での熱量の差
- 各々enPiT以外でのやること(就活など)と残業の兼ね合い
- 解決する手段としての方向性の違い
などから溝が深まり、このまま開発を続けて本当に良いのかという意見があがり何度も話し合いを重ねました。
具体的な意識のずれ
私たちのチームでは、解決したいことは根本的に存在はしているけど、
最初から作りたいものがあるという人に集まってチームが結成されたこともあり
悩みごとに対する解決手段は無数にある中で、他の解決手段について十分に検討を進めないまま就活サイトに対して突き進んでいました。
そのような流れの中、11月頃から
自分も含め、先ほども書いたリサーチの結果からも長期インターンに参加できていない人の多くはハードルが高いと感じているため、
- そのハードルさえ越えられれば応募するのは既存の就活サイトでも十分なのでは(現に自分がそうであったこともある、このチームに入ってハードルが下がって既存のサイトから応募できた)
- その応募する一歩手前のハードルを下げる部分にもっとフォーカスを当てたプロダクトを作るべきでは
- 継続的に運営を続けなければいけないプロダクトはちょっと...
という考えを持つ人がチーム内に生まれ始めました。
チーム分裂
何度も話し合いを続けた結果、このまま意識の違いがあるまま同じチームで開発することはお互いいいことがなく、分裂して各々が価値のあると感じるプロダクトの開発チームに分かれることが一番丸いという結論に至り12月に入ってからチーム分裂が本格的に進んでいきました。
一括で別れたわけではなく、段階的にチームが分裂していきました。
自分を含む二人で新チームを立ち上げ、既存のチームに残る二人、検討中の二人という下の表のような2,2,2に分裂した構造になりました。
🔍 分類 | 🚀 方向性 | 🧑💻 特徴 |
---|---|---|
既存のプロダクトを作る | 継続して開発を進める | - これまでの開発を引き継ぎ、ブラッシュアップ - 機能改善・最適化に注力 |
新しいプロダクトを作る | ゼロから新しいものを開発 | - ハードルを下げる部分にもっとフォーカスをした情報共有プラットフォームの作成 |
どちらに入るか検討中 | 様子を見ながら選択 | - 新チームの様子も見ながらどちらが自分の価値観の合った解決手段なのかを判断 |
12月中旬からは、本格的にチームが分裂して私たちの新チームに検討中の二人が加わり4,2人での2チームへと分裂しました。
分裂後の開発
他のチームは夏休みから企画、価値検証、開発をすでに3,4ヶ月進めている段階で
新チームを立ち上げたので、早急に価値検証から実装まで行う必要がありました。
そこで私たちが価値検証のために力を入れて使ったものがFigmaのプロトタイプというものでした。
幸い私たちのチームのプロダクトは基本的には2画面間での遷移がメインとなっており、ページ数も多くないことからFigmaのプロトタイプで十分に価値検証を行うことが可能でした。
レビューを重ねる中で、「もうこれで完成じゃん」「めっちゃいい」との声を多くいただいたため、方向を固め年末から年始にかけて怒涛の開発ラッシュが始まりました。
この議事録を見てもらうとわかると思うのですが、ほぼ毎日開発をしていました...(めっちゃ楽しかった)
期間が限られてる中で、実装したいと思っていた昨日はあらかた実装することができ、チームメンバー間で使ってみたいという人が多かったFlutterについても開発経験を積むことができて、とても充実した1ヶ月間の開発期間を終えることができました
最後に
enPiT 通じて、
-
「チーム開発の難しさと楽しさ」 を実感
- 6人もいるとそれぞれ価値観の違いが生まれることは必然的なことだと思います
- その中でも、いかに方向性を揃えていくかということの難しさを痛感しました
-
「短いスパンでレビュー、価値検証を回すアジャイル開発の雰囲気」
- これまで行ってきたハッカソンや、個人での開発は特に誰かにレビューを求めることなく「自分たちのこれがいいだろう」という考えのもとにバンバン開発していく形式でした。
- しかし、enPiTのレビューを経験して自分たちでは気づけない角度の指摘や、実際にはこの機能はあんまり求められてないっぽぞ、ということに気づくことが多々ありました。
-
「楽しく開発できる環境を整えることの大切さ」
- 最初のチームでは、ギクシャクしたまま開発を続けてしまったためチームメンバーの多くが不満を抱えた状態で開発を行なっていました。
- しかし、新チームでは事前にチーム内で雰囲気をよくしたり仲を深める活動として、話し合いの最後にはここ数日であった出来事を共有する時間を作るなどのルールを作ってみたり(私の提案です✨)することで、とても雰囲気の良いまま開発を終えることができました。
- 打ち上げは自分のバイト先の居酒屋で行いました🍺その後のカラオケみんなうますぎて肩身狭かったです...
感謝
我々のチームは、結成当初から数々の試行錯誤を繰り返し、多くのご迷惑をおかけしたかもしれません。そんな中でも、最後まで支えてくださった 川口先生や他の教員の先生、何度も相談や情報提供に協力してくれたメンターの皆さま(特にドミニカ共和国さん(匿名)最高でした👍)、チームメンバーの相談や壁打ちに乗っていただいたり飲み会に連れて行ってくれたきょんさん🕶️、心より感謝申し上げます。
(きょんさんの影響で今までほとんど買ったことなかったのに、コンビニでクラフトビールばっか買うようになってしまいお財布が...💸)
たくさんのアドバイスとサポート、本当にありがとうございました!
この経験を糧に、今後も成長していきます。
私たちのチームの最終的なAMFです
📢 つくろぐはこちら! → つくろぐ
Discussion