【フィヨルドブートキャンプ】チーム開発のgood first issueでモブプロをした話

この記事は フィヨルドブートキャンプ Part 1 Advent Calendar 2024 の1日目の記事です。
フィヨルドブートキャンプのアドベントカレンダー2024は、Part1とPart2があります。

🔖 目次

👨🏻 自己紹介

@sugiwe (すぎえ)と申します。
デザイナーという肩書きでロゴデザインやウェブ制作、その他様々なデザイン業務を行なっています。
2021年10月よりプログラミングスクールの フィヨルドブートキャンプ (以下、FBCと呼称)に入り、仕事をしながらプログラミング学習を進めています。

bootcamp.fjord.jp

先日、ようやくチーム開発というプラクティスに到達しました!
この記事では、チーム開発のgood first issueをモブプロで行ったことについて紹介いたします。

✏️ 用語解説

まずざっくりと用語解説をします。
記事全体がちょい長いので、ここはご存知の方は読み飛ばしていただいて構いません💨

チーム開発とは(クリックで開閉)

📝 チーム開発とは

チーム開発とは、FBCの終盤で取り組むプラクティス(課題)の1つです。FBC受講生が学習のために普段使っているEラーニング用Webアプリケーションの開発に参加し、自分たちが使っているアプリを自分たちで開発していくという、とてもエキサイティングなプラクティスです。
担当するissueごとにポイントが割り振られており、合計20ptのissueをcloseさせたらプラクティス完了となります。

github.com

good first issueとは(クリックで開閉)

📝 good first issueとは

good first issueとは、その名の通り初めて行うのに適したissueです。
(元々GitHubがissueに付与するためにあらかじめ用意してあるラベルの1つだったようで、FBCにおいてはまずチーム開発の流れに慣れるために、修正内容自体はごく簡単な文字修正やリンク追加などのissueに割り振られているようです)

good first issue: 初回のコントリビューターに適した Issue を示します
デフォルトラベルについて

モブプロとは(クリックで開閉)

📝 モブプロとは

モブプロとはモブプログラミングの略です。

モブプログラミング 【mob programming】
プログラミングをグループの共同作業として行う手法の一つで、3人以上のチームが同じコード編集画面を見ながら作業を進める。一人がコードをタイプする「ドライバー」、残りのメンバーがドライバーへ記述内容を指示する「ナビゲーター」となる。
モブプログラミング(モビング)とは - IT用語辞典 e-Words

<モブプロについての補足>
定義上のモブプロでは「ドライバー」は他メンバーからの指示に従ってコードをタイピングしていきますが、今回はこの定義に沿っていません。
good first issueに取り組むにあたって、僕がissueの内容を読み上げたりどこのコードをどういじるのかを声に出して作業しているところを他の人に見ていただき、何か困ったことがあったらアドバイスをしてもらったり、そうじゃなくても見ている人が何か気づいたことや気になることがあればドンドン声をかけていただく、という形式のものでした。
(なので厳密には「モブプロ」ではないのですが、FBC内ではこのスタイルのことも「モブプロ」と呼んでいる気がします。他のちょうどいい言葉があるといいのになぁ)

🧑🏻‍💻 なぜモブプロでやったのか?

FBCのgood first issueを進めるにあたって、「Good First Issue 攻略」というFBC生向けのドキュメントがあります。
ものすごく丁寧な説明が掲載されたドキュメントで、基本的にはこのドキュメントに沿って進めればgood first issueは問題なくクリアできるのではと思います。

ではなぜわざわざモブプロでやったのかというと、理由は大きく2つあります。

  1. 先輩受講生がやっていて楽しそうだったから
  2. モブプロ・ペアプロの開催が増えてほしいから

1. 先輩受講生がやっていて楽しそうだったから

1つ目の理由はシンプルで、先輩がやっていてなんか楽しそうだったから、ということに尽きます。

上述の「Good First Issue 攻略」というドキュメント内に、先輩受講生がgood first issueでモブプロを呼びかけているDiscord画面のスクリーンショットがありました。これを見てシンプルに「good first issueでモブプロやるの面白そうだな、自分もやってみたいな」と思ったのがモブプロ開催をしたキッカケです。

(「Good First Issue 攻略」内にもチーム開発に参加し、はじめて Issue に着手する際はペアプロ・モブプロを開催するのがおすすめです。サポートしてもらいましょう。と記載されています)

先輩受講生がモブプロ開催を呼びかけているところ

2. モブプロ・ペアプロの開催が増えてほしいから

実は、僕はこれまでも以下のシーンでモブプロやペアプロ等を経験したことがありました。

  • ラクティスで詰まってしまいメンターさんに依頼してペアプロを実施した
  • 勝手にモブプロ」というFBC内のイベントでみんなでワイワイとモブプロした
  • (これはモブプロではないですが)各種輪読会で不定期にドライバーを担当する

メンターさんや受講生の皆さんが温かく見守ってくれるというのが非常に大きいですが、こういった経験から「モブプロは見るのもやるのもめっちゃ役に立つし、なんといっても楽しい!」という印象を持っていました。

また、もっとFBC内でモブプロが開催されて欲しいという想いもあったので、それならまず自分でやってみようということで開催することにしました。

もっとモブプロ開催が増えていくといいなと思っています😄

👣 モブプロ開催までの流れ

モブプロ開催は非常に簡単です。

  1. 日時を決める
  2. 告知する
  3. 開催する

これだけです。

ただ、ビビリの僕は、実は「呼びかけてもボッチだったらどうしよう…」という恐怖心を持っていました😂
それもあって、告知をする前に自分の日報で参加してくれる人がいることを確認した上で開催告知をした、という流れでした。

日報内で参加してくれるとコメントをいただきました。圧倒的感謝…!

めでたくボッチにならないことが確定したので、FBC用のDiscord内で開催告知をしました。

Discord内でモブプロ開催を告知するsugiweの投稿
Discord内での告知。スタンプでの反応が嬉しかったです!

※1回やってみて思うのは、参加者が少なくてもボッチだとしても失うものは何も無いので、今後もっと気軽に開催したいなーとも思っています。(むしろボッチ開催の実績を解除したい)

😸 モブプロをやった感想

普段参加している輪読会後の時間に開催だったということもあり、輪読会に参加しているメンバーの皆がモブプロにも参加してくださいました!
Discord内の輪読会用ボイスチャンネルからモブプロ用チャンネルに一斉に移ってきてくれて、めちゃくちゃ嬉しかったです✨

実はモブプロをするにあたって、「モタついてしまったらどうしよう…」という不安があり、事前にコードの準備まではしていないですがざっくりどんなふうに進めれば良いかをイメトレして臨んでいました。

ちなみにその時のPRは以下です。

github.com

蛇足ですが僕はポッドキャストが大好きなので、ポッドキャストのリンクを追加するというissueを担当させてもらえたのも何気に嬉しかったです😄

🏋️ モブプロ開催で得られたこと

イメトレの甲斐もあり、作業自体はかなりスムーズに進めることができました。

「じゃあモブプロじゃなくても良かったんじゃないのか?」と思われたかもしれませんが、そんなことは無かったです。モブプロに参加してくださった方に、ドキュメントには載っていない色々なアドバイスをもらうこともできました。

  • issueやその他GitHub上で質問するときは、必ずメンションをつけるようにする(使い分けた方がいいかなと思ったりもしましたが、変に遠慮しても気づいてもらえないので遠慮は不要)
  • good first issueはテストが無くても問題ないことが多いけど、基本的には何か修正をしたらテストを追加すべき
  • 複数のissueを同時に進めてデモを行う際、手元でブランチをその都度切り替えると大変なので、複数のブランチをまとめたデモ用ブランチをローカルに作っておくと便利
  • レビューを担当した際、最終的にOKのタイミングでApproveを押さないといけない。(コメントで「OKです」とするだけではApproveしたことににならないので注意)

これらは、チーム開発を進めるにあたって必須とも言えることばかりですが、モブプロをしていなければ知るのが遅くなってしまったのは間違いないので、モブプロ実施によって初めのタイミングでキャッチアップできて本当によかったです。

モブプロ・ペアプロのメリットとして「改めて共有するまでもないコツなどをシェアできる」ということは一般的にもよく挙げられますが、今回このメリットを強く実感しました。

あとはなんといっても、モブプロ自体が楽しいです。PRを出した瞬間にDiscordの拍手機能で祝ってもらえて嬉しかったです😄✨

モブプロやペアプロ、自分ももっとやりたいし、FBC全体でもっと沢山開催されるといいなと思いました。

🔥 終わりに

20ptのissueをcloseさせたら完了となるチーム開発ですが、現状で僕が割り振られているのは9pt分です。まだ半分の手前といったところなのでこれから困難が待ち受けているような気がしますが、今のところは難しさを感じながらも楽しく取り組めています。

FBCで学習をしていくにあたっての最近の自分のテーマは「できることを楽しむ」です。 (そのテーマで1ヶ月ほど前にLT発表もしました!)

speakerdeck.com

引き続き、「楽しむ」を大切にしてFBCでの学習を続けていきたいと思います。

🚀 余談の裏目

最後に余談となりますが、僕はチーム開発で「出来るだけ自分で立てたissueを担当する」という裏目標を掲げています。

(※チーム開発ではメンターさんからissueを割り振ってもらい取り組んでいきますが、issueは誰でも自由に立てることができます)

自分が立てたissueを担当するというのはメリット・デメリット両面あると思いますが、個人的には大きなやりがいを感じています。(毎日自分が使っているアプリで自分が欲しいと思った機能を自分で実装できるなんてサイコーだと思いませんか?)これについてはチーム開発のプラクティスが全て終わってから改めて別記事で書きたいと思っています🚀

📅 明日のアドカレ

ここまで読んでくださりありがとうございました!

明日のフィヨルドブートキャンプのアドベントカレンダー2024は、以下の予定です!

  • Part 1: chihaso さん
  • Part 2: okuramasafumi さん

フィヨルドブートキャンプのアドベントカレンダー2024は始まったばかりです、この後も素敵な記事がたくさんアップされて来ますのでお楽しみに✨

📣 終わりの終わりに宣伝

今回のアドベントカレンダーとは別で、ふと思い立って1人アドベントカレンダーを立ち上げました。宣伝も兼ねつつ、挫折しないよう自分にプレッシャーをかけるためにここでお知らせいたします🚀

内容は「AtCoder過去問(主にA問題)をRubyで1日1問解く」です。さらに、解いてる様子を画面録画しており、その動画をYouTubeに配信したページを毎日掲載していきます。

これは1人でやってるのでモブプロではないのですが、ブツブツ言いながらAtCoderを解く様子を動画で眺めるのはモブプロへの参加者を疑似体験しているとも言える気がするので、もし良かったらたまに覗いていただけると嬉しいです。

adventar.org

お試しの11/30分と初回の12/1分はすでにアップ済みです。(途中、おそらくブラウザの問題でテスト結果が出ず若干グダっております、省エネのため極力編集に手間をかけずやっているのでご容赦ください😂)

www.youtube.com