「他の言語で書かれたプログラムだけど、MATLABに移植したい」でお困りの方へ

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

  • FortranやVBAで書かれたシミュレーションを使い続けているが、その言語に明るい人が減ってきた
  • 研究者が書いたC++や古い言語のコードを、自分たちで扱いやすいMATLABに移したい
  • 元のコードはあるが、仕様書がなく、書いた本人にも聞けない
  • 移した後の結果が、元のプログラムと本当に一致するのか不安
  • 規模が大きく、全部を一度に移すのは難しい

ひとつでも当てはまる方は、弊社の「Fortran・VBA・C++からMATLABへの移植サービス」が、お役に立てるかもしれません。まずは、移植できるかどうかの見立てからお出しします。ご予算に合わせて、モジュール単位で範囲を区切ったご提案にも対応します。

Fortran・VBA・C++からMATLABへの移植サービス — 元のプログラムと同じ計算結果を、MATLABで。実績例: 反復計算の全ステップで数値一致。正解データから始める、確実な移植

なぜ、変換ツールだけでは終わらないのか

コードの変換ツールによる変換は、移植の出発点にすぎません。厄介なのは、言語仕様の差が、エラーではなく「違う数字」として静かに現れることです。

例えば、整数どうしの割り算の扱い、配列の起点(Fortranの0起点や負の添字)、共有変数やジャンプ処理の挙動は、言語ごとに異なります。変換後のコードが一見動いていても、元のプログラムと同じ結果を出しているかを確かめる仕組みがなければ、その結果を研究や業務に使ってよいのか、判断できません。

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

移植の標準工程

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

  • ① 既存コードの調査: 原コードの読解と依存関係の把握を行う。可能な場合は原コード(Fortran・VBA・C++等)を弊社環境でビルド・実行し、「正解データ」(移植前の出力一式)を先に確保する。
  • ② 移植の実施: モジュール単位で段階的に移植する。変換ツールによる変換と手動対応を組み合わせ、配列の起点や整数演算など言語仕様の差を、元のロジックを変えずに吸収する。
  • ③ 数値一致検証: 一致の基準(ビット一致/倍精度相対誤差など)をお客様と数値で合意した上で、原コードの出力と移植版の出力を、モジュール単位で都度突合する(最後にまとめて検証しない)。
  • ④ テスト検証・納品: 実データでの通し実行と境界条件の確認を行う。期待出力と実行結果を対比した検証資料と、比較用のオリジナル一式を添えて納品する。

適用例: 熱シミュレーションコード群のMATLAB・Simulink移植

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

お客様: 公的研究機関様

ご依頼内容: FortranやVBAで作られた建築・エネルギー分野のシミュレーションコード群を、MATLABおよびSimulinkへ移植したい。熱負荷、熱伝導、設備モデルなど複数のプログラムを、継続して移し替えていく計画。

課題:

  • 原言語特有の配列(0起点・負の添字)、分岐、データ共有の仕様を再現する
  • 移植後の計算結果を、原コードと全工程で一致させる
  • 自動変換後のコードを、保守しやすく高速な形へ整理する

ソリューション:

  • 原Fortranの実行環境を再構築し、比較基準となる「正解データ」を先に確保
  • 変換ツールで一次移植した後、共有変数・ジャンプ処理・ポインタ・設定読込など、自動変換しにくい構文を個別に対応
  • Fortranの0起点・負の添字を一時的に再現する仕組みで元のロジックを保ち、動作確認後にMATLAB本来の1起点配列へ整理
  • 反復計算の各ステップで、原コードとの数値一致を確認

結果:

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

  • 複数の熱負荷・熱伝導・空調シミュレーションを、MATLABまたはSimulinkへ移植
  • 原コードとの数値一致を、反復計算の全ステップで確認
  • 数分かかっていた計算が、移植後の整理により約10秒に短縮
  • 最初の納品後も移植の依頼が続き、複数年の継続案件に発展

適用実績

  • 公的研究機関様 — 建築・エネルギー分野のFortran/VBA製シミュレーションプログラム群をMATLAB/Simulinkへ移植(上記)
  • 建設関連メーカー様 — 研究者が開発したC++の計測データ解析プログラムをMATLABへ移植。乱数系列・FFTの正規化仕様まで一致させ、中間出力の突合により浮動小数点レベルで数値一致を確認

別言語からMATLABへの移植のご相談は、このページ下部の「今すぐお問い合わせ」からご連絡ください。

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

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

よくあるご質問

どの言語からの移植に対応していますか?

Fortran・VBA・C++のほか、IDLや古いバージョンのMATLABからの移植実績があります。その他の言語も、まずはご相談ください。また、Pythonに関しては、多くの実績があり、別のページで説明しているので、ご興味のある方は、そちらもご覧ください。

元のプログラムを、手元で動かせないのですが?

原コードの実行環境を弊社側で再構築し、正解データを生成できる場合があります。それも難しい場合は、過去に得られた入力と出力のペアをご提供いただき、それを正解データとして進める方法をご相談します。

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

この点は、弊社が最も重視している部分です。着手前に原コードの出力を「正解データ」として確保し、一致の基準をお客様と数値で合意します。移植版の出力をモジュール単位で突合し、結果が変わらないことを数値で示します。過去には、乱数系列やFFTの正規化仕様まで一致させ、浮動小数点レベルで一致を確認した実績があります。

一部のプログラムだけでも、依頼できますか?

はい、承ります。モジュール単位で範囲を区切って移植できますので、優先度の高い部分から始めて、複数回に分けて進めることができます。実際に、複数年にわたり段階的に移植を進めた実績があります。

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

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

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

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

お問い合わせ

別言語からMATLABへの移植でお悩みでしたら、お気軽にお問い合わせ下さい。
下記の、「今すぐお問い合わせ」をクリックして、フォームにご記入下さい。
お問い合わせには、当日〜翌日にご返信しています。

今すぐお問い合わせ