FoxPro復活:18年ぶりの新実装「FoxDev Studio」登場
原題: Microsoft killed FoxPro in 2007. Anyway, here's FoxPro revived
なぜ重要か
世界には今もVisual FoxProで動く業務システムが残存しており、64ビット対応の互換ランタイムは技術的負債を抱える企業に現実的な延命策を提供しうる。
Microsoftが2007年にサポートを終了したVisual FoxPro 9向けの新開発環境「FoxDev Studio」が公開された。既存のプロジェクト・フォーム・テーブルをそのまま読み込んで動作させるスクラッチ実装のランタイムで、64ビット対応・WebAssembly上でのVM実行・ReactによるUI描画を特徴とする。言語仕様1,722要素のうち1,534要素をテストでカバーし、GitHubで公開されている。
Visual FoxProは1990年代に広く使われたデータベース連携型の開発環境で、Microsoftは2007年にバージョン9を最後に開発を終了した。それから18年、「FoxDev Studio」と名乗るプロジェクトがスクラッチから書き直したランタイムを公開した。
最大の特徴は「変換不要」という点だ。既存の.prjプロジェクトファイル・フォーム・クラスライブラリ・メニュー・レポートをそのままフォルダごと開いて動かせる。DBFテーブルやインデックス、メモファイルも読み書きはディスク上のファイルを直接対象とし、ファイル形式は変わらない。長年手つかずのコードベースを抱える企業が、書き直しなしに現行OSで動かし続けることを想定している。
技術面では4層構造を採用している。フォーム描画にReactを使い、コントロール単位の再描画を実現。コードはWebAssembly上の仮想マシンにバイトコードコンパイルして実行し、ブロッキングなしにリクエストを処理する。ファイルシステム・テーブル・COM・64ビットライブラリへのアクセスはホスト層が担い、既存の32ビット.fllアドインは別プロセスとして維持する設計だ。
32ビット制限の撤廃も重要な改善点として挙げられている。従来のVisual FoxProはファイルオフセットが符号付き32ビット整数であったため、テーブルもメモファイルも2GBが上限だった。FoxDev Studioはすべてのファイルオフセットを64ビットとし、テーブルをメモリに丸ごと読み込まない設計にしたことでこの制限を取り除いた。
言語互換性については、Visual FoxPro 9の言語仕様1,722要素を把握しており、1,534要素についてはオリジナル製品の出力と比較するテストを通過していると説明している。未対応の要素は3つのみと主張しており、残りは意図的に無視するか、対応不可として明示的にエラーを返す。エディタのLintもランタイム自身のコンパイラを通すため、表示される警告は実際に実行時に失敗する箇所と一致する。
プロジェクトはGitHubで公開中。FoxScriptという名称でHTTPルートへのlambda対応も示されており、サーバーサイド用途への展開も視野に入れているようだ。