
2026/09/23 6:00
マイクロソフトが2007年にFoxProを終了しましたが、さて、復活したFoxProをご覧ください。
RSS: https://news.ycombinator.com/rss
要約▶
日本語翻訳:
まとめ:
FoxDev Studio は、コードの再書き換えやデータ変換を必要とせず、現代の 64 ビットシステム上で Visual FoxPro 9 アプリケーションをネイティブに実行することを可能にし、レガシーコンピューティングを革新します。この画期的な成果は、元の FoxPro が署名された整数オフセットにより約 2 GB に制限されていたという重大な限界を直接的に解決しています。一方、FoxDev は現代の Rust ベースのランタイムと 64 ビットオフセットを採用し、数百ギガバイトを含む大規模データベースを管理します(130 バイトレコードでは最大 558 GB、1 KB レコードでは最大 4.4 TB の容量を実証)。特筆すべきは、古いアドインライブラリ(.fll)および自動化オブジェクトを新しい 64 ビット環境とシームレスに連携させるため、既存のビジネスロジックを保持しつつ翻訳者として機能する専用 32 ビットブリッジプロセスを採用している点です。このアーキテクチャの根底には、Rust と WebAssembly テクノロジーで構築された高性能な仮想マシンがあり、効率的なノンブロッキングファイバーを用いてバイトコードを実行します。ユーザーインターフェースでは React を活用し、ライブオブジェクトツリーからフォームを直接描画し、全体のフォームを再描画するのではなく変更されたコントロールのみを更新することでパフォーマンスを最適化します。「Western Trading Co.」などのプロジェクトで示されるように(複雑な財務記録をサポート)、このソリューションはデータの整合性を確保すると同時に、レガシーシステムで失敗していた 2 GB を超えるテーブルのサポートを大幅に向上させる速度向上を実現します。今後のアップデートでは、LAMBDA ブロックや HTTP API ルートなど、高度な機能を FoxScript に直接統合することが約束されており、GitHub("FoxDevCommunity/FoxDevStudio")を通じてオープンソースモデルで提供され、Windows、Linux(AppImage、.deb)、およびナイチリービルドを対応しています。
本文
FoxDev Studio: 概要と構築ガイド
FoxDev Studio は、既存の Visual FoxPro (VFP) アプリケーションを改変せずに動作させるための環境です。プロジェクト、フォーム、テーブルなどのファイル構造を変更する必要がなく、元のデザインツールや外部連携もそのまま利用可能です。
🚀 構築・入手方法
1. FoxScript とランタイム
FoxDev Studio は新しい言語機能「FoxScript」をサポートしており、これにより Web サーバー機能などが拡張されます。
- GitHub リポジトリ:
FoxDevCommunity/FoxDevStudio - リリース情報:
- Nightly ビルド:
ブランチからのビルド製品(署名なし)。初回起動時にセキュリティ確認が必要です。main - Windows: インストーラー (
) とランタイム (.exe
) を提供(x64 対応)。.zip - Linux (Ubuntu など): AppImage および
パッケージを提供(x64 対応)。.deb
- Nightly ビルド:
2. サポート状況
- IDE とドキュメントサイト: GitHub で公開されています。
- ソースコード: オープンソースで構築可能です。
📂 カスタマー事例と利点
既存の VFP アプリケーション(ウェスタン・トレーディング社など)をそのまま動作させる具体的なメリットです。
- 即座の利用開始
- プロジェクト、フォーム、クラスライブラリ、メニュー、レポートは既存ファイルから直接読み込みます。
- 移行処理不要かつデータ保持が保証されます。
- 保存・再開機能
- 作業を中断した場所から再開可能です(例:何年も開けていないフォルダもそのまま復元)。
- 慣れ親しんだ編集環境
- フォーム、クラス、メニュー、レポートは、プロジェクトマネージャーやコマンドウィンドウ内で編集できます。
- デバッグ機能(実行ラインでの停止など)が期待通りに動作します。
- データの完全な保全
- テーブル、インデックス、メモフィールドを「原位置」から読み書きするため、ファイル形式は変更されません。
- 外部連携の継続
- システムコール、オートメーションオブジェクト、旧式アドインライブラリも引き続き動作します。
🎨 外観と IDE
Visual FoxPro のサンプルプロジェクトを使用した際の IDE の挙動です。
- Solution サンプル: インポート・実行済み状態。スクリーンタブにはランチャーフォーム、エクスプローラーにはプロジェクト構成が表示されます。
- リアルタイム検証: エディタはコンパイラを使用し、エラーのあるコード部分に下線を表示します。
- デバッグ機能: ブレークポイントを設定すると、コールスタック、ローカル変数、ウォッチ情報を表示できます。
- テーブルブラウザ: データベースコンテナ内で 8 フィールド分のデータを確認でき、メモフィールドはクリックで開けます。
💻 FoxScript と言語対応範囲
FoxScript は VFP の機能を実装したランタイム上に追加された機能であり、独自の実行環境とは異なります。
- 正確な実装方針
- 希望的観測ではなく、Visual FoxPro の仕様をそのまま採用します。
- ゼロから書き直されたランタイムにより、起動速度は速く、未対応領域は明確に示されます。
- 対応項目数:
- VFP 9 ランタイム認識項目:1,722 アイテム
- テストで検証済み項目:1,534 アイテム
- その他:動作中に意図的に無視または拒否処理を行います。
- キーワードと HTTP API:
、LAMBDA
など新しいキーワードをサポートします。ENDLAMBDA
名前空間や Node.js サイドを統合しています。FoxScript.Http
🧠 仮想マシンとアーキテクチャの進化
アーキテクチャの刷新
- コールスタック: Rust で記述されたコンパイラとバイトコードインタプリタを WebAssembly にコンパイルしています。
- 非同期処理: エンドユーザーからの要求(メッセージボックス、次のレコードなど)に対しブロックせず、「一時停止・再開」方式を採用します。
- VFP 振る舞いの維持:
でもウィンドウは凍結せず、MESSAGEBOX()
もブロックせず、FoxPro 以来のイベント処理を保持しています。READ EVENTS
64 ビットへの完全移行と恩恵
Visual FoxPro は 32 ビットアーキテクチャで停止しており、テーブル容量に 2GB の制限がありました(有符号数値による)。FoxDev Studio はこれを克服します。
- ファイルオフセット: すべてのファイルオフセットが 64 ビット化されています。
- 容量の拡大:
- Visual FoxPro: 約 2 GB (2,147,483,647 バイト)
- FoxDev Studio: 約 9 EB(9,223,372,036,854,775,807 バイト)
- パフォーマンス向上:
- 例:レコードサイズ 130 バイトのテーブルでは、VFP の 2 GB に相当するマス目を約 279 マス目まで拡張可能(実容量は 558 GB 超)。
注意: 2 GB を超えて成長した
ファイルは、再度 Visual FoxPro で開くことはできません。両環境での同時使用は「片道切符」となります。.dbf
32 ビットブリッジと外部連携
- 旧ライブラリの読み込み:
ファイルなどの 32 ビットイメージを直接読み込めません。.fll
コマンドにより、小さな 32 ビットプロセス(ホスト)を起動し、そこからライブラリを提供します。SET LIBRARY TO
- 64 ビット機能:
で同じプロセス内の現代的なライブラリや、オートメーションオブジェクトに直接アクセス可能です。DECLARE ... DLL
🖥️ スクリーン描画とオブジェクトツリー
ライブオブジェクトツリー
- 表示されるフォームは画像ではなく、ライブなオブジェクトツリーです。
- React がこのツリーから直接インターフェースを描画します。
- 部分更新:
のように、特定のコントロールのみを更新でき、全体再描画のオーバーヘッドがありません。THISFORM.lblGreeting.Caption = cMsg
デザインと実行の統合
- デザイナーが編集するのは同じオブジェクトツリーです。
- フォームとデザイナーによる矛盾(二重モデル)は存在せず、高密度な画面でも瞬時の更新に対応します。
📚 ドキュメントを読む
製品の各部分は文書化されており、将来の機能も含めて以下の構成で説明されています。
| セクション | 内容の概要 |
|---|---|
| 概要 | FoxDev Studio の構成要素の説明 |
| 入門 | インストール、プロジェクト開示、実行ファイル配布方法 |
| 必要なツール | IDE 動作要件とソースビルド条件 |
| 仮想マシン | ファイバー、ホストリクエストの仕組み |
| バイトコード | モジュール形式やコンパイル情報の詳細 |
| 命令参照 | 自動生成された VM ソースからの命令リスト |
| 新しいキーワード | や新値型の解説 |
| HTTP API | デザイン意図と Node.js サイドの解説 |
今後の予定
- レポート機能: レポートデザイナーとエンジンを強化(バンド単位での測定対応)。
- 巨大テーブルフォーマット: DBF ヘッダーの制限を明確にしたコンテナの実装。
- 配布用インストーラー: 設定不要で即座に実行可能な単一アプリケーション化。