「古いMATLABプログラムが、最新の環境で動かない」でお困りの方へ

こんなお悩みは、ありませんか?

  • 長年使ってきたMATLABプログラムが、最新バージョンではエラーで止まる
  • 起動はするのに、一部の機能だけが実行時にエラーになる
  • 作った担当者や先輩が既におらず、自力での解決が難しい
  • 開発した本人や配布元が更新を止めてしまい、使い続けられるか不安
  • バージョンアップはしたいが、計算結果が変わってしまうのは絶対に困る

ひとつでも当てはまる方は、弊社の「古いMATLABプログラムの新バージョン移行サービス」が、お役に立てるかもしれません。まずは、移行できるかどうかの見立てからお出しします。ご予算に合わせて、範囲を区切ったご提案にも対応します。

古いMATLABプログラムの新バージョン移行サービス — 移行前と同じ計算結果を、新しいMATLABで。実績例: 数百ファイル規模の解析ソフトを移行。正解データから始める、確実な移行

なぜ、「動くようにする」だけでは済まないのか

エラーで止まる箇所を直すだけなら、話は単純です。厄介なのは、関数の仕様変更が、エラーを出さずに、結果だけを静かに変えることです。

例えば、ヒストグラムを描く関数は、旧仕様(ビン中心指定)と新仕様(ビンエッジ指定)で集計のされ方が異なります。エラーにはならないのに、出てくる数字が変わる。こうした差は、動作確認だけでは見つかりません。移行後のプログラムが元と同じ結果を出しているかを確かめる仕組みがなければ、その結果を研究や業務に使ってよいのか、判断できません。

だから弊社は、書き換えの前に、正解データの確保から始めます。

移行の標準工程

弊社の移行は、次の4工程を標準として進めます。

  • ① 既存コードの調査: 原コードの読解と依存関係の把握を行う。旧バージョンでプログラムを実行し、「正解データ」(移行前の出力一式)を先に確保する。
  • ② 移行の実施: 非互換箇所をモジュール単位で解消する。仕様が変わった関数は差を吸収するラッパ関数で置き換えるなど、元のロジックを変えずに、新バージョンで同じ動きを再現する。
  • ③ 数値一致検証: 一致の基準(ビット一致/倍精度相対誤差など)をお客様と数値で合意した上で、移行前の正解データと移行版の出力を、モジュール単位で都度突合する(最後にまとめて検証しない)。
  • ④ テスト検証・納品: 実データでの通し実行と境界条件の確認を行う。改修箇所にはマーカー付きコメントを残し、比較用のオリジナル一式と併存させて納品する。

適用例: 地震解析・描画ソフトウェアの新バージョンMATLAB移行

上記の標準工程を実案件に適用した例。

お客様: 大学の地震研究部門様

ご依頼内容: 研究に使用している解析・描画ソフトウェア(海外の研究者が開発したMATLAB製、数百ファイル規模)が、旧バージョンのMATLABでは動くものの、最近のバージョンでは一部機能の実行時にエラーで停止する。旧バージョンで得られた結果と同じ結果を、新しいMATLABで得られるようにしたい。

課題:

  • 起動まではできるが、複数の機能がエラーで停止する
  • 原開発者によるアップデートは行われておらず、自力での解決が難しい
  • 出力が旧バージョンの結果と一致することが条件

ソリューション:

  • 非互換箇所を個別に解消: 旧 hist(ビン中心指定)と新 histogram(ビンエッジ指定)の仕様差を吸収するラッパ関数を新規作成。UI部品の不具合を回避するラッパ、廃止されたプロパティ指定の除去、組込関数と衝突する関数名のリネーム、再帰上限の調整等を実施
  • 移行作業の過程で原コードのバグ(探索ループの上限値の相違、座標変数の書き誤り)を発見し、旧版の挙動と突き合わせて是正
  • 改修箇所すべてにマーカー付きコメントを記載し、比較用のオリジナル一式と併存させて納品

結果:

