Rails・Rubyバージョンアップ支援
古いRailsアプリを、作り直さず、機能開発も止めずに、最新のRailsとRubyへ段階的に移行します。まずは固定価格の調査・計画から。
アップグレードが止まる理由
古いバージョンのまま動いているRailsアプリの多くは、誰も気にしていなかったわけではありません。アップグレードがスプリントに収まらなかっただけです。そのまま月日が経つと差は広がります。gemが古いバージョンのサポートをやめ、セキュリティ修正が届かなくなり、Rails 5のコードを触りたい開発者も減っていきます。
解決策は、たいてい作り直しではありません。普段の業務の中でマージできるくらい小さな段階に分けた計画です。
進め方
- 調査・計画。 移行先のRailsとRubyで御社のテストを実行し、非推奨警告とGemfileを読み、障害になる箇所をすべて洗い出します。対応するバージョンがないgem、Rails内部へのモンキーパッチ、挙動が変わった機能に依存するコードなどです。作業順序と見積もりを含む計画書をお渡しします。
- デュアルブート。 現行バージョンと次のバージョンの両方で起動できるようにします。御社が通常どおりリリースを続けながら、作業をメインブランチに取り込めます。
- 小さなプルリクエスト。 一つの非推奨対応、一つのgemごとにプルリクエストを分け、御社のチームにレビューしていただきます。確認されていない変更はマージしません。
- 切り替え。 新バージョンでテストがすべて通ったら、デフォルトを切り替えて旧バージョン用のコードを削除します。そして次の段階へ進みます。
私たちに頼む理由
私たちは多くのチームよりも先に、新しい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営業日以内に、日本語または英語で、次のステップと概算をご返信します。
その他のサービス
Ruby on Rails受託開発
範囲のはっきりしたRailsの仕事を固定価格で。新しいアプリの最初のバージョン、機能一つ、不具合修正、月額の保守。
機能追加・不具合修正:$1,000〜
コード診断・セカンドオピニオン
御社のRailsアプリのコード、または受け取った提案書や見積もりを外部の目で診断し、次の判断に使える分かりやすい報告書にまとめます。
セカンドオピニオン:$500
JRuby・Java連携
RailsをJVMで動かす、RubyからJavaライブラリを呼ぶ、JavaシステムにRubyを組み込む。JRuby本体の開発にも参加しているので、問題を根本から直せます。
JRuby移行調査:$2,000〜
Spinel:Rubyをネイティブバイナリに
SpinelはMatzの新しいAOTコンパイラで、Rubyのサブセットを単体のネイティブバイナリに変換します。私たちはSpinelの開発に参加しており、御社のコードに合うかを判断できます。
実現性調査:$2,000