patorashのブログ

方向性はまだない

Railsのモブバージョンアップ会を開いた

先週ですが、うちのプロダクトのRailsのバージョンを6.0系から6.1.4.1にアップグレードしました。その際に、1人でアップグレードを行うのではなく、チームメンバー3人全員でバージョンアップを行ったので、それについて書いておこうと思います。

なぜ全員でやったか?

Railsのバージョンアップをする機会って、実はなかなかありません。最後の1桁のバージョンアップは基本的にセキュリティ修正やバグ修正のため、ほぼ設定を修正することなく終わるアップデートです。

Rails 6.1はリリースされてから結構経っていますが、実は出た直後くらいに後輩くんにRailsのバージョンアップの経験をしてもらおうとタスクを振ってみたのですが、数日かかっても終わらなかったので、当時は「いくらなんでもこれだけ時間かけてRailsのバージョンアップが終わらんって…😯」と思っていました。しかし、スモールリーダーシップを読んでから、「やっぱこういうところから一緒にやっていくところが大事やな」と考えを改めて、モブバージョンアップ会をやろうとずっと考えていました(だいぶ後回しにしてしまったけど)。

私はRails3の頃からずっとバージョンアップをやってきているので、大体手順は分かっています。一般的なRailsのバージョンアップで気を付ける点と、うちのプロダクト独自のハマりポイントに気が付くので、そういう地雷に対する鼻を利かせながら教えることができます。これもまた、情報格差を減らせるタイミングです。

因みにあと1人は協力会社のパートナーさんですが、パートナーさんも一緒にやったのは、バージョンアップの経験をしておく人数は多いに越したことはないと思ったからです。

進め方

画面共有はTeamsで、コード共有はJetBrainsのRubyMineを使っているので、CodeWithMeを使いました。 修正してCIを流してエラーメッセージを確認して、何が原因かを話し合いながら、調べた結果を共有しながら進めました。

実際にハマったところ

うちの製品はPostGISを使っているので、Rails 6.1にしたタイミングでactiverecord-postgis-adapterのバージョンアップも必要になりました。また、RGeoの初期設定でsridの設定が必要になったみたいだったので、それの修正を行いました。

みんな位置情報は使っているということは知っているんだけれど、PostGIS用のgemにまではなかなか思いつかなかったようだったので、「多分これだと思うよ」って伝えて、実際にREADMEを読んでみようと言って該当箇所を見つけ、コードをみんなで修正してテストを流してローカルで通ることを確認後、再push。無事にCIも通って、1日以内にマージすることができました🎉

良かった点

言わずもがな、知見の共有ができたことです。スモールリーダーシップに書いてあったけれど、「1人でやらない。複数人でやる。」というのは、情報格差があるときにはすごく大事だと思います。PostGIS系でハマることは多々あるので、次回は似たようなエラーメッセージが出たら直ぐに「あー、RGeoやな」と思ってくれることでしょう。また、通常のRailsバージョンアップの手順についても話すことができました。これで、次回からは自信を持ってやってもらえるはず💪

ということで、モブバージョンアップ、お薦めです。あと、スモールリーダーシップもお薦めです。