春学期(夏合宿)
プロダクト名・概要
名前は「ココロミエル」.春学期discord上で顔が見えない中,「反応なくて寂しいな」とか「これ声聞こえてるのかな」が多発したことで,なんとかしようというプロダクトだった.
エレベータピッチ
使い方
画像行方不明&ローカルですら動かせないためわかりづらいですが...
- 話したければ「次話したい」ボタンを押す
- なんか寂しいなと思ったら「わいわいしたい」を押す
上記二つは,押したタイミングで他の人の画面に表示される - 「それな」「いいね」ボタンを押すとボールが降ってきて,それが溜まっていく
メンバ構成と役割
毎日同じ割り振りではなかったが,基本的にバックエンドとフロントエンドで分業していた.
- Aさん(プロダクトオーナー)
ほぼバックエンドをやってた.調べるのが速い.どこかで詰まってもすぐに解決策を持ってきてくれる. - Bさん(スクラムマスター)
ほぼバックエンドかつデプロイ担当大臣.明るい.結構序盤にアーニャの真似をさせられた可哀想な学生.なんだかんだ楽しそうだったけど. - Cさん
秋学期も別チームで一緒に開発した.フロントエンドがメインだったはずだけど,夏は私と一緒に作業することがほぼなかったから,夏どんな感じだったか正直分からない.大学入って初めてASIAN KANG-FU GENERATIONのファンに出会えて嬉しかった. - Dさん
フロントエンドやってた.一回だけ一緒に作業したけど,html慣れしていたので私はスペルチェッカー状態だった.多分大半のhtmlを書いてた. - Eさん
意見が鋭くて,チームが謎の方向に進もうとすると,そこじゃなくないと突っ込んでくれた.プロダクトの価値がどこにあるのかを一番理解していたと思う.基本はフロントエンドやってた.. - 自分
ちょっとフロントエンド,大半はバックエンドやってた.途中,ウェブソケットを使うのがうまくいかなくなった時は,自分がウェブソケットを使わない解決策を探す役割を担った.結局はメンター,外部の方の協力を経てウェブソケットが使えた. コードを書くことはほとんどなかった.
個人的振り返り
時間がない中での開発ということもあり,いまいちコードの内容を理解できていないまま終わってしまった.一回のスプリントでやろうとしたことができないことが多く,それによってチーム内での進捗共有が行われなかったため,PBIを詳細に分割していくことが必要だと感じた.
秋学期
プロダクト名・概要
プロダクト名はCookりさん(こっくりさん).レシピ検索サイトだ. 下記3つが私たちのプロダクトの柱であり,レシピけんさくやレタスクラブなど似たプロダクトはあるものの,全てを満たすものはないことから差別化を図った.
- 食材タグで簡単に検索できる(キーボードがいらない)
- 後から食材を追加できる
- 後から食材を省くことができる
使い方
1.自分が食べたい(消費したい)食材タグをタップして検索
2.追加で食べたい食材があれば,レシピ中の食材タグをタップすると,画面上部の「消費したい食材を入力」テキストボックスにその食材が追加される.
3.食べたくない(家にない)食材があればその食材タグの横の「-」ボタンをタップすると,画面上部の「省きたい食材を入力」テキストボックスにその食材が追加される.
4.複数食材での検索中に,個々の食材が同時にレシピに入っていなくても良いと思えば,検索結果の「一部の食材を使う」をタップする.
メンバ構成と役割
私たちのチームは基本的にモブプログラミングで開発を行ない,ドライバーを適宜交代していた.誰かがいない日でも滞りなく開発を進めるためである.私たちのチームには2人開発強者がいたため,彼らに教わりながらコードを書いたり,他のメンバの作業を見ていたため大半のコードを理解することができ,個人的には非常にありがたかった.
-
ギルド
強者の1人.開発慣れしていて,アイデアを出すのも,それをコードで実現する方法を考える(見つける?)のも速い.後,コードの説明が上手い.いつの間にかチームのアイデアを議事録チャネルに書いてくれてる.途中から時間管理もやってた.Mr.マルチタスク. -
Nakaya
強者のもう1人にしてプロダクトオーナー.進行役であり,チームの意見を集約するのが上手い.ギルドと2人で毎回の方針の会話を進行しつつ,他のメンバにも話を振ってくれる. -
なおと
死ぬほど時間ギリギリの時も快く引き受けてくれるデプロイ大臣.何かすると必ずありがとうと言ってくれる. -
Cさん
夏合宿の人にして,スクラムマスター.頭の回転が速いのかコードの理解も速かった.私たちが時間を忘れかけていると,時間大丈夫?と声をかけてくれた. -
自分
特に決めていたわけではなかったが,ほぼ毎回画面共有をしていた.あとはドライバーを積極的にやるようにしていた.
プロダクト及びチームの軌跡
(0スプリント目)
秋学期になり,プロダクトを再検討する時間が設けられた.自分は途中加入だったこともあり,この時は意見を求められても,ただ前の意見に同意するということがほとんどで,良いのか悪いのかチーム内でも意見が割れることもなかった.
1スプリント目
0スプリント目でのプロダクトの方針に対するフィードバックをもとに,さらに方針を練ることになった.変化を下図に示す.独り暮らしの大学生の困り事として,買ってきた食材を使いきれない(レシピが思い浮かばない,調べるのが面倒臭い)ということがあがり,それを解決したいというのが大元の目的だった.しかしEVPには「レシピがスパッと決まらない」という文言があり,さらに「レパートリーを増やすこと」が直接の解決策ではないという結論に至り,より大元の目的を達成できるように具体化していった.
2スプリント目
ひとまずメンバ全員の環境構築から始まった.requirements.txtのファイルのスペルをミスったせいで,requirements.txtから必要なモジュール等(?)をインストールできず.盛大に時間をロストしてしまったが,焦らず落ち着いて行こうという共通認識ができた.最終的に,「cookりさん」と画面に出すところまでで作業が終了した.時間の管理をしていなかったため,フィードバック前にバタバタした.
3スプリント目
レシピを画面に表示することはできた.この時点では,何か食材などを選択→検索→表示ではなく,ただいきなり画面にレシピが一つ表示されるという状態.HTMLに書いていったが,余白がどうなるかとかそのあたりが難しく,何度も試してしっくりくるものを採用した.私は初めてbootstrapを知り,すげーと思った.
4スプリント目
レシピが一つでは選ぶ体験できないということで,前回のHTMLにレシピをいくつか追加した.その後,そのページを検索結果画面として,また別のHTMLに検索するためのトップページを作成した.テキストボックスにキーボードで打ち込むのは面倒臭いため,食材名をタグにして,タグをタップすると検索する食材に追加されるようにしたかったが,間に合わず食材タグがトップページ追加されただけになってしまった.つまりこの時点では何かを検索することはできず,一応トップページで「検索」をタップすると固定の検索結果画面に飛ぶという感じ.そのため「レシピの絞り込みを体験」してもらう段階までいけず,思うようなレビューが得られなかった.具体的には「タグでの絞り込みが使いやすいかどうか」を確かめたかったが,やはり体験できる状態に持っていくことが何よりも重要だと気付かされた.
また,この日から今までの時間管理の見直しを図った.各作業にどれくらいかかるのかを予測して作業前にメモしておくようにした.ある作業にかかった時間から別の作業にかかる時間を上手く予想できるようになった.これをmiroに書いていたらメンターさんに褒められた.
5スプリント目
ロングレビューを経て,認識にずれがある可能性を考慮してチームでもう一度話し合った.代替食材の提案や,応用の効くレシピの表示など様々な意見をもらっていたが,あくまで「特定の食材を(同時に)消費するレシピが知りたい.そのレシピの中で持ち合わせていない食材があれば,それを含まないレシピにさらに絞り込んでいく.」というスタンスで一致した.これを元にFigmaを用いて完成イメージを共有した.この辺から各々が違和感やズレを感じたタイミングで,それを口に出せるようになった気がする.
6スプリント目
プロダクトオーナー,スクラムマスターが急遽不在になり少し困った.
しかしタグによる検索を可能にした.この段階では複数の食材の検索ではなく,タグをタップすると,すぐにその食材を使用するレシピが表示されるものだった.レシピ自体は既存のもの(クラシルなど)を,json形式で食材,サムネイル,リンクなどを格納しているため,HTML側で検索をかけた食材のタグをもつレシピをpythonでjsonファイルから取ってきて,検索結果として表示している.
7スプリント目
レシピ数が少なすぎるため,ひたすらレシピサイトからjsonファイルへの書き込みを実施.また,トップページでの2食材以上の検索に対応.タグをタップすると即表示ではなく検索条件に追加されていき,最後に検索をタップすると両方を含む食材を表示できるようになった.
8スプリント目
レシピの追加.スマホでの使用を想定しているため,スマホに適した画面の表示になるようにボタンの大きさなども含め調整をした.
9スプリント目
このあたりで授業時間外にギルド君がクローラ作成してくれてレシピ爆増.トップページの説明文がわかりづらかったため修正.
10スプリント目
not検索の実装.検索結果画面で表示されるレシピ上のタグのマイナスボタンをタップしてから再度検索をタップすると,その食材を使わないレシピに絞って表示される.
11スプリント目
検索結果画面のタグを押すことで検索結果にさらに食材を追加して検索することができるようにした.
12スプリント目
一度タップしたタグをもう一度押すと,検索条件から消えるようにした.
13スプリント目
検索結果画面上の検索条件をページ上部に固定.その後,改めて何を実装していくのかの優先順位を話しあった.今までは口頭ベースで話し合いを進めることがほとんどだったが,付箋にリアクションをつける形(下図)で全員の意見を吸い上げた.プルリクエストの承認が適当になってしまい,レビュー時にエラーが発生してしまった.
14,15スプリント目
今までは選んだ食材全てを含むレシピを表示するのが基本だったが,選んだ食材を一つでも含むレシピを全て表示する機能も実装した.
振り返り
-
モブプロ最高
個人的に,夏合宿でほとんどコードを書けず,理解もできなかったためドライバーとしてコードを書くことができて嬉しかった.各スプリントの最初のドライバーにほぼ毎回名乗り出ることができた.また,自分が直接コードを書いていなくても,全員でドライバーの作業を見る形だったためコードの大部分を理解した上で開発を続けられた.ギルド君,Nakaya君が毎回コードの説明してくれてありがたかった. -
取捨選択
レビューにおいて本当に色々な提案,アドバイスなどをもらった.それぞれに良さがあるため時々迷ってしまうことがあったが,結局一番大事なのは自分たちが提供したい価値や体験であり,全てを実現しようとする必要はないしそれはほぼ不可能だと思った.自分たちの軸にある部分を意識するようになってからは,惑わずに開発を進めることができた. -
体験,動くプロダクト
何かアドバイスが欲しければ,雑でもいいからとにかく動く状態のプロダクトを触ってもらうことが一番だと気づいた.特に序盤は方向性が定まらないこともあり,これとこれとこれのうちのどれがいいですか,みたいなことを聞いていたが,ユーザにしても触ってみないことにはどれが良いのか判断ができない.選択肢を与える時も,小規模でそれが体験できるものを作る必要があると思った.Not検索の実装ができたあたりからはレビューでもらえる意見も,より多くより深いものだった.開発の仕方にもよるが,考えてるだけではなくまずは作ること,動かすことが重要.