こんにちは、テクノロジー&エンジニアリングセンターの山本です。

本技術ブログでは、現在はEOLとなっているStruts1・SAStrutsを使用したアプリケーションからNablarchへのマイグレートを省力化する『Nablarchマイグレーションキット』を紹介します。
現時点ではTIS社内でのみ使用していますが、2020年9月にStruts1に対応したものをOSS公開する予定です。今回は先行して本キットの概要を解説します。

背景

Struts1は2013年4月5日に、SAStrutsは2016年9月26日にEOLを迎えています。これらのフレームワークは脆弱性への正式対応が提供されなくなっているため、使い続ける場合はセキュリティ上の懸念が生じます。

このようなフレームワークを使用したアプリケーションを安全なフレームワークに移行するには様々な課題がありますが、Nablarchマイグレーションキットは以下のような解決策を提示します。

対象とするフレームワーク

Nablarchマイグレーションキットが変換対象としているフレームワークはStruts1と SAStrutsです。

Nablarchマイグレーションキットの構成

Nablarchマイグレーションキットはリライトツールと互換ライブラリから構成されます。

対象とするリソース

Nablarchマイグレーションキットが対象とするリソースはJava, JSPなどのソースコードだけでなく、メッセージなどのリソースファイル、Struts1のstruts-config.xml, validation.xmlやSAStrutsの外部SQLファイルなども含まれます。
これらの定義情報をNablarch上で利用できるように変換します。

リライトツールの主な機能

リライトツールはStruts1やSAStrutsからNablarchへのマイグレーションにおける変換作業を自動化します。

Struts1向けの主な機能は以下の通りです。

SAStruts向けの機能としては、Seasar2のDIコンテナ、各種アノテーション、外部SQLの変換と流れるSQL(一部)や各種APIにも対応する予定です。

リライトツールの仕組み

リライトツールが、JavaやJSPを処理するときには、独自に開発したパーサーにより構文解析をしたうえで編集する方式を採用しました。

[リライトの流れ]

  1. 独自に開発したパーサー(構文解析処理)がJavaやJSPの構文を解析しオブジェクト化します。
  2. コンバーターはマイグレーション先となるフレームワークで動作するコードとなるように、オブジェクトを編集します。
  3. 編集済みのオブジェクトからジェネレータがソースコードを生成することでリライトされたソースコードを取得することができます。

コンバーターはパーサーやジェネレータとは別のモジュールとして実装しているので、コンバーター部分のみを作り変えることで、Spring MVCなど他のフレームワーク向けのリライトツールを開発しやすい構造としました。

リライトツールはOSSとして公開する際に、自由に改変、追加開発できるようなライセンスを選択する予定です。

ロードマップ

直近1年間のロードマップは以下の通りです。

2020年9月 Struts1からのマイグレーションに対応したものをOSSとして公開
2021年3月 SAStrutsからのマイグレーションに対応したものをOSSとして公開

おわりに

今回はNablarchマイグレーションキットの概要についてお伝えしました。
このツールはマイグレーションの大半を自動化しますが、ツールだけで完結させるのは難しく、一部手作業が必要になります。この手作業を効率よく進めるためのガイド類も作成し、Nablarchマイグレーションキットと合わせて公開する予定です。
また、実装工程だけでなく、テスト工程なども省力化する方法についてもR&Dを行ってゆく予定です。


本コンテンツはクリエイティブコモンズ(Creative Commons) 4.0 の「表示—継承」に準拠しています。