見出し画像

enPiT2024振り返り

この記事は2024年9月~2025年2月にかけて筑波大学で実施されたenPiTにて、スクラム形式でアジャイル開発を行ったまとめです。


開発したプロダクトについて

私たちが今回開発したのは「SUPPONPON」というWebアプリケーションです。このプロダクトは授業に出席があるか知りたい、移動時間を減らしたい、他に時間を使いたい筑波大生向けの出席情報投稿サービスです。
A+つくばやシラバスとは違い、出席に特化し、過去履修した人の情報をもとに出席情報を確認できたり、ワンクリックで簡単に投稿できる機能があります。


GITHUBへのリンク


プロダクトへのリンク


使い方

基本的には、トップページにある「使い方」を見れば分かるはずですが、ここではもう少し掘り下げて説明したいと思います。

検索について

「使い方」の下部にある検索ボックスから授業の検索を行うことができます。科目番号、授業名の部分一致に対応していて、開講時期による絞り込みも行うことができます(本当は時間割で絞り込む機能も実装したかった)。

検索ボックス

授業アイテムについて

検索すると条件に合った授業の授業アイテムが表示されます。この授業アイテムから授業の基本的な情報や出席があるかどうかを確認できるほか、授業の詳細ページに移動することができます。また、右下の「出席あった!」ボタンから出席があることをワンクリックで投稿することができます。

授業アイテム

詳細ページについて

授業アイテムをクリックするとその授業の詳細ページに移動することができます。ここでは、授業の基本的な情報や出席に関する投稿、投稿についての簡単な統計情報などを閲覧することができます。また、このページからワンクリックで出席があるかどうかを投稿することができます。

授業の詳細ページ

投稿について

出席情報の投稿についてはヘッダー右端の「投稿はこちら!」ボタンから投稿ページに移動することで行うことができます。科目番号を入力したのち出席があるかどうかをタグと一緒に選択することで投稿が行えます。また、任意でコメントを書くこともできます。
しかしながら、「いちいち科目番号を調べるのは面倒くさい」「わざわざ投稿ページに行ってまで投稿するモチベーションがない」などのフィードバックをいただいたため、先ほど述べたようなワンクリックで投稿ができるボタンを各所に配置しました。

投稿ページ

Chrome拡張機能について

プロダクト内のリンクからChrome拡張機能をダウンロードすることができます。利用者の環境上でChrome拡張機能を有効化すると、manaba上から授業の詳細ページに移動するリンクが張られるようになります。これによりmanaba上からいつでも授業の出席情報を確認することができるようになります。

広告機能について(不完全)

ヘッダー右側の「広告申請はこちら」ボタンから広告申請フォームに移動することができます。当初の予定では一定数の投稿でプロダクト内に広告を表示できる機能を実装しようとしていましたが、時間の都合上不完全なままの実装になってしまいました。

チームについて

私たちのチームは以下の4人で構成されていて、私は主にDBと通信を行うAPIルーターの記述や、検索機能や検索結果の表示を行う機能の実装を担当していました。

  • 小梨遥輝(PO)

    • レビューの発表やその日のタスクを考えるなど開発以外の面での貢献が人一倍多かったです。

  • 川喜田哲都

  • 池本大輝

    • UI周りを主に担当してくれました。また、成果発表会に向けての準備の大部分を担当してくれました。

  • 會澤太一(ScM)

    • UI周りやそれに関わるシステムの設計をしてくれました。細かいところまで気配りができ、スクラムマスターをしっかりこなしていたと思います。

また、開発以外ではチームメンバーと積極的にコミュニケーションをとるようにしてチームの雰囲気を良くしたり、意見交換をより活発にすることを意識して活動していました。

各スプリントについて

1回目のロングレビューまで

基本的な方針は夏から変えずに、プロダクトの基本機能である投稿、検索、閲覧機能を実装することに注力しました。この当時は詳細ページがなかったので、検索した科目番号に部分一致する授業の投稿が無秩序にHTMLの表形式で表示されていました。
また、Next.jsへの理解がチーム全体で不足していたため、ロングレビューまでに間に合わずに私個人の残業が発生していた時期でした(チーム内のタスクの割り振りもあまりうまくいってなかった記憶)。
しかしながら、この期間でNext.jsに関する様々な知識を得ることができました。

当時のプロダクト(vercelの機能で再現)

2回目のロングレビューまで

一回目のロングレビューまではほぼ私が基本機能を実装するような形になってしまい、チーム内のタスクの差が顕著になっていました。そこで、チームとしてその日やることを実装レベルまで分解したのちにタスクを割り振る、というルールを設けました。これによりチーム内のタスクの差が減り効率よく作業を行うことができるようになりました(これ以降の残業ゼロ)
また、チームとしては「どうやって投稿してもらうか」について非常に悩んだ時期でした。この時期の話し合いがあったからこそ「ログインシステムを使わないプロダクト」「広告機能」「トークン制のような機能を制限するシステムは作らない」などの最終プロダクトにも受け継がれる発想が生まれたのではないのかなと考えています。
システムとしては、授業の一覧ページと詳細ページに分けることで投稿をより見やすくする取り組みを行いつつ、授業名でも検索できるようにするなどプロダクトを使いやすくする機能や基本機能の改善などを主に行った時期でした。
また、私個人では、Next.jsの理解がさらに深まったり、チーム開発のノウハウも学ぶことができました。

当時のプロダクト(vercelの機能で再現)


3回目のロングレビューまで

この期間は2回目のロングレビューまでの話し合いで挙がっていた投稿してもらうためのシステム開発について素早く価値検証をしつつ、UIの刷新やワンクリック投稿ボタンなどプロダクト自体の質を高めることでユーザー数を増やすという方向性で開発を行っていました(これに伴いエレベーターピッチにも軽微な変更が入っています)。
具体的には、広告機能の提案やワンクリック投稿ボタンの実装、詳細ページでの統計情報の表示、UIの刷新などを行いました。
また、レビュー形式についてもただ発表するのではなく、実際に触ってもらったり口頭で意見を貰うことでレビューの質を高める取り組みを行いました。これによりアジャイルな価値検証を行うことができたのではないかと考えています。
私個人では、価値検証のサイクルを回す重要性「レビューの質」の重要性を学ぶことができました。

当時のプロダクト(vercelの機能で再現)


成果発表会まで

この期間は主に成果発表会へ向けての準備がメインでした。しかし、その中でも3回目のロングレビューを受けて検索機能やワンクリック投稿ボタン、UI全般の改善、Chrome拡張機能の実装など着実にプロダクトを成長させることができたのではないかと思います。
また、この時期は私個人の事情(就活関連)でオンラインでの参加や欠席がしばしばあったため、そこをどう補うかについて学ぶことができたのではないかなと思います。
以下に最終AMFを記載しておきます。


最終AMF

全体を通した振り返り

このenPiTを通じて、Next.jsの知識だけでなく、チーム開発そのもののノウハウを大きく養うことができたのではないかと思います。特に、レビューの貰い方や価値検証の重要性、タスクの割り振りをする際に注意すべき点などを学ぶことが出来ました。
また、短い期間内でどうやって人の目に見える成果を出すか、ということについて深く考えることができる授業でもあったのかなと思います。
来年度からは本格的な卒業研究が始まります。そこでは、価値検証やレビューの貰い方などこの授業で得た知識を存分に活かすことができるのではないかと考えています。また、エンジニアとして企業に就職した後もこの授業でチーム開発を行ったノウハウが必ず活かされると確信しています。

終わりに

enPiTはチーム開発についての価値観を大きく変えてくれた授業でした。この授業を受けるにあたって、指導してくださった先生やメンターの方々、レビューを提供してくれた履修生の皆様、そして一緒に開発してくれたチームメンバーのみんなに感謝を伝えてこの記事を締めたいと思います。

いいなと思ったら応援しよう!