ターボビジョン 2.0 – 現代的なポート
概要
- Turbo Visionは、クラシックなテキストベースUIフレームワークのモダン移植版
- クロスプラットフォーム対応とUnicodeサポートが特徴
- Linux/Windows/DOSで動作、ソース互換性を重視
- サンプルやビルド手順、API変更点も詳細に解説
- GitHubで公開、開発者・レトロ開発者双方に有用
Turbo Vision 2.0 モダン移植版の概要
- Turbo Visionは、1990年代初頭Borlandが開発したテキストUIフレームワークの現代版
- クロスプラットフォーム(Linux/Windows/DOS)で動作、Unicode対応
- 2018年末から個人プロジェクトとして開始、2020年5月にオープン化
- レガシーコードを最小限の変更でLinux対応、Borland C++ RTL関数も一部実装
- 既存アプリの高いソース互換性維持、API拡張や大規模書き換えは慎重に検討
Turbo Visionの特徴とメリット
- 端末依存のI/Oやワークアラウンド不要、一貫した動作と外観を全環境で実現
- **ウィジェット(ビュー)**多数搭載:ウィンドウ、メニュー、ダイアログ、ボタン、スクロールバー等
- イベントディスパッチや全角Unicode表示も標準サポート
- クロスプラットフォーム対応:#ifdef等の条件分岐なしでLinux/Windows両対応
- char配列で文字列管理、wchar_t/TCHAR非依存
- UTF-8対応setlocaleにより、Windowsでも日本語ファイル名等が自然に扱える
Turbo Visionの始め方
- Turbo Vision For C++ User's Guideで基本操作を習得
- サンプルアプリ(hello, tvdemo, tvedit)で実践
- Turbo Vision 2.0 Programming Guide(Pascalだが直感的)も推奨
- パレット例で配色の仕組みを理解
- features, API changesセクションも必読
リリース・ダウンロードガイド
- 安定版リリースなし、最新コミット推奨
- Unix系:自力ビルドが必要、手順は後述
- Windows:GitHub ActionsのArtifactsからバイナリ取得可能
- examples-dos32.zip:Borland C++ビルド(Unicode非対応)
- examples-x86.zip:MSVC 32bit(Vista以降)
- examples-x64.zip:MSVC 64bit(Vista以降)
ビルド環境ごとの手順
-
Linux
- CMake+GCC/Clangで静的ライブラリ生成
- cmakeコマンドでビルド、libtvision.aと各種サンプル生成
- 必要要件:C++14対応コンパイラ、libncursesw、libgpm(任意)
- クリップボード対応:xsel/xclip(X11)、wl-clipboard(Wayland)
- アプリビルド例:
g++ -std=c++14 -o hello hello.cpp ./build/libtvision.a -Iinclude -lncursesw -lgpm - 互換ヘッダでBorland C++ RTLをエミュレート、旧アプリ移植も容易
-
Windows(MSVC)
- CMakeでビルド、アーキテクチャごとにディレクトリ分け
- /MTや/MDなどRTLリンク方式の統一が必要
- 必須フラグ:/permissive- /Zc:__cplusplus
- setlocaleでUTF-8モード、Vista以降で動作安定
-
Windows(MinGW)
- Linuxと同様の手順、CMake+MinGW Makefiles
- libtvision.aとサンプルが./buildに生成
- Windows XP以降で動作可能
-
Windows/DOS(Borland C++)
- DOS/Windows用ライブラリとしてビルド可能(Unicode非対応)
- Borland C++ 4.52+PowerPack、Turbo Assembler 4.0で動作確認
- 環境依存の問題あり(MAKEのバージョン、16bitインストーラ等)
-
Vcpkg
- vcpkg経由でのインストール対応
- Microsoftとコミュニティがメンテナンス、更新要望はIssue/PRで
Turbo VisionをCMake依存として利用
- CMakeベースのアプリケーションでTurbo Visionをリンクする主な方法
- Turbo Visionインストール後にfind_packageでインポート
- 詳細は公式README参照
Turbo Visionの用途と現代的意義
- GUIツールとの差別化:外観と動作の分離や安全性・非同期性は弱いが、端末アプリの課題解消に強み
- 既存資産の再利用:ウィジェットやイベント処理を活用し、開発効率化
- クロスプラットフォームのテキストUI:Linux/Windows間の移植性確保
Unicode・クリップボード・カラー拡張
- Unicodeサポート:既存アーキテクチャに統合、Windowsでも利用可能
- クリップボード連携:X11/Wayland/Windowsで対応
- カラー拡張:端末環境に応じた自動調整
まとめ
- Turbo Visionはレトロとモダンの橋渡しをするクロスプラットフォーム・テキストUIフレームワーク
- Unicode・クリップボード・カラー等、現代的ニーズに対応
- GitHubで積極的に開発・公開、C++開発者・レトロ資産活用者に最適