ぺのめも

Web開発を勉強中。学んだことや思ったことなど

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

はじめに

peno022 です。普段はプロダクトマネージャーとして働いています。
現業では自分でコーディングする機会はほぼ無いのですが、プロダクトの技術的な理解を深めたいと思い、フィヨルドブートキャンプという Ruby on Rails をメインとしたコミュニティ型のプログラミングスクールに通いました。

その中で、普段フィヨルドブートキャンプで使っているEラーニングシステムをスクラムチームで開発するというカリキュラムがあり、学びが多かったので記録しておきます。

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

チーム開発では、フィヨルドブートキャンプのEラーニングシステムの開発チームに1メンバーとして参加し、開発を行っていきます。

フィヨルドブートキャンプのアプリ画面
フィヨルドブートキャンプ画面

フレームワークRuby on Rails、一部の View では React、Vue.js を利用しています。
Public リポジトリになっているので、内容はどなたでも参照可能です。

github.com

スクラムチームの構成
  • フィヨルドブートキャンプの運営者でプログラマーの komagata さんがスクラムマスターを担当
  • 同じく運営者でデザイナーの machida さんがプロダクトオーナーを担当
  • 複数人の受講生(時期によりますが10人前後くらい)が開発を担当
開発の進め方
  • 週に一度、その週の振り返りと翌週の計画ミーティングを実施。各人の進捗共有と Issue の割り振りを行う。
  • 開発者は担当 Issue に対応し、PR を作成(仕様のすり合わせなど必要な時は都度 Discord で相談)
  • 開発者(受講生)の誰かに PR レビューを依頼。
  • 受講生のレビューが完了したら、komagata さんに PR レビューを依頼。
  • レビューが完了したら、マージ&ステージング環境にデプロイ。
  • ステージング環境での動作確認後、本番にリリースし、Issue をクローズ(リリースは週次で実施)。
  • 20ポイント分の Issue を担当して全てをクローズできたらチーム開発のカリキュラムとしては終了し、その人は開発チームから抜ける。

フィヨルドブートキャンプ開発のかんばん

実業務と違うのは、事情があって急ぎたいもの以外は基本的にスケジュールが本人に任されるという点です。(チームに都度状況共有をすることは大前提として)
仕事や育児などと並行して限られた時間で参加している方も多いですし、締め切りにあわせて無理して進めなければいけないということは起きません。

担当した Issue

Issue PR
トップページのお二人の横断幕を外す · Issue #5796 #5812
app/views/home/index.html.slim.page-header-actions のリンクにul,liタグを付与したい · Issue #5783 #5819
ダッシュボード > ブックマークが 0 のときの表示を変えたい · Issue #5679 #5838
booksのページでエラーが起きているのを修正する · Issue #5788 #5921
ログイン必須の指定が多すぎる · Issue #5984 #5921
ブログ一覧で、記事の表示数を3の倍数(24個)に設定する · Issue #5900 #5922
確認通知をactive_delivery化したい · Issue #5874 #5924
[newspaper] 提出物のステータス変更処理をnewspaperに置き換えたい · Issue #6018 #6034
個人の日報一覧もプラクティスで絞り込みたい。 · Issue #6037 #6044

レビューを担当したもの:

Issue PR
ブックマークがアクティブのときの色を変えたい。 · Issue #5820 #5842
footer に Fjord Choice のリンクを置きたい · Issue #5797 #5847
スマホ時の検索の表示・非表示をJSで行いたい。 · Issue #5805 #5845
コメント通知をactive_delivery化したい · Issue #5873 #5919
ユーザー登録から数日後に相談部屋にメッセージを送りたい · Issue #5746 #5959
Q&A個別ページの右カラムに、そのカテゴリーの一覧を表示したい。 · Issue #5999 #6135

感想

自分たちがユーザーであり開発者なので楽しい

カリキュラムの順番上、半年〜1年ほど受講生としてフィヨルドブートキャンプのサービスを使ってきた上で、開発チームに参加することになります。
そのため、ユーザー視点でのサービス理解が十分に深まった状態で開発に臨むことができ、とても良かったです。今対応している Issue によってどんなユーザー課題が解決できるのか想像しやすく、開発を楽しめました。
また、ユーザー課題について考えることは普段のプロダクトマネージャー業務でもやっている一方で、開発観点でより理解しやすい・メンテナンスしやすい実装に落とし込むにはどうすればよいか? を考える機会をこのチーム開発では得ることができました。

開発作法を理解していく経験を積める

このEラーニングシステムは、活発に開発を続けられながら4年ほど本番運用されています。
個人で開発した小規模なシステムとは違って、どこに何のロジックがあるか、ぱっと見では分からないことも多々あります。
そのため最初は小さな修正の Issue を担当をしながら、どこに何があるのかを把握していきました。
また、このシステムに合わせた開発環境の構築方法や開発ルールも、チームに参加してからキャッチアップしていくことになります。
こういったプロセスは個人開発では通ることができないので、良い経験になったと思います。

最後に

一番最初の Issue にアサインされてから、最後に担当した Issue をクローズするまで、ちょうど3ヶ月ほどの活動でした。一人で学習しているだけだとチーム開発はなかなか出来ないので、学習コミュニティに参加してよかったです。
チーム開発をしたいけどどうやって始めたらいいか悩んでいる方がいれば、フィヨルドブートキャンプはおすすめです!