数値一致検証の枠組みの模式図。移行前の出力を正解データとして先に確保し、移行版の出力とモジュール単位で突合する

  • 停止していた機能群が新バージョンのMATLABで動作し、旧バージョンと同一の結果を再現
  • 移行過程で見つかった原コード側の潜在バグも、旧版の挙動と突き合わせた上で是正
  • 納品後も、お客様が課題を資料にまとめて送り、弊社が改修版を返す形で機能改修を継続。複数年にわたる保守・改修に発展

適用実績

  • 大学の地震研究部門様 — 地震解析・描画ソフトウェアの新バージョンMATLAB移行(上記)。移行完了後も複数年にわたる保守・改修に発展
  • 計測システム企業様 — 担当者の退社で保守できなくなったMATLAB製の測定データ変換ソフトを、仕様書のないコードだけの状態から引き継ぎ、不具合修正・機能追加・配布物の更新を継続

古いMATLABプログラムの移行のご相談は、このページ下部の「今すぐお問い合わせ」からご連絡ください。

安心してご依頼いただくために

  • 結果が変わらないことを、数値で確認します: 一致の基準(ビット一致/許容誤差)を事前にお客様と合意し、移行前後の出力の一致を数値で示します。
  • 納得してからのご発注です: 受注前にコードを拝見し、移行方針と作業範囲の見立てをご提示します。内容にご納得いただけない場合は、そこでお断りいただいて構いません。
  • 難しい場合は、率直に申し上げます: 事前解析の結果、移行が難しい、または割に合わないと判断した場合は、その理由とともに正直にお伝えします。
  • 予算に合わせて分割できます: 全機能を一度に移行する必要はありません。モジュール単位で範囲を区切った、複数回に分けたご発注にも対応します。
  • 後から検証できる形で納品します: 改修箇所にマーカー付きコメントを残し、比較用のオリジナル一式を同梱します。お客様ご自身で、差分と一致を確認できます。

よくあるご質問

かなり古いバージョンのMATLABですが、対応できますか?

はい、ご相談いただけます。廃止・仕様変更された関数への対応には、仕様差を吸収するラッパ関数の作成など、体系的な定石があります。まずは、お使いのMATLABのバージョンとプログラムの規模を、お知らせください。

移行で、計算結果が変わってしまいませんか?

この点は、弊社が最も重視している部分です。着手前に旧バージョンでの出力を「正解データ」として確保し、一致の基準をお客様と数値で合意します。移行版の出力をモジュール単位で突合し、結果が変わらないことを数値で示します。

プログラムを作った担当者が、もういないのですが?

問題ありません。コードの読解と依存関係の調査から着手します。原開発者によるアップデートが止まっていた海外製の解析ソフトウェアを、コードの調査から進めて移行した実績があります。

移行のついでに、機能追加や高速化もお願いできますか?

はい、承ります。ただし、まず移行を完了させて結果の一致を確認してから、機能追加や高速化を次の段階として実施する進め方を取ります。変更を混ぜると、結果が変わった場合に、原因の切り分けができなくなるためです。

コードを社外に見せることに、不安があるのですが?

ご要望に応じて、秘密保持契約を締結させて頂きます。アルゴリズムやコードはデリケートな内容を含むことが多いので、秘密保持契約を締結してからコードをお預かりすることは、よくあります。

ご相談から開発までの流れ

  • お問い合わせ: お問い合わせフォームから、お知らせください。もし分かれば、お使いのMATLABのバージョン(移行元・移行先)と、プログラムの規模をお知らせください。
  • ヒアリング: ZoomやTeams等で話を伺います。
  • 事前解析: コードを拝見し、移行方針と作業範囲の見立てを提示します。
  • お見積・ご発注: 見立ての内容にご納得の場合、ご発注ください。予算申請用の概算見積にも対応します。
  • 移行の実施: モジュール単位で、書き換えと数値一致検証を繰り返しながら進めます。
  • 検証・納品: 移行前後で結果が変わらないことを数値で確認し、納品します。

お問い合わせ

古いMATLABプログラムの移行でお悩みでしたら、お気軽にお問い合わせ下さい。
下記の、「今すぐお問い合わせ」をクリックして、フォームにご記入下さい。
お問い合わせには、当日〜翌日にご返信しています。

今すぐお問い合わせ