Roll With IT

tamakiのIT日記

チーム開発振り返り

はじめに

先日所属するフィヨルドブートキャンプ(以下FBC)にて、チーム開発のプラクティスを修了することができました。

FBCでは、実際の仕事と同じようにアジャイルでチーム開発を行うカリキュラムが用意されています。以下のWebサービスの開発をチームで行っていきます。

github.com

チーム開発に参加するとIssueが割り振られます。割り振られたIssueには、チームメンバーでプランニングポーカーを行い見積もったポイントが付与されており、20ポイント分のIssueのPull Requestがすべてマージされたら修了になります。

取り組んだIssueとレビュー対応したPull Requestの振り返りを、一言コメントを載せつつ振り返っていきたいと思います。学べたことや反省点など、これからチーム開発に取り組む方の参考になれば幸いです。

取り組んだ期間

  • 約4ヶ月(12月中旬にはIssueレビュー待ちにて作業自体は完了)
  • 平日:2〜4時間
  • 休日:6〜8時間

チーム開発ミーティング

  • 初回参加日:8月24日
  • 最終参加日:1月11日

ミーティングは皆勤賞を達成!

Issueの進捗がなく気持ちが落ちた時もミーティングには必ず参加すると決めていたので、このマイルールは達成できてよかったです。

各々のスケジュールの問題もあり難しいところではありましたが、もっとチームメンバーと関わり協力してIssueに取り組めればよかったと思いました。ペアプロ、モブプロなどを通して数名の方とは関わりを持てましたが、多くのチームメンバーとは接点が持てませんでした。4ヶ月の間に20名近くの方と参加時期が被っていたとは思いますが、仕事や生活スタイルもバラバラなので、さすがに全員と関わるのは難しかった...汗。

それでも、レビューを依頼し合ったり、毎週のミーティングにて顔を合わせることでチームで作業を進めている感覚は十分ありました。チームメンバーのみなさんには本当に感謝しかありません。

アサインしてもらったIssues

  • 11個のIssuesに取り組んだ
  • 合計21ポイント

担当提出物の未返信が0だった場合の文言変更。 · Issue #5008 · fjordllc/bootcamp

Good First Issue。実装内容は文言の変更のみ。このIssueの胆はIssue着手からPR提出までの手順を覚えること。チームメンバーと一緒に取り組みモブプロ形式で進めた。

ログイン失敗時のパスワード入力のlabelが英語なので日本語にしてほしい · Issue #5380 · fjordllc/bootcamp

既に解決済みだったIssue。調査のみので終了。プロダクトオーナー(POだけでなくチームメンバー全員)とのやり取りで、口頭やディスコードだけではなくIssueのコメントに記録を残すことが大事なことを学んだ。またはっきりしないIssue内容は「はっきりするまで確認を取ること」も大事。自分で勝手に解釈して進めてはいけない。

アドバイザーでログインしたときに提出物にアクセスをしたら、全ての提出物一覧が表示されてほしい。 · Issue #4651 · fjordllc/bootcamp

メンターさんにペアプロしてもらいルーティングのチェックからDevToolsを使用した問題の切り分け方など基礎的なことを教えてもらう。 このIssueでDevToolsを使ったデバッグ力が一気に上がった。

user.vue, users.vueをVueMounterに対応させる · Issue #5147 · fjordllc/bootcamp

VueMounter(npm)がテーマのIssue。Vue.jsを復習しつつ、Vue Componentのマウント方法について学べた。

[abstract_notifier] 研修生の日報作成の通知の実装を置き換えたい · Issue #4687 · fjordllc/bootcamp

abstract_notifierへ置き換えを学んだ。gemを理解するのに時間がかかった。コールバック機能を理解した。

[newspaper] お知らせの通知削除処理をnewspaperに置き換えたい · Issue #5493 · fjordllc/bootcamp

newspaper。Pub/Subパターンについて学ぶ。newspaperが薄いpub/subライブラリであることを理解した。

[参考書籍] 参考書籍一覧をプラクティスで絞り込みたい · Issue #4958 · fjordllc/bootcamp

Choices.jsを使用するIssue。長時間詰まってしまいペアプロを依頼。自分の中では上手く進めることができていると思っていたが、見当違いの実装をしていたり、だいぶ脱線していた。軌道修正し対処。すべてのIssueに当てはまる大事なことを学んだ。

  • Issueに書かれていない内容以外の実装は原則不要
  • 行間を読んだり憶測で勝手に判断してはダメ
  • 分からなくなったら常にIssueに立ち返る
  • Issueで求められていることが分からなければ必ず確認を取る
  • 万が一、Issueで提示されていない機能や変更が必要だと思われる場合は必ず確認を取る

ActiveRecord::RecordInvalid: バリデーションに失敗しました: Userはすでに存在します · Issue #5588 · fjordllc/bootcamp

バグ修正対応のIssue。APIテストを理解。コミュニケーションのミスも続き、色々と上手くいかなかったIssue。テキストコミュニケーションの難しさを痛感。

メンターダッシュボードに5日経過した提出物が0件の場合、5日経過した提出物はありませんと表示したい。 · Issue #5735 · fjordllc/bootcamp

システムテストは重いので、UI上でデータを作ることは避け、テストコード内で自分でデータを作る必要があることを学んだ。

[abstract_notifier] イベントの補欠への繰り上がりの通知の実装を置き換えたい · Issue #4686 · fjordllc/bootcamp

abstract_notifierのIssueは2回目。前回の復習も兼ねながら取り組む。

[メンター紹介]メンターの関連書籍に画像をアップロードしてもプレビューできない · Issue #5785 · fjordllc/bootcamp

最後に取り組んだIssue。当初は自分でjsファイルを用意してプレビュー機能を実装したが、別で同じファイルがあり、DRYにしたところ数行の修正で完成した。スッキリ!

レビューしたPull Request

  • 13個のPull Requestをレビューした
  • 合計31ポイント

フッターにブログへのリンクを追加 by fuwa-syugyo · Pull Request #5435 · fjordllc/bootcamp

Good First Issue。ちょうど同じタイミングでの参加だったチームメンバーと一緒にモブプロを企画し先輩らに助けてもらいながら取り組んだ。

user-practice-progress.vueをVueMounterに対応させる by choco0809 · Pull Request #5479 · fjordllc/bootcamp

VueMounterを利用したマウント方法になっているかどうかの確認方法を学んだ。DevToolsを使用してブレークポイントを指定する方法。

プラクティスの日報タブに表示される日報一覧にVueComponentを適用させた by yuma-matsui · Pull Request #5505 · fjordllc/bootcamp

VueComponentに関する内容。VueComponentの復習になった。

確認通知を[abstract_notifier]に置き換えた by choco0809 · Pull Request #5506 · fjordllc/bootcamp

gem letter_opener_webを使って通知メールを確認 する方法を学んだ。

タグ別ユーザー一覧ページの title タグを変更 by hikarook94 · Pull Request #5528 · fjordllc/bootcamp

Good First Issue。一緒にモブプロしてレビュー依頼までいただく。チームメンバーとわいわいと取り組めて楽しかった。

FirefoxでD&Dによる画像添付ができるようにした by siroemk · Pull Request #5613 · fjordllc/bootcamp

gemにPRを出して対応されていたPR。難しいレビューだった。gemへの対応はよくわからなかった。

提出物ページの「直近の日報」をVue化した by pachikuriii · Pull Request #5618 · fjordllc/bootcamp

Vue化の勉強になった。自分が取り組んでいるIssueの内容と近く参考になった。

みんなのブログ一覧ページを作成 by siso25 · Pull Request #5646 · fjordllc/bootcamp

大きめのIssueのPRレビュー対応。システムテストが不十分な気がしたが、結果的には最低限のテストを実装されており問題なかった様子。

管理ページにプラクティス一覧を追加した by fuwa-syugyo · Pull Request #5666 · fjordllc/bootcamp

テストが不十分かなと提案したが結果は不要だった。テストはどこまで必要か?レビュー難しい。

非画像ファイルがアップロードされた時リンクで表示されるようにした by keiz1213 · Pull Request #5659 · fjordllc/bootcamp

Issueで求められていることに対してnpmを使うことを検討し、PRのコメント内でスクラムマスターへ提案しているやり取りが参考になった。

Watchタブでも日報作成とマイプロフィールの確認をしたい by ksmxxxxxx · Pull Request #5758 · fjordllc/bootcamp

Good First Issue

フッターにFBC Contributorsのリンクを追加 by dowdiness · Pull Request #5901 · fjordllc/bootcamp

Good First Issue。ペアプロした。

[アンケート機能]アンケートを作成できるようにした by AyakaTakashima · Pull Request #5690 · fjordllc/bootcamp

ラストのレビュー依頼にして初めての5ポイントのIssueだった。ボリューミーなPRで大変だったが非常に勉強になった。今までで一番多くの項目でレビューすることができ、自身の成長を感じた。

おわりに

4ヶ月間、終わってみるとホントあっという間でした。数日詰まって手も足も出なかったり苦しい期間もありましたが、チームメンバーに助けてもらい乗り越えることができました。まだまだ力不足を感じますし反省点も多いですが、すべてのIssueのPull Requestが無事マージされとても嬉しいです。

bootcampアプリに自分が書いたコードが反映され、機能が追加され、そして使ってもらえていると考えると「ここまで長かったけど成長したな〜」と少しだけ自分が誇らしく思えました。

チームメンバーのみなさま、約4ヶ月と長い間大変お世話になりました!