siroemk’s blog

フィヨルドブートキャンプで学んでいます(2020/11〜)

フィヨルドブートキャンプのチーム開発に参加した話

この記事はフィヨルドブートキャンプ Part 1 Advent Calendar 2022 - Adventarの1日目の記事です。

今年もPart 1、Part 2のアドベントカレンダーが用意されているので、これから毎日記事を読んでいくのが楽しみです!

目次

はじめに

フィヨルドブートキャンプで学習しているsiroです。普段は2人の女の子を育てながら、自社サービスのカスタマーサポートとして働いております。

フィヨルドブートキャンプには2020年の11月頃から参加し、ちょうど2年が経過しました。(進みはゆっくりな方)

ちょうどフィヨルドブートキャンプのカリキュラムの終盤にあるチーム開発が終わったので、感想を書いていこうと思います。

フィヨルドブートキャンプのチーム開発

フィヨルドブートキャンプでは終盤にチーム開発というカリキュラムが用意されています。チーム開発では普段フィヨルドブートキャンプで使っているEラーニングシステムの開発に参加します。

github.com

Issueにポイントが付与されていて、20ポイント分のIssueを担当し、closeになったらチーム開発のカリキュラムが完了になります。

EラーニングシステムはRails、Vue.jsで構成されていて、ここまで学んできたRubyRails、Vue.jsはもちろん、Git、データベース、オブジェクト指向、テスト技法など全ての力を結集して開発していくので点と点が繋がってく感覚があり、とても楽しかったです。

実際に担当したIssue

以下のIssueを実際に担当しました。

  • 簡単な文言修正
  • バグ修正
  • Vue.jsに関するもの
  • 新機能の開発(定期イベント)
  • 外部のOSSにPRを送って解決したもの

徐々にレベルが上がるIssueを割り振ってもらえるので、スムーズに進めることができました。

Issue PR
テスト用ユーザデータのFacebookURLが、Fjordに関係がなさそうな実在する人のURLになっている · Issue#3601 #4544
未アサインの提出物のDiscordの通知にリンクを付ける · Issue#4313 #4559
卒業生のダッシュボードに「卒業後の目標」の入力を促すブロックは表示しない · Issue#4505 #4597
相談部屋に未ログインでアクセスすると500エラーが出る · Issue#4487 #4601
[通知] ユーザーが退会した時、メンターに通知が飛ぶようにしたい · Issue#4387 #4605
カテゴリー並び替えで空のスラッグの行を削除したい · Issue #4563 #4639
エラーで表示されないメールのプレビュー画面がある · Issue #4441 #4644
[定期イベント]定期イベント一覧、個別、作成、削除がほしい · Issue #4537 #4862
プロフィール画像のファイルアップロードにおけるセキュリティ上の懸念 · Issue #2456 #4963
[定期イベント]定期イベントをコメントアウトしてリリース · Issue #4925 #5034
FirefoxでD&Dによる画像添付ができない · Issue #5332 #5613

最後の方のIssueは初見では全くわからなかったので、自力で調べて、怪しいコードを何度もデバッグして解決していきました。

また、落ちたり落ちなかったりするFlakyなテストもあり、原因を突き止めるために何度もテストを回してkomagataさんに質問しにいったり、「あーでもない、こーでもない」と根気強くやっていた気がします。

私がフィヨルドブートキャンプに入ったばかりの頃は「チーム開発まで進んでいる人はすごい...」「雲の上の存在だ...」と思っていましたが、チーム開発まで進んでも全然そんなことなく、「新しい分からないがどんどん出てくるんだな」と思っていました。

これは多分これからもずっとそうですね。

新機能を開発した

担当したIssueの中で一番思い出深いのは『定期イベント』という機能の開発です。

フィヨルドブートキャンプでは在校生・卒業生が自発的に輪読会を開催しています。最初の頃は輪読会も少なかったので、いつ開催されているか把握できていたのですが、輪読会もどんどん増えてきて「いつ開催されるのか」追えなくなっていました。

そこで輪読会の一覧をフィヨルドブートキャンプのアプリ上でドキュメントにまとめていました。

簡単に書いたドキュメントだったのですが、新しい輪読会が開催されるたびに皆さんに更新いただき、私が思っていたよりもよく使われるドキュメントとなっていました。(ありがとうございます)

このドキュメントの代わりとなる、輪読会などのイベント情報を管理する機能として作ったのが『定期イベント』機能でした。

machidaさんに「輪読会一覧のドキュメントを作ってくれたのがsiroさんなので定期イベント機能もお願いしたい」と言っていただき、嬉しかったのを覚えています。

この定期イベントの新規作成ページや詳細ページ、編集・削除、イベント一覧の一通りの機能を実装しました。

マイグレーションファイルを作るところから、多対多の関連付け、一覧をVue.jsで実装するなど、今まで勉強してきたことがモリモリ入っていて「全てが繋がっているんだな〜」と一番実感したIssueです。

新機能なのでざっくりとしか仕様が決まっていないところもあり、あとで「もう少し詳細に確認しておけばスムーズだったな」と思うところもありました。そこは今後に活かしたいです。

そして、ちょうど昨日、定期イベント機能がリリースされたようです。他のチームメンバーが機能の肉付けをしてくれて、とても使いやすくなっていたので感動しました。

みんなの力を合わせて作った機能を使ってもらえると思うと、嬉しいですね。

はじめてレビューする

チーム開発で一番最初に不安に思っていたのはレビューでした。

チーム開発では最終的にkomagataさんにレビューしていただくのですが、その前にチームメンバー間でレビューするルールになっています。

他の方が書いたコードをレビューするのは初めてだったので、「何を見たら良いのだろう」「そもそも自分が書いたコードでさえあまり自信がないのにレビューできるのかな」と不安を感じていました。

日報にそんなことを書いていたら、メンターさんから

正しいことを書かないととか、間違いを見つけないと、というプレッシャーを感じる必要はなくて、よりよいものを一緒に作っていくための行為と思っていただけるとよいのかなーと思います!

とコメントいただき、気持ちが楽になりました。

レビューを「よりよいもの作るため」だと考えればレビューへの抵抗もなくなり、自分が少しでも疑問に思ったことはコメントするようになりました。レビューで指摘してもらった時も落ち込んだりすることもなく、その内容に向き合うことができた気がします。

他にも、指摘するような文面だけだとキツい印象を感じてしまうかもしれないので、良いと思ったところや勉強になったところも積極的にコメントで残すようにしていました。

komagataさんが「チーム開発ではコードを書くより、コミュニケーションのためのテキストを書く時間の方が長い」というようなことをおっしゃっていたのですが、本当にその通りで、メンバーに「テキストでどう伝えると意図通りに伝わるのだろう」と考えている時間が長かったです。

仕事と子育てとチーム開発

そして、私は日中は仕事をしていて夜は子育てをしているので、空いている時間を見つけて作業していくのがかなり大変でした。

チーム開発ではレビューをしたり、ペアプロ・ペアレビューしたり、MTGがあったりと他のメンバーと作業することが多かったので時間の確保に苦労しました。

時間を合わせるために有給を取ったり家族に協力してもらい、なんとかこなすことができた気がします。

特にチーム開発のMTGは、仕事のお昼休みの時間を使って出ていたので体力的にかなりハードでした... (チーム開発のMTGは水曜の昼か夜かを選べるのですが、夜は子どもの寝かしつけがあるので、できる限り昼に出ていました)

「仕事と子育てしてても余裕だった!」と言いたかったですが、全然そんなことなく...「絶対に最後までやるぞ」という気力でなんとか終わらせた気がします。

無事全てのIssueをcloseできて一安心です。

もっと余裕を持ってやっていきたかったですね。(でも仕方なかったかな)

さいごに

今年の春頃からチーム開発をスタートして、肌寒くなるくらいまでやっておりました。数ヶ月で終わる方が多いので、長い方だとおもいます。

記事を書いている時点で今年のFBC contributors、19位でした。

実は夏前に第三子の妊娠が分かり、なかなか思うようなスピードでは進められなかったですが、無事最後のIssueまで終わって良かったです。

今は自作サービスを作るためにReactを絶賛勉強中です。来年の早い段階で(できれば出産前に)自作サービスをリリースしたいなと思っています。

がんばります〜!

おまけ

あと、チーム開発を進めながら、Rails Girls Gathering Japan 2022というイベントのスタッフとしてイベントの準備を進めてきました。こちらのイベントが今週の土曜日(2022/12/3)に開催予定なので、ご参加いただけると嬉しいです。

gathering.railsgirls.jp