この記事について問い合わせる

アセンブラの壁を越えるには?ストレート変換だけではない現実解

はじめに:アセンブラが絡んだレガシーシステムという難題

先日「アセンブラが含まれるレガシーシステムをどうにかしたい」——
そんな相談が持ち込まれました。

最近はありがたいことに「レガシーシステムの棚卸しや移行なら、システムズさん得意ですよね?」と期待を込めて声をかけていただくことが増えました。一方で、今回のように、正面から「できます」とは言えない領域も、確実に存在します。その典型例が「大量のアセンブラが絡んだシステム」です。

本記事では、

  • なぜアセンブラが“厄介”なのか
  • なぜ「ストレートコンバージョン」は現実的ではないのか
  • それでも、我々が貢献できる“アプローチの仕方”とは何か

をまとめます。

OS制御から高速化まで――アセンブラが担ってきた役割

メインフレームの世界では、COBOLなどからアセンブラを呼び出す構造は珍しくありません。
COBOL側がビジネスロジックを担い、アセンブラ側では、

  • OS制御に近い処理
  • 文字コード変換
  • メモリを直接いじる高速処理
  • 夜間バッチを間に合わせるための極限チューニング

といった「COBOLだけでは実現しづらい低レイヤの処理」を担当してきました。

昔は、こうした機能をメーカー側がアセンブラで提供していた時代もありますし、現場のプログラマーが自作したものも多く存在します。いずれにしても、「速くする方法はアセンブラしかなかった時代の遺産」が、今もレガシーシステムのど真ん中で動き続けています。

なぜアセンブラはそのまま移行できないのか

「アセンブラをCOBOLや別言語に自動変換するツールは作れないのか?」
——実は、過去に産学連携で本気で取り組んだことがあります。

コンパイラの専門家である大学教授と組み、
「アセンブラを変換するツール」を助成金付きのプロジェクトとして開発しようとしたことがあります。
しかし結果は、「現実的なレベルではできなかった」というものです。

理由はいくつかあります。

  • アセンブラの仕様が機種依存(CPUやOSに密着)
  • I/O制御や割り込み制御など、ハード直結の命令が多い
  • 元の仕様書がない/ソースがなくロードモジュールのみというケースもある
  • 独自ミドルウェアやフレームワークがさらに複雑さを増している

つまり、アセンブラという「制御系の言語」と、
その上で動く「業務ロジック」を、
自動で綺麗に切り分けて別言語に変換する——

というのは、技術的にも、コスト的にも、現実的ではないというのがこれまでの結論です。

重要なのは「何をしているか」――アセンブラ機能の再定義

では、どうすればいいのか。

我々がこれまでのマイグレーションでやってきたのは、
「アセンブラそのもの」をどうにかする、ではなく、
「アセンブラで何をしたかったのか」を解き明かすことです。

具体的には、

  • COBOL側のインターフェース仕様を読み解く
  • 「COBOLが何をしたくてアセンブラを呼んでいるのか」を理解する
  • アセンブラを“ブラックボックス”と見なしつつ、機能仕様としてドキュメント化する
  • その機能仕様をもとに、別の手段(別言語やミドルウェア)で作り直す

というアプローチです。

「アセンブラを解析する」のではなく、 「アセンブラが担っている役割を再設計する」と言ったほうが近いかもしれません。

今どきであれば、OS制御や文字コード変換といった多くの処理は、
既存のミドルウェアやライブラリで代替できます。
だからこそ重要なのは、

そもそもオリジナルのアセンブラが「何のために」存在しているのか
を見極め、その役割だけを取り出して、現代的な手段に置き換えることです。

まとめ:解析と再設計のラインを引く――レガシー専門家の仕事

今回のようにアセンブラが全体の多数を占めるレガシーシステムでは、

正面から「ストレートコンバージョンできます」と宣言するのは、
技術的にもビジネス的にも、容易ではありません。

とはいえ、「アプローチの仕方」は確かにあります。

  • どこまでを解析し、どこからは新規設計に切り替えるべきか
  • 「なぜ難しいのか」「どこまでなら現実的か」
  • ストレートコンバージョンだけでなく、仕様の再定義や別解の提示など

こうした「テーマ設定」と「落とし所の見極め」こそ、
レガシーシステムに長年携わってきた我々が提供できる価値だと考えています。

アセンブラが絡む巨大なレガシーシステムは、
今後もしばらく「誰も正面から手を出せない領域」であり続けるかもしれません。

だからこそ、今回のようなケースでは、最初からストレートコンバージョン一択ではなく、
「現実的な進め方はないか」をお客様と一緒に考え、整理していく立ち位置が適切だと考えています。

お問い合わせ

タイトル 必須
お名前 必須
お名前(フリガナ) 必須
メールアドレス 必須
会社名 必須
部署
役職
電話番号 必須
お問い合わせ内容

個人情報保護方針

株式会社システムズは、コンピュータ関連システムの構築、コンサルテーション、ソフトウェアの 開発・設計・販売・保守等を提供するに当たり、個人情報はお客様、お取引先様、株主様および 従業者等からお預かりした重要な資産であるという認識のもと、情報社会の一端を担う企業とし ての社会的責務を全うするため、個人情報に関する法令、国が定める指針、規範に基づき以下 に個人情報保護方針を定め、個人情報の厳正な取り扱いに努めます。

1.目的

個人情報の重要性を全社員・役員に認識させ、個人情報に関する法令、国が定める指針、規範を遵守するとともに、管理規程を制定し着実に実施いたします。またこれらの取り組みを継続的に維持および改善いたします。

2.個人情報の取得

個人情報はお客様ご本人に利用目的を明示し同意を得た上で、サービス提供上必要な範囲内で取得します。

3.個人情報の利用

取得した個人情報は利用目的にのみ使用します。お客様の同意がある場合または法令・指針・規範等に基づく場合を除き、目的外利用および第三者への提供・開示はいたしません。またそのための措置を講じます。

4.Googleアナリティクスの利用

  1. 当サイトは、利用状況を把握し、サイトの改善を図るため、Googleアナリティクスを利用しています。Google社が訪問履歴を収集・記録・分析しますが、個人を識別する情報は含まれておりません。
  2. 当サイトではGoogleアナリティクスデータとお問い合わせフォームから送信された個人情報を紐付けることが可能ですが、これを第三者に無断で提供・販売することはありません。
  3. Googleアナリティクスの利用規約とプライバシーポリシーにつきましては、Google社のサイトでご確認ください。
    Google Analyticsの利用規約
    Googleのプライバシーポリシー

また、Googleアナリティクスによる情報収集を停止することも可能です。「Google アナリティクス オプトアウトアドオン」をインストールし、ブラウザのアドオン設定を変更してください。

5.クッキーについて

当サイトでは、ウェブサイトの利便性向上を目的にクッキーを利用しています。クッキーはサーバーから利用者に送信されブラウザに保存される情報です。クッキーは無効にすることもできますが、その結果サイト機能の一部またはすべてが利用できなくなる可能性があります。

6.個人情報の管理

取得した個人情報について、充分な安全対策を実施し管理することで、不正アクセス・漏えい・滅失・毀損等の防止・是正をいたします。

7.苦情・お問い合わせへの対応

個人情報への扱いに対するお客様からの苦情およびお問い合わせには、誠意ある対応をいたします。

8.個人情報の開示等

取得した個人情報に関して、お客様ご本人からの訂正・削除および開示等のご要望には迅速かつ適切な対応をいたします。

制定日 2005年4月1日
改定日 2011年10月1日
株式会社 システムズ
代表取締役社長 小河原 隆史

当社の個人情報の取扱いにつきまして、ご意見・ご質問等ございましたら、下記までご連絡くださいますようお願い申し上げます。

株式会社 システムズ 個人情報保護に関するお問い合わせ先
個人情報お問い合わせ窓口
株式会社 システムズ 個人情報窓口

TEL:03-3493-0033
FAX:03-3493-2033
メールアドレス:kojin_jyouhou@systems-inc.co.jp

この記事を書いた人

筆者 BIチーム

関連記事