Microsoft Visual FoxPro

Visual FoxProから転送)

Visual FoxPro は、マイクロソフトが開発販売しているデータ中心型オブジェクト指向/手続き型プログラミング言語である。1984年、Fox Softwareが開発した FoxPro(当初の名称は FoxBASE)から発展した製品である(Fox社は1992年にマイクロソフトに吸収合併された)。

Microsoft Visual FoxPro
開発元 マイクロソフト
最新版
Visual FoxPro 9.0 Service Pack 2 (SP2) / 2007年10月11日
対応OS Microsoft Windows
プラットフォーム x86
種別 データベースプログラミング言語
ライセンス プロプライエタリ(Microsoft EULA)
公式サイト msdn.microsoft.com/vfoxpro
テンプレートを表示

歴史 編集

FoxPro 編集

FoxPro はテキストベースの手続き型プログラミング言語でありDBMSである。当初 Fox Software が開発販売し、後にマイクロソフトに引き継がれた。対応プラットフォームとしては、MS-DOSMicrosoft WindowsMacintoshUNIX があった。

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) サポートライブラリを使ってLinuxFreeBSDにインストール可能である。

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 編集

Extant Versions by OS
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 編集

Supported Windows Versions
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)

脚注 編集

  1. ^ VFP and Linux - Visual FoxPro Wiki
  2. ^ A Message to the Community
  3. ^ Microsoft SEDNA download
  4. ^ Developers petition Microsoft to reconsider FoxPro phase out ZDNet.com、2007年4月3日
  5. ^ SourceForge.net 上のLinux ABIプロジェクトからIBCSファイルを使う。
  6. ^ - VFP8 アプリケーションはサポートされていないが、Windows NT 4.0で動作する。
  7. ^ - German FoxPro User Group (dFPUG) が開発したパッチがある[1]。マイクロソフトによれば、VFP 9.0 SP1で対処されるとのこと。
  8. ^ - Windows 95ではセカンドレベルのメニューが機能しない。

外部リンク 編集

マイクロソフト 編集

その他 編集