Rubyバージョンアップ開発

臨床試験文書管理支援システム

バージョンアップ品質

自動テストのないシステムについては、お客様にご協力いただきながら、まずはバージョンアップ前の状態で全画面全機能のテストを実施して、バージョンアップ後に同様のテストを実施して同じ結果になることを確認します。
自動テストの有無、保守請負の有無によって作業工数に差が発生します。

OSSのバージョンアップ

Rubyで作られているシステムであれば、周りの仕組みもOSSが利用されているはずなので、Rubyだけでなくシステム全体がバージョンアップの対象となります。

開発経緯

こちらは2014年に構築されたシステムで、当社がその保守メンテナンスを請け負ってきました。
Rubyの公式サポートは最新リリースから3世代前までで、それより古くなるとセキュリティリスクが高まります。それまでにバージョンアップの必要があることは分かっていても、システムが安定稼働しているとその優先順位は低くなりがちです。
そこでセキュリティ対策のためにRubyだけでなく、OSSで組まれたシステム全体をバージョンアップしましょうと2018年頃に取り組みました。

バージョン情報

バージョン
Ruby 1.9
Rails 3.2
Apache 2.2
Passenger 3.0
PostgreSQL 9.2
バージョン
Ruby 2.5
Rails 5.2
Apache 2.4
Passenger 5.3
PostgreSQL 9.6

人事監査支援システム

バージョンアップ品質

自動テストを漏れなく作成しメンテナンスしてきたシステムだったため、バージョンアップ前に自動テストを実施し、全てのテストに合格することを確認しながら、1世代ずつ丁寧にバージョンアップを実施。
バージョンアップ後に自動テストに不合格になった部分については、自動テストに合格するようRubyのリリースノートを確認しながら修正し、品質を保ちながらバージョンアップを行います。
理想的な手順で、作業工数も最小限に抑えることができました。

ライブラリのバージョンアップ

Rubyのバージョンアップに伴って一部の古いライブラリが非対応になってしまったため、それらのバージョンアップも同時に実施。
自動テストによりそれらライブラリの動作不良も容易に検出できるので、修正する箇所の特定にも時間があまりかかりませんでした。

開発者メッセージ

システムを長くメンテナンスしていると、追加機能もあれば廃止された機能もあります。廃止機能については画面から動作確認することができなくなってしまい、バージョンアップの際にそこでエラーになることもありますが、自動テストによりそれらの検出も容易にできました。
また、自動テストを利用することにより作業工数が少なく済むため、バージョンアップの優先順位も上げることができ、セキュリティリスクも低く抑えることが出来ています。
時には自動テストを作成する際に通常の画面開発の倍以上の作業工数がかかることもありますが、長期的な目で見ると、網羅的な自動テストを作成すること、それらのメンテナンスを欠かさないことの重要性を強く感じたプロジェクトでした。

バージョン情報

バージョン
Ruby 2.6
Rails 5.2
バージョン
Ruby 2.7
Rails 5.2
バージョン
Ruby 3.0
Rails 6.1

ECサイト

PC向け画面開発

JavaScriptを用いた非同期での画面更新が多く用いられており、バージョンアップ後に利用できなくなっている機能が随所に見られたため、大幅な改修を行いました。
今はサポート終了しましたが、Internet Explorer にて他の Web ブラウザと同じデザインを表示させるために多くの作業工数を要しました。

モバイル端末向け画面開発

利用していたライブラリが古くバージョンアップ後には利用できなくなっていたため、後継のライブラリを探して適用したり、場合によっては代替機能を作成したりと、多くの作業工数が必要でした。

サーバー側の内部処理

Rubyを10年分10世代、一度にバージョンアップさせると、ほとんど全ての処理が動かなくなってしまいます。
動かなくなってしまった部分については、バージョンアップしたことで動かなくなったのか、新しい機能を追加したことで動かなくなったのかを見極めながら全ての処理を丁寧に修正しました。

開発者メッセージ

10年程前に作られたシステムで、お客様の予算の都合もありバージョンアップの優先順位が低いまま稼働していた状態でした。予算を確保するために、全面リニューアルという名目で画面デザインもPC向け、モバイル端末向け、それぞれに新デザインを適用しました。
当社だけでなく複数社で開発チームを組み、Rubyバージョンアップとサイトリニューアルに取り組みました。AmazonS3でのストレージ管理やシングルサインオン機能の新規組み込みなど、ただバージョンアップを行うだけではなく、同一機能を持った新規ECサイトを構築するようなプロジェクトでした。

バージョン情報

バージョン
Ruby 1.8
Rails 2.3
バージョン
Ruby 3.0
Rails 6.1
お電話によるお問い合わせ
(受付時間:月曜日〜金曜日 10:00〜18:00)