📘

雑談支援アプリ「つくとぴ」を開発しましたー2022年度筑波大学enPit振り返り

2023/02/12に公開約5,800字

筑波大学でenPitという授業を受講しました。
この記事ではenPitでの一年を、秋学期に重点を置いて振り返りながら所感を述べます。

enPitとは

まずはenPitってどんなことをするのか、授業の雰囲気やらなにやらについて説明します。

お堅く説明

まずはenPit公式サイトから引用。

「成長分野を支える情報技術人材の育成拠点の形成(enPiT)」は、4分野における高度IT人材の育成を目指しています。大学・企業界の協力体制のもとで推進されるリアリティの高い講義や演習など、特色あるプログラムを通じて実社会においてイノベーションを起こすことができる人材を輩出します。 引用:https://www.enpit.jp/

上記で太字にした4分野とは、、
AiBiC : ビッグデータ・AI分野
Security : セキュリティ分野
Emb : 組込みシステム分野
BizSysD : ビジネスシステム分野

であり、筑波大学のenPitはBizSysDに関わります。
詳しくは公式サイトを見てください。

結局なにやるの?

では具体的に何をやるのか。
アジャイル開発の一種であるスクラム開発について、春学期にその概念、理念をインプットし、夏合宿と秋学期で実際にチームを組んで開発してみよう!
という授業です。チーム開発ではプロダクトの質ももちろん大事ですが、アジャイル開発の進め方や、良いチーム作りのほうが重要視されます。
一年間のスケジュールとしては、春学期に自主学習、夏に一週間の合宿、秋学期にチーム開発というスケジュール感です。

チーム名「高みのリーゼント」の由来

私たちのチーム「高みのリーゼント」は秋学期に新チームとして誕生しました。チーム名は矢島美容室というアーティストの「ニホンノミカターネバダカラキマシター」から着想を得ました。当初私たちのチームは「自分に似合う髪型がわからない」という悩み事を解決しようとしていたので、

髪型 → 美容室 → 矢島美容室 → ニホンノミカタ → ミカタ → タカミ → 高み

となり、喧嘩上等というチームの気概を表すために「リーゼント」をつけて、「高みのリーゼント」となりました。
後述しますが、私たちのチームは11月に急遽方針転換をし、高みのリーゼントという名前は形骸化します。

開発したプロダクト 雑談支援アプリ「つくとぴ」

11月、突然の方針転換に苦しみながら、私たちのチームは「授業のグループワークの最初の雑談で黙ってしまう」という悩み事を解決することにしました。試行錯誤の末に完成したのが「つくとぴ」です。

つくとぴ:https://tsukutopi.azurewebsites.net/tsukutopi/
説明資料:https://docs.google.com/presentation/d/12wsoeETYLHfoW0XZikEGntIy5SemNxqjAqdC6NLdWmc/edit#slide=id.g1fdd49ea91e_2_0

エレベーターピッチは次の通りです。

EVP

[つくトピ] は
[オンライン授業で初対面の人とグループを組んだ時に雑談するときの話題がない]を解決したい
[オンラインで初対面の人と話すのが苦手な筑波大学生]向けの
[Webアプリ] です。
これは
[お互いのプロフィールから共通点を可視化することで話題発見の手助けをすること] によって、
[ToPick(話題提供アプリ)、共通点探しゲーム] とは違って
[最初に会話を探す手間なしでその人たち自身に注目した話題(共通点)提供] を実現できます。

使い方

このアプリは筑波大学生向けに作られており、学籍番号でプロフィール情報を管理します。
1.初めて使う人はプロフィール登録をする
2.仲良くなりたい人の学籍番号を教えてもらう
3.ホーム画面に戻り、自分の番号と相手の番号を入力する
4. 共通点が表示されるのでそれをもとに雑談!

方針転換はなぜ起こったか

先述した方針転換について詳しく説明します。当初私たちは「自分に似合う髪型を知りたい」という悩み事を解決するWebアプリ「Hamatchir」(読み方はヘマッチアー)を開発していました。
10月に方針を決め、開発を続け1か月程度経ったある日、ヘマッチアーの理想像かそれ以上の性能を持つアプリを、Google PlayStoreで見つけてしまいました。
https://play.google.com/store/apps/details?id=com.shunsukeshoji.aistyllist_android&hl=ja&gl=US&pli=1
チームは、このアプリとの差別化は困難であると判断し、敢え無く開発を断念し方針転換に踏み切りました。

ではなぜこの方針転換が起きたのか。
私は、競合の調査不足独自の価値を曖昧にしたまま開発を続けていたことが原因だと考えます。

競合の調査不足

秋にチームを新結成した私たちは、なるだけ早く困りごとを見つけ開発を進めようと焦りました。この焦りにより競合となり得る髪型アプリの調査を2,3個しただけで、突っ走りました。スタートを焦ってフライングすると、またスタート地点からやり直しです。私たちは必要以上に焦りすぎました。

独自の価値を曖昧にしたまま開発を続けていた

この点はひとつ前の「競合の調査不足」が一つの原因になると思いますが、自分たちのプロダクトの価値に確信を持てず、曖昧にしたまま開発を進めていました。チーム内でヘマッチアーの開発を続けるか否かの多数決をとったとき、盤上一致で開発を続けない選択をしたことは、私だけでなく他のチームメンバーもこの問題を感じていたことを示唆していると思います。

ただし、ここで小さく(?)失敗することで11月中盤からの開発は「価値検証」に重きを置き、確かな足取りで開発を進めることができました。

チーム作り

チームメンバー

ちの: わたし プロダクトオーナー
みやりん: 我らのスクラムマスター 情熱の塊 デプロイおじさん
こっすー: チームを調整 美容室でいうところの櫛 コストコの神
TK: チームの松明 明るくチームを先導する 歌を愛し、歌を愛しすぎている
nabeman: 技術の匠でチームの土台 リーゼントでいうところのポマード

心理的安全性

チーム作りに関しては心理的安全性をいかに確立するかが9割を占めるように思います。チームメンバーそれぞれが平等の発言権を持ち、それぞれの合意のもと開発を進めることがチーム開発で最重要ではないでしょうか。春学期にメンター陣から聞いた言葉「良いチームは、良いプロダクトを作る」はその通りだと実感します。
私たちのチームは「最も心理的安全性が高いチーム」だったと自負しています。心理的安全性を高めるために工夫した2点について述べます。

対面受講用の教室を有効活用する

今年からenPitはオンラインと対面のハイブリッド形式で実施しました。3年間のコロナ渦大学生活の経験から、オンラインよりも対面のほうが仲良くなれると感じていたため、できるだけチームメンバー揃っての対面受講をするようにしました。すべての期間をオンラインでチーム開発をしたことがないので正しい比較はできませんが、メンバーと顔を合わせて話すことで得られる非言語情報により、メンバーそれぞれとの仲がオンラインより深まったのではないかと思います。

discordにkenkaチャンネルを設置

今年度はdiscord上にそれぞれのチームのチャンネルを作り、その中のボイスチャットやテキストチャットを使いながら作業をしました。作業の中で偶然生まれたものとして、「kenkaチャンネル」というテキストチャットがあります。ボイスチャット上で私たちの雑談を聞いていたメンター陣が、チームのテキストチャットで喧嘩(?)を始めたため、我らのスクラムマスターが「kenka」チャンネルを急遽作りました。このkenkaチャンネルが、物騒な名目にも関わらず、チームとメンターさんの、そしてチームメンバー同士の関わりを深めたと思います。ちなみに、このチャンネルの説明文は以下の通りです。

「惨めに争ってください」

さいごに

変化が誠に激しい現代において、これまでのウォーターフォール型の開発では対応できない問題が無視できなくなる。そこで徐々に工夫を重ね、生み出されてきたアジャイル開発。ここで、アジャイルソフトウェア開発宣言から引用する。

プロセスやツールよりも個人と対話を、
包括的なドキュメントよりも動くソフトウェアを、
契約交渉よりも顧客との協調を、
計画に従うことよりも変化への対応を

enPitで開発を実践するにつれ、アジャイル開発の流れ、勝手がだんだんと分かってきて、春学期に学んだ知識が、秋学期の実戦で知恵に変わっていくことを楽しく思いました。教員・メンター陣の皆さんの優しく的確なアドバイスをもとにアジャイル開発をできるenPitで、アジャイル開発一年生を迎えられたことは、非常に幸運なことだったと振り返りながら思います。
改めまして、教員・メンター陣の皆様、一年間ありがとうございました。

p.s
「高みのリーゼント」はその後、2023年2月11,12日開催のサポーターズ主催ハッカソンで努力賞を獲得することができました。面白い法律をもとにStable Diffusionで生成された画像を見て、法律の内容を当てるクイズです。
AI Speculation Quiz:https://takaminoregent-aispeculationquiz-main-7iu18u.streamlit.app/

番外編 春学期

春学期は自主学習期間として、秋学期に必要になりそうな技術を前もって勉強するための期間でした。ただ私自身、あまり開発をやってこなかったもので「必要になりそうな技術」が何なのかさっぱりわかりませんでした。HTML、CSS、JavaScript等の基礎的なWeb技術も表面をさらった程度だったので、Progateの入門コースをひたすらやっていました。この期間は特に制限がなく、興味のある技術について自由に学べます。そして学んだ知識をScrapboxにまとめて他のenPit受講生に共有します。情報技術に関連があれば学ぶことに制限はないので、Unreal engineでゲームを作っている人もいれば、ハードウェアをいじってる人もいて、Scrapboxに様々な分野の知識が一挙に集合することになります。なかなかカオスで眺めるだけで面白いです。
https://scrapbox.io/enpit2022/

春学期に何を学ぶべきか

ただ、最低限知っておいたほうが秋学期の開発が楽になるような技術もあります。秋学期を終えて、開発に必要な知識が何ぞやが少し分かったので、春にやればよかったなぁと思うことを箇条書きで書きます。

・何かしらのフレームワーク(Django、Flask、Vue.jsなど)のチュートリアル
・簡単なサービスを作り、デプロイまでやってみる

秋学期の開発ではほとんどのチームがなにかしらのフレームワークを使って開発していました。高みのリーゼントもPythonのフレームワークDjangoで開発をしました。
僕自身、夏合宿に入るまで、
「フレームワーク?知らない!ばか!!」
という状態だったので、フレームワーク独特の概念とか使い方を理解するのに時間がかかりました。フレームワークを何か一つ身に着ければ、ほかのフレームワークも理解しやすくなるような汎用知が身につくと思います。また、チュートリアルで作ったものを自分でいじって自作のアプリにし、デプロイまでできたら秋の開発はスムーズにできると思います。

関連

高みのリーゼントメンバーの振り返り記事です
https://note.com/muhe/n/nf32e277b6fd0
https://qiita.com/nabeman/items/8d22feb3e9136a7e0b34
https://right-vermicelli-76e.notion.site/enPiT-d9dcf56057e44dbd94dd766d1274a640
https://qiita.com/Yuki_K0148/private/8add1288ee1f1a0d22f5

Discussion

ログインするとコメントできます