Rails・Rubyバージョンアップ支援

古いRailsアプリを、作り直さず、機能開発も止めずに、最新のRailsとRubyへ段階的に移行します。まずは固定価格の調査・計画から。

アップグレードが止まる理由

古いバージョンのまま動いているRailsアプリの多くは、誰も気にしていなかったわけではありません。アップグレードがスプリントに収まらなかっただけです。そのまま月日が経つと差は広がります。gemが古いバージョンのサポートをやめ、セキュリティ修正が届かなくなり、Rails 5のコードを触りたい開発者も減っていきます。

解決策は、たいてい作り直しではありません。普段の業務の中でマージできるくらい小さな段階に分けた計画です。

進め方

  1. 調査・計画。 移行先のRailsとRubyで御社のテストを実行し、非推奨警告とGemfileを読み、障害になる箇所をすべて洗い出します。対応するバージョンがないgem、Rails内部へのモンキーパッチ、挙動が変わった機能に依存するコードなどです。作業順序と見積もりを含む計画書をお渡しします。
  2. デュアルブート。 現行バージョンと次のバージョンの両方で起動できるようにします。御社が通常どおりリリースを続けながら、作業をメインブランチに取り込めます。
  3. 小さなプルリクエスト。 一つの非推奨対応、一つのgemごとにプルリクエストを分け、御社のチームにレビューしていただきます。確認されていない変更はマージしません。
  4. 切り替え。 新バージョンでテストがすべて通ったら、デフォルトを切り替えて旧バージョン用のコードを削除します。そして次の段階へ進みます。

私たちに頼む理由

私たちは多くのチームよりも先に、新しいRubyを本番環境で使っています。自社サービスのJapan Voyageは、Rubyの開発ブランチを毎晩ビルドした Ruby master で本番稼働しています。masterで何かが変われば、その週のうちに気づきます。自分たちのデプロイが先に壊れることもあります。

Ruby本体の開発にも関わっています。Sampo Kuokkanenはruby/ruby(Stringの高速化、テストの修正)、ruby/spec、JRubyに変更をマージしており、日本や台湾のRubyカンファレンスで登壇しています。Rubyの変更履歴を読むのは普段の仕事の一部で、御社の案件のために一から調べることではありません。

実際のアップグレードの記録もブログに書いています:Rails 8.1アプリをRuby 3.4から4.0にアップグレードした話

お渡しするもの

  • 本契約の前に、障害箇所をすべて記した計画書
  • 一つの巨大なブランチではなく、レビューしやすい小さなプルリクエスト
  • どの段階でもデプロイできるアプリケーション
  • 何をなぜ変えたかの記録。次のアップグレードは御社のチームだけで進められます

料金

料金は米ドル建て・税別です。「〜」の付いた料金は最低価格で、着手前に固定価格を決めます。日本円でのご請求も可能です。

調査・アップグレード計画

$1,500

固定価格・約1週間

コードを読み、移行先のバージョンでテストを実行し、障害になる箇所をすべて洗い出します。作業順序と見積もりを含む計画書は、他社にアップグレードを依頼する場合でもそのままお使いいただけます。

アップグレード実施

$3,000〜

計画後に固定価格でお見積もり

小〜中規模のアプリ向け。計画に沿って小さなプルリクエスト単位で進め、レビューとマージは御社のチームで。どの段階でもデプロイできる状態を保ちます。

継続アップデート

$300〜

月額

RailsとRubyの新バージョンを数週間以内に適用し、gemを最新に保ち、非推奨警告がエラーになる前に対応します。

よくある質問

Rails 4や5のままです。古すぎますか?
いいえ。5.2、6.0、6.1、7.0とマイナーバージョンを一つずつ上げていきます。段階ごとに非推奨の内容が違い、小さい単位のほうがレビューしやすいからです。古いということは、段階が多いというだけで、作り直しが必要という意味ではありません。
アップグレード中は機能開発を止める必要がありますか?
ありません。メインブランチに対して小さなプルリクエストを出し、デュアルブートで旧バージョンと新バージョンの両方で動く状態を保ちながら進めます。
テストがほとんどありません。それでもできますか?
できます。ただし計画書でテストが足りない箇所を明記し、多くの場合はアップグレードで触れるコードの周りにテストを書くところから始めます。テストなしで進めると、リスクが本番環境に移るだけです。
RailsだけでなくRubyのバージョンアップもできますか?
できます。実はRubyのほうが難しいことも多いです。私たちは自社サービスの本番環境をRuby masterで動かしているため、Rubyの破壊的変更をリリースの数か月前から把握しています。

ご相談内容をお聞かせください

アプリのことと、何をお望みかを数行でお送りください。2営業日以内に、日本語または英語で、次のステップと概算をご返信します。