Microsoft Visual FoxPro
開発元 | マイクロソフト |
---|---|
最新版 | |
対応OS | Microsoft Windows |
プラットフォーム | x86 |
種別 | データベースプログラミング言語 |
ライセンス | プロプライエタリ(Microsoft EULA) |
公式サイト | msdn.microsoft.com/vfoxpro |
Visual FoxPro は、マイクロソフトが開発販売しているデータ中心型オブジェクト指向/手続き型プログラミング言語である。1984年、Fox Softwareが開発した FoxPro(当初の名称は FoxBASE)から発展した製品である(Fox社は1992年にマイクロソフトに吸収合併された)。
歴史
[編集]FoxPro
[編集]FoxPro はテキストベースの手続き型プログラミング言語でありDBMSである。当初 Fox Software が開発販売し、後にマイクロソフトに引き継がれた。対応プラットフォームとしては、MS-DOS、Microsoft Windows、Macintosh、UNIX があった。
FoxPro は一般に「xBase言語」と呼ばれる言語の一種であり、その文法はdBASEプログラミング言語に基づいている。xBase言語とされるものには他に Clipper がある。xBase言語の初期の歴史については、dBASEを参照。
FoxProはデータベース管理システムだが、表間の関係をサポートしていない。つまり、関係データベースではないし、トランザクション処理能力もない。
最終版はFoxPro 2.6で、それ以降はVisual FoxProに引き継がれた。既に販売終了していてマイクロソフトもサポートしていないが、FoxProユーザーのコミュニティは現在も活動中である。FoxPro 2.6 for UNIX (FPU26)はIntel Binary Compatibility Standard (ibcs2) サポートライブラリを使ってLinuxやFreeBSDにインストール可能である。
FoxPro 2では、"Rushmore" という最適化エンジンが搭載され、データ検索や更新が高速化されている。Rushmoreは全てのデータ関係文を調べてフィルタ式を探し出す。フィルタ式が使われると、同じ式にマッチするインデックスを探す。また、FoxPro 2は当初WatCOM C++で書かれており、これには自前のメモリ拡張機能(当時の最新技術)があった。FoxPro 2は拡張メモリにアクセスでき、DOSが管理可能なほぼ全てのメモリを使うことができた。HIMEM.SYSがロードされていない場合、FoxPro 2は自前の拡張機構を起動するようになっていた。
Visual FoxPro
[編集]Visual FoxProとしての最初のバージョンは3.0で、対応プラットフォームはMacintoshとWindowsのみに限定され、さらに後のバージョンではWindowsのみとなった。現在のVisual FoxProはCOMベースであり、マイクロソフトはMicrosoft .NET版を開発する予定はないとしている。
Visual FoxPro(VFPと略記されることが多い)は関係データベースエンジンと密に結合されている。この関係データベースはFoxProのxBase機能を拡張し、SQLクエリ/データ操作を追加サポートしている。多くのデータベース管理システムとは異なり、Visual FoxProは完全な動的プログラミング言語であり、追加の汎用プログラミング環境を必要としない。ファットクライアントのアプリケーション開発だけでなく、ミドルウェアやウェブアプリケーションも開発可能である。
最近の動向
[編集]2002年末、Visual FoxProをWineを使って Linuxで利用可能であることが示された。2003年、これを受けてマイクロソフトはWindows以外の上でFoxProを動作させることはライセンス契約に違反していると指摘した[1]。
2005年12月、TIOBEのProgramming Community IndexにVFP(正確にはFoxPro/xBase)が初めて上位20位以内にランキングされた。2007年3月には19位、2007年8月には22位、2008年4月には17位と推移している。
2007年3月、マイクロソフトはVFP 10は開発されないことを発表した[2]。従って、2004年12月17日にリリースされたVFP 9が最後の商用バージョンとなる。VFP 9 のサポートはサービスパックの形式で行われている(2005年12月と2007年10月にリリース)。
その発表と同時に、開発されていた次期バージョンSedna(コード名)が発表された。これはVFP 9へのアドオンであり、SQL Server 2005、.NET Framework、Windows Vista、Office 2007、Windows Search、Team Foundation Server (TFS) などとの連携機能をサポートしている。マイクロソフトはこれをシェアードソースライセンスでCodePlex上でリリースした。ただし、VFPの中核部分は依然としてクローズドソースである。Sednaのリリースは2008年1月25日に行われた[3]。2008年3月現在、VFP 9 SP2(Sednaを含む)のXBaseコンポーネントは全てCodePlexから開発用に利用可能である。
2007年3月、FoxProのスペイン語コミュニティMasFoxProで草の根運動が始まり、マイクロソフトに対してVisual FoxProの開発継続か全ソースのオープンソース化を求める活動を展開した。2007年4月3日、この運動は業界メディアでも報道された[4]。これに対してマイクロソフトは2007年4月3日、声明を発表した。それによると、新たなバージョンは開発せず、2015年までサポートを継続するとのこと。また、オープンソース化については最善の選択としているが、中核部のオープンソース化の具体的な予定は発表されていない。
バージョン情報
[編集]FoxPro
[編集]Version | FP 2.0 | FP 2.5 | FP 2.6 |
---|---|---|---|
MS-DOS | Yes | Yes | Yes |
Windows 3.1 to XP | Yes | Yes | Yes |
Macintosh | No | Yes | Yes |
SCO UNIX | No | No | Yes |
Linux & FreeBSD | No | No | Yes[5] |
Windows 2000 | No | No | Yes |
Visual FoxPro
[編集]Version | VFP 3.0 | VFP 5.0 | VFP 6.0 | VFP 7.0 | VFP 8.0 | VFP 9.0 |
---|---|---|---|---|---|---|
Windows 3.x | Yes | No | No | No | No | No |
Windows NT 4.0 | Yes | Yes | Yes | Yes | No [6] | No [7] |
Windows 95 | Yes | Yes | Yes | ランタイムのみ | No [8] | No |
Windows 98 | Yes | Yes | Yes | Yes | ランタイムのみ | ランタイムのみ |
Windows Me | Yes | Yes | Yes | Yes | ランタイムのみ | ランタイムのみ |
Windows 2000 | Yes | Yes | Yes | Yes | Yes | Yes |
Windows XP | Yes | Yes | Yes | Yes | Yes | Yes |
Windows Server 2003 | ? | ? | Yes | Yes | Yes | Yes |
Windows Vista | ? | Yes | Yes | Yes | Yes | Yes |
コード例
[編集]Hello World の例:
MESSAGEBOX("Hello World")
オブジェクト
[編集]loForm = CREATEOBJECT("HiForm")
loForm.Show(1)
DEFINE CLASS HiForm AS Form
AutoCenter = .T.
Caption = "Hello, World"
ADD OBJECT lblHi as Label WITH ;
Caption = "Hello, World!"
ENDDEFINE
loMine = CREATEOBJECT("MyClass")
? loMine.cProp1 && これは動作する('&'が2つで行末までコメント)
? loMine.cProp2 && プログラムエラー: Property CPROP2 is not found.
? loMine.MyMethod1() && これは動作する。
? loMine.MyMethod2() && プログラムエラー: Property MYMETHOD2 is not found.
DEFINE CLASS MyClass AS Custom
cProp1 = "My Property" && パブリック・プロパティ
HIDDEN cProp2 && プライベート・プロパティ
PROCEDURE Init() && クラス・コンストラクタ
This.cProp2 = "This is a hidden property."
ENDPROC
PROCEDURE MyMethod1()
* This is a public method, calling a hidden method that returns
* the value of a hidden property.
RETURN This.MyMethod2()
ENDPROC
HIDDEN PROCEDURE MyMethod2() && プライベート・メソッド
RETURN This.cProp2
ENDPROC
ENDDEFINE
データハンドリング
[編集]&& テーブル生成
CREATE TABLE randData (iData I)
&& xBase と SQL DML コマンドを使ってランダムなデータを格納
FOR i = 1 TO 50
APPEND BLANK
REPLACE iData WITH (RAND() * 100)
INSERT INTO randData (iData) VALUES (RAND() * 100)
ENDFOR
&& データ上に構造化インデックスを配置
INDEX ON iData TAG iData
CLOSE ALL
&& xBase風コマンドでソートしたデータを表示
USE randData
SET ORDER TO iData
GO TOP
LIST NEXT 10 && First 10
SKIP 81
LIST NEXT 10 && Last 10
CLOSE ALL
&& SQL DML コマンドでソート済みデータをブラウズ
SELECT * ;
FROM randData ;
ORDER BY iData DESCENDING
SQLパススルーを使ったODBCアクセス
[編集]&& ODBCデータソースに接続
LOCAL nHnd
nHnd = SQLCONNECT ("ODBCDSN", "user", "pwd")
&& SQL コマンドを実行
LOCAL nResult
nResult = SQLEXEC (nHnd, "USE master")
IF nResult < 0
MESSAGEBOX ("MASTER database does not exist!")
RETURN
ENDIF
&& リモートサーバからデータを検索し
&& ローカルなデータカーソルにそれを格納
nResult = SQLEXEC (nHnd, "SELECT * FROM authors", "QAUTHORS")
&& リモートのテーブルにあるレコードを更新
LOCAL cAuthorID, cAuthorName
cAuthorID = "1001"
cAuthorName = "New name"
nResult = SQLEXEC (nHnd, "UPDATE authors SET auth_name = ?cAuthorName WHERE auth_id = ?cAuthorID")
&& 切断
SQLDISCONNECT(nHnd)
脚注
[編集]- ^ VFP and Linux - Visual FoxPro Wiki
- ^ A Message to the Community
- ^ Microsoft SEDNA download
- ^ Developers petition Microsoft to reconsider FoxPro phase out ZDNet.com、2007年4月3日
- ^ SourceForge.net 上のLinux ABIプロジェクトからIBCSファイルを使う。
- ^ - VFP8 アプリケーションはサポートされていないが、Windows NT 4.0で動作する。
- ^ - German FoxPro User Group (dFPUG) が開発したパッチがある[1]。マイクロソフトによれば、VFP 9.0 SP1で対処されるとのこと。
- ^ - Windows 95ではセカンドレベルのメニューが機能しない。
外部リンク
[編集]マイクロソフト
[編集]- Main Visual FoxPro Microsoft page
- MSDN FoxPro support board
- VFP's online help file
- Microsoft VFP 9 support
- Visual FoxPro Essential Downloads page
その他
[編集]- Visual FoxPro Wiki
- A site devoted to the history of FoxPro
- Using Win32 (WinAPI) functions in Visual FoxPro
- User-defined functions Visual FoxPro (written in C)
- VFPx VFP 9.0 のオープンソースのアドオンを開発しようとしているコミュニティ
- ProFox VFP関連のメーリングリスト
- Virtual FoxPro User Group
- Microsoft: FoxPro (old versions 1 to 2.6) Forum
- FoxPro FAQs