Money Forward Developers Blog

株式会社マネーフォワード公式開発者向けブログです。技術や開発手法、イベント登壇などを発信します。サービスに関するご質問は、各サービス窓口までご連絡ください。

20230215130734

Ruby や Rails のアップグレード情報を共有する場を作りました。

こんにちは。 id:Pocke です。最近のマイブームはルピシアのラムレーズンの紅茶です。1

Ruby や Rails のアップグレード情報を共有する場を作ったので、それをご紹介しようと思います。

背景

Ruby や Rails のアップグレードは単純な作業ではありません。 アップグレードには多くの変更が含まれています。変更はそのソフトウェアが成長している証ですが、一方で痛みもあります。Ruby や Rails を使うアプリケーションが、それらの変更に対応する必要があるためです。

そのようなアップグレード作業を楽にする取り組みはすでにいくつか存在します。 例えば Rails ガイドの Rails アップグレードガイドでは、一般的なアドバイスと、各バージョンで注意すべき変更が書かれています。 また 社内版 Rails アップグレードガイドを公開します - Timee Product Team Blog永久保存版Railsアップデートガイド - pixiv inside など、アップグレードのたびに必要となる定型作業を整理し必要な作業を明確にする取り組みもあります。

これらのドキュメントがあることで、そのアップグレードにどのような変更が含まれているかと、どのような作業が一般的に必要かを把握できます。ところがこれだけだと足りない情報があります。それは各バージョンへのアップグレードで起こり得るトラブルです。 例えば Rails のアップグレードでは、アプリケーションが依存する gem に起因する問題が多々発生します。そのような情報は Rails ガイドのような公式のドキュメントには載っていないことが多く、またバージョンによって起きる問題が異なるため定型作業とすることもできません。アップグレード時にどのような問題が起こるかは、実際にアップグレードを行うか、アップグレードを行った先例の情報を探す必要があります。

今回の取り組みではそのような情報を共有する場を作りました。

どのような場なのか

今回は ruby-jp の Scrapbox を使って情報を共有する場を作りました。

例えば Rails 7.1 へのアップグレード情報は、次のページにまとまっています。

scrapbox.io

ここでは Rails 7.1 での新機能や変更点を解説する記事と、実際にアップグレードを行った事例を紹介する記事の2つに分けてリンクをまとめています。

このような情報がまとまることで、先に解説した問題が解決しやすくなることが期待できます。つまりアップグレードの先例を簡単に読むことができ、そのアップグレードでどのような問題が起きうるかを把握しやすくなります。

なお Rails 7.1 以外にも、Rails 7.0, Ruby 3.3, Ruby 3.2 のアップグレード情報もまとめました。 これらのページはすべて https://scrapbox.io/ruby-jp/%E3%82%A2%E3%83%83%E3%83%97%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%89 から辿れるようになっています。

またこの取り組みの公開後に、Rails ガイドの日本語版を運営している安川さんが Rails ガイドと絡めた改善を早速実施してくれました。

twitter.com

今後の展望

まだこの取り組みは始まったばかりです。そのためやりたいことがまだたくさんあります。

1つは情報を整理して、より情報をわかりやすくすることです。 現状ではこれらのページはただ雑然とリンクが並べられているだけになっています。これをよりわかりやすくするために、同じような情報をひとまとまりにしたり、あるいは記事の簡単な要約を追記することを考えています。

またこれらのページにさらに情報を追加していくことも重要でしょう。 現状存在するコンテンツは、私がざっと調べて見つけた記事をリンクしたものがメインです。まだまだここにない記事は多くあるでしょうし、記事になっていない情報もあると思います。そのような情報をリンクしたり、これらのページに直接書くことで情報を充実させていきたいと思っています。

そしてこれらのページの充実は、私一人だけではなく、コミュニティとして進めていきたい取り組みだと思っています。 私一人の力では限界があります。より多くの人に手を入れてもらうことで、より良い情報を継続的に提供していきたいと思っています。ruby-jp Slack の #scrapbox チャンネルからこの Scrapbox ページを編集できる権限が得られるので、協力いただける方はぜひ一緒にこのページを育てていっていただけると嬉しいです。

この場を作るまで

最後に今回この場所を作るにあたって検討していたことなどを簡単にお伝えします。

このアイディアは、社内の Rails アップグレードをよりスムーズにするための施策を考えている中で生まれました。そのため当初は社内に閉じた仕組みを作ろうと考えていました。2

ですがこのアイディアについて検討する中で、これが社内に閉じる必要はなく、オープンな取り組みとしてより多くの人に価値を提供できたほうが良いだろうと判断しました。 オープンな取り組みとして実施することを決めてからは、ruby-jp の Slack チャンネルでどのような形がよいか相談しました。その結果良い形でこの取り組みの公開までたどり着けたと思います。議論に参加してくれた方や、Slack のリアクションで賛同を示してくださった方にあらためて感謝します。

ruby-jp Slack で私がした質問のスクリーンショット

今回の検討内容について簡単に Design Doc も書いたので、よろしければそちらもご覧ください。

hackmd.io

まとめ

Ruby や Rails のアップグレード情報を共有する場の紹介でした。 これをアップグレード時に役立てていただければ幸いです。そしてこの場を一緒に盛り上げていただければ嬉しいです。


  1. 袋を開けた途端笑っちゃうぐらいラムレーズンの香りがしてめっちゃいいです。
  2. この時は GitHub Discussions を使って同様の仕組みを作れないか考えていました。