IBConsoleについての考察

 Firebird 関連のサイトでは黙殺状態の IBConsole ですが、すべてにおいて駄目な訳ではありません。IBConsole に対する誤った認識を正すために情報をまとめてみました。なお、ここでの発言は "FirebirdとIBConsoleの組み合わせ" に言及するものです。"Interbase + IBConsole" はオフィシャル版がありますので何ら問題はありません(ちょっと嘘ついてますが)。


IBConsoleのバリエーション

2008/12/15 現在で確認が取れている IBConsole です。

種 類 OS 形 態 バージョン タイムスタンプ 対 応 言 語 コンパイラ 特 徴
Inprise版 IBConsole Windows Binary 1.0.0.308 (不明) IB6.0x 英語 D5 IB6で動作します。IB付属の 1.0.0.309がうまく動作しないために、暫定措置で旧バージョンが用意されたようです(キャッシュ但しDL不可)。
オープンソース版
IB6.0(InterBase_WI-V6.0-server.ZIP)

に付属
Windows Binary 1.0.0.309 2000/06/23
06:00:00
IB6.0x 英語 D5 IB6に付属しているのにIB6では誤動作するようです。このIB6.0はすぐに消え、IB6.0.1に差し替えられました(リンク先は未だに残っていたミラーFTPです)。
オープンソース版 IBConsole Windows Source 1.0.0.309 - IB6.0x 英語 - 私にはビルドできませんでした。これを含めた以前のバージョンはFirebird2.0においてあちこちでエラーが出るようです。
書籍「Firebird オープンソースデータベースの導入と運用の実際 Windows Binary 1.0.0.310 2002/11/06 10:00:00 IB6.0x 英語 D5 日本語が通るようです。何故か付属のソースは1.0.0.337のようです。
Inprise放出版 IB6.0.1(ib_server_6_0_1.zip)付属 Windows Binary 1.0.0.315 2000/08/28 11:55:40 IB6.0x 英語 D5 グレーゾーンにあるIB6.0.1です。
オープンソース版 IBConsole Windows Binary 1.0.0.320 2000/10/02 11:23:54 IB6.0x 英語 D5 オープンソース版として公開されていますが、このバージョンのソースはDLできません。バイナリ配布のみです。
オープンソース版 IB6.0.1
(InterBase_WI-V6.0.1-server.ZIP)

に付属
Windows Binary 1.0.0.326 2001/01/05 12:41:56 IB6.0x 英語 D5 単独で公開されているIBConsoleからバージョンが上がっています。何故?
旧Twise Lab版 IBConsole Windows Source/
Binary
1.0.0.327 2001/01/23 16:02:34 IB6.0x?,FB 日本語 - 私はこれの存在を知らなかった為に旧DEKO版を作ってしまいました。1.0.0.320からは複数の人間が独自に作業をしていたようです(同じバージョンで違う機能のIBConsoleが存在)。そしてこの327で統合され、SourceForgeで337 までメンテされたと思われます。
Delphi 6/7に付属のIB6.0.1に付属/
IB6用IBConsoleの修正版
Windows Binary 1.0.1.335
Fix 01
2001/07/06 13:15:26 IB6.0x 日本語 D5 多分、日本語版では一番メジャーな IBConsoleです。
オープンソース版 IBConsole Windows Source 1.0.0.336 - IB6.0x 英語 - エディタ部にRichEditXが使われています。また、IBExtractがdcuで提供されており、Delphiのバージョンが変わるとコンパイルできません。今ではDLできないと思われます。
旧DEKO版 IBConsole Windows Binary 1.0.0.336 2001/08/20 17:08:20 IB6,FB 日本語 D5 上のオープンソース版 IBConsoleのソースが元になっています。
オープンソース版 IBConsole Windows/
Linux
Source 1.0.0.337/
Alfa2
- IB6.x 英語 - 現在入手できるソースでは最新のものです。エディタ部にSynEditが使われています。
・Delphi5/6(Kylix/2)
・IBX x.04以前
・SynEdit1.x
でコンパイルする事が想定されているようです。
Kylix3でビルドしようとするとSynEdit1.xはマトモにインストールできません(少なくとも私には無理でした)。多少の改変を行えば
・Delphi6以降(Kylix3)
・SynEdit2.x
でビルドできます。
DEKO版 IBConsole Windows Binary 1.0.0.337 (リンク先参照) IB6.x/7.x/2007/2009,FB 日本語 D2007/D2009 詳細はリンク先参照。
DEKO版 IBConsole Linux Binary Alfa 2
(1.0.0.337)
(リンク先参照) IB6.x,FB 日本語 K3 詳細はリンク先参照。
IBConsole for Firebird 1.5 Twise Lab.Edition Windows Source/
Binary
1.5.0.1J
(1.0.0.337)
2006/06/21 14:23:06 IB6.x/7.x,FB 日本語 D2005 SynEditを使う事からソースを1.0.0.337と判断していますが、1.0.0.337をビルドしたものとは多少挙動が異なるようです。日本語化/FB対応以外でも改変されたのでしょうか?
Borland Developer Network版 IBConsole Windows Binary 1.0.0.339 2001/09/04
13:10:48
IB6.x 英語 D6 ツリービューにインデックスが表示されるようになっています。これ以降、ツリービューに表示される項目が増えていきます。但し、開発者自身には不本意な改変のようです。また、テーブルのプロパティに表示される「インデックスの表示内容が変更になっています。以降、Firebirdに接続できても、Dialect1以外のDBでは何らかのエラーが起こる事が多いです。
Borland Developer Network版 IBConsole Linux Binary 1.0.0.339
Beta1
2001/09/05
02:09:45
IB6.x 英語 K2 ツリービューにインデックスが表示されるようになっています。共有ライブラリが同梱されていません。セグメンテーションエラーが出て、起動させる事ができませんでした。
英語版Delphi7/BCB6に付属のIB6.5に付属 Windows Binary 1.0.1.340 (不明) IB6.x 英語 D6 IB6.5は海外でのみ発売されていたようです。
書籍「Firebird オープンソースデータベースの導入と運用の実際」/
Borland Developer Network版 IBConsole
Linux Binary 1.0.343
Beta1
2002/01/30 03:18:05 IB6.x,FB 英語
K2 セグメンテーションエラーが出て、起動させる事ができませんでした。
書籍「Firebird オープンソースデータベースの導入と運用の実際」/
Borland Developer Network版 IBConsole
Windows Binary 1.0.1.344 2002/03/14 14:28:34 IB6.x 英語
D6  
Borland Developer Network版 IBConsole Linux Binary 1.1.0.13 2002/11/14
01:03:30
IB6.x/7(/7.1) 英語 K3 ツールバーアイコンの色が抜けてます。
Delphi 2005に付属のIB7.1 に付属 Windows Binary 1.1.0.18 2004/08/13 08:01:00 IB6.x/7(/7.1) 日本語 D7 オリジナルはBorland Developer Network版のようです。
IB7.5 for Delphi2005に付属 Windows Binary 1.1.0.18 2004/11/30
00:05:33
IB6.x/7(/7.1) 英語 D7 オリジナルはBorland Developer Network版のようです。リンク先のUpdate1/2/3等を選択すると、ポップアップウィンドウが出ますが、その下の方にあります。分かり難い所にあるので存在を知らないヒトも多いのではないでしょうか?
Borland Developer Network版 IBConsole Windows Binary 1.1.0.27 2002/11/14 01:03:30 IB6.x/7(/7.1) 英語 D7 最新版IBConsoleのベースとなっています。様々な操作をGUIで行えるように改変が行われています...が、そのためFirebirdで動かない所が多々あります。
Borland Developer Network版 IBConsole Linux Binary 1.1.0.28 2005/03/27
06:24:15
IB6.x/7(/7.1) 英語 K3 ...書庫が壊れてませんか?
BDS 2006/
Turbo Delphiに付属のIB7.5(1)に付属
Windows Binary 7.5.0.26 2005/08/15 07:51:00 IB6.x/7.x 日本語 D7 オリジナルはNewsGroup版のようです。これまでとはバージョン表記が変わっているので比較が難しくなっています。このバージョンから多言語対応になったようですが、言語を選択する事はできません。同じIB7.5でも「 for Delphi2005」付属のIBConsoleは1.1.0.18です。IB7.5からは昔で言う"Local Interbase"を扱うためにランチャが必要なようです。
IBConsole NewsGroup開発版
Linux Binary
7.5.1.0~
7.5.1.15
- IB6.x/7.x 英語 K3 IB7.51用IBConsoleです。
IBConsole NewsGroup開発版 Windows Binary
7.5.1.0~
7.5.1.16
- IB6.x/7.x 英語 D7 IB7.51用IBConsoleです。
日本版IDE/IBではお目にかかる事がありませんでした。
Delphi 2007付属のIB2007に付属 Windows Binary 8.0.0.27
2007/03/05
17:25:06
IB6.x/7.x/2007 英語 D7 日本語にローカライズされていません。
残念ながらNG版そのもののようです。
つまり、そのままでは日本語が通りません。
IB2007日本語版付属 Windows Binary 8.0.0.27
2007/03/15
05:17:42
IB6.x/7.x/2007 日本語 D7 日本語化されています。Delphi 2007をお使いの場合にはDeveloper EditionのDLを推奨します(DLには要IE)。
InterBase SMP 2009 Hotfix Update 1 for Windows(英語版) 付属 Windows Binary 9.0.0.226
2008/09/24
10:02:42
IB6.x/7.x/2007/2009 英語 D2006  
Interbase SMP 2009 Developer Edition(日本語版) 付属 Windows Binary 不明
2008/10/16
10:37:00
IB6.x/7.x/2007/2009 日本語 D2006 バージョン情報が取得できません。9.0.0.227?
IBConsole NewsGroup開発版
(最新β)
Linux Binary 8.0.0.0~
9.0.0.227
- IB6.x/7.x/2007/2009 英語 K3 オフィシャル版の元になっています。環境設定ファイルがxmlになっています。
IBConsole NewsGroup開発版
(最新β)
Windows Binary 8.0.0.0~
9.0.0.227
- IB6.x/7.x/2007/2009 英語 D7/D2006 オフィシャル版の元になっています。環境設定ファイルがxmlになっています。付属のgds32.dllを使わなければFirebirdに接続できます(Dialect1)。Interbase2007に対応、SQLウィンドウがかなり変化しています。

 バージョン順に並べてみました。こうして並べてみると面白いですね。対応は使用されたであろう IBX からの推測です。IBX が対応していても、そのバージョンの機能を使っていない可能性があります。逆に、IBX が対応していなくても正常動作する事があります。IBX のバージョンが表示されない以上、 IBConsole のバージョンからは正確な対応IBを知ることはできない事になります。動くかどうかは実際に確認をしないといけない、という事ですね。但し、使用されたコンパイラは判明しています。Windows版は EXE をバイナリエディタで覗くとコンパイルに使われた Delphi のバージョン判別できます。Linux版は付属している共有ライブラリで判別できます。なお、最新βのコンパイラには Delphi 2006 が使われています。

 1.0.x 系の IBConsole は Firebird でも普通に使えます。Interbase と Firebird が枝分かれしたのが "オープンソース版IB6.01" からで、Firebird 1.0.x は IB6 と完全互換だったはずです。

 オープンソース版は最初のバージョンが 1.0.0.309、最後のバージョンが 1.0.0.337 となります。1.0.1.x というバージョンは Borland版 IBConsole と言えます。オープンソース版と区別するためにリリース番号(3つめの数値)を一つ上げたのでしょうか?

 1.1.x/7.5.x系は IB7.x対応版です。8.x系はIB2007対応版です。9.x系はIB2009対応版です。

 IB7xの "InterbaseDesktop(昔で言うローカルInterbase)" を使用している場合には IBConsole でローカル接続できません(7.5.1.16 で対応したような事は書いてありますが?)。ローカルで使いたい場合にはリモートのアドレスに "localhost" または "127.0.0.1" を入力してみて下さい。苦しい実装方法ですが、 ランチャを使う方法もあるようです。

 これらを踏まえて各最新版をまとめてみたのが下の表になります。

最新版 ソース最新版 オフィシャル最新版 オフィシャル最新版
(Firebird接続可能)
NewsGroup最新版 NewsGroup最新版
(Firebird接続可能)
オープンソース版最新版
(Firebird対応)
プロダクト オープンソース版
IBConsole
Interbase SMP 2009 に付属
(Developer Edition含)
Delphi 2005に付属の
IB7.1に付属
IBConsole NewsGroup
開発版(最新β)
BDN版
IBConsole
BDN版
IBConsole
DEKO版
IBConsole
IBConsole for Firebird 1.5
Twise Lab.Edition
OS Windows Linux Windows Windows Windows Linux Windows Linux Windows Linux Windows
バージョン 1.0.0.337 Alfa2 9.0.0.227? 1.1.0.18 9.0.0.227 9.0.0.227 1.1.0.27 1.1.0.28 1.0.0.337 Alfa2 1.5.0.1J(1.0.0.337)
対応 IB6.x IB6.x/7.x/2007/2009 IB6.x/7/7.1 IB6.x/7.x/2007/2009 IB6.x/7.x IB6.x,FB IB6.x(/7.x),FB
言語 英語 日本語 日本語 英語 英語 日本語 日本語
日付 -
2008/10/16
10:37:00
2004/08/13
08:01:00
- - 2002/11/14
01:03:30
2005/03/27
06:24:15
(リンク先参照)
(リンク先参照) 2006/06/21
14:23:06
環境設定 レジストリ conf xml レジストリ xml レジストリ conf レジストリ conf レジストリ


IBXのバリエーション

 独自ビルドを行う場合には、そのビルド環境も重要です。Kylix と Delphi7 以前の IBX は IB6対応版なのですが、これ以降のコンパイラの IBX は IB7対応版となっています(Twise Lab版に IB7 と入れているのは Delphi2005 でコンパイルされているため)。もちろん、IBX のアップデータを適用した場合にはその限りではありませんが...。ちなみに、IBX のバージョンは IBXConst.pas の "IBX_Version" 定数で確認できます。なお、Delphi 2007/IB 2007付属 IBX の IBXConst.pasは ローカライズされていません。

  Delphi5 Delphi6 Delphi7 Delphi2005 BDS2006 Turbo Delphi Delphi 2007 Delphi 2009
ver 対応IB ver 対応IB ver 対応IB ver 対応IB ver 対応IB ver 対応IB ver 対応IB ver 対応IB
デフォルト 4.1(?) 5.x/6.0x 6.0 5.x/6.x 6.0 5.x/6.x 9.09 5.x/6.x/7.0x 10.10 5.x/6.x/7.x 10.10 5.x/6.x/7.x 11.11 5.x/6.x/7.x/
2007
12.12 5.x/6.x/7.x/
2007/2009
最新DL 5.04
(SP1必須)
5.x/6.x 6.11 5.x/6.x/7x/
2007
7.11 5.x/6.x/7x/
2007
9.11 5.x/6.x/7x/
2007
10.11 5.x/6.x/7x/
2007
10.11 5.x/6.x/7x/
2007
- - - -
製品付属
(Trial含)
5.0.9
(IB7.5付属)
5.x/6.x/7.x 6.11
(IB2007付属)
5.x/6.x/7.x/
2007
7.11
(IB2007付属)
5.x/6.x/7.x/
2007
9.11
(IB2007付属)
5.x/6.x/7x/
2007
10.11
(IB2007付属)
5.x/6.x/7x/
2007
10.11
(IB2007付属)
5.x/6.x/7x/
2007
- - - -

 Delphi7 の IBX が 6.0 になっているのは、Delphi6 の IBX6.0 で日本語化した IBXConst.pas をそのままコピーしたからだと思われます(本当は7.03ではないかと...)。IBX は 5 以降、下2桁がバージョンになっています。実際、IBX5.04/6.04/7.04 は対象となるコンパイラが違うだけで、IBX としては同じもの(ver4)になります。

 ディープな調査をした訳ではありませんが、IBX は明示的に機能を使わない限り IB6(≒Firebird1.0x) への下位互換性を保っています。

バージョン バージョン固有の機能 備考
IB6.5専用 (なし) つまり、6.x対応。
IB7.0専用 isc_array_gen_sdl2
isc_array_get_slice2
isc_array_lookup_bounds2
isc_array_lookup_desc2
isc_array_put_slice2
isc_array_set_desc2
isc_blob_default_desc2
isc_blob_gen_bpb2
isc_blob_lookup_desc2
isc_blob_set_desc2
DLLの関数定義のみ。コンポーネントからは一切使われていない。
IB7.1専用 isc_release_savepoint
isc_rollback_savepoint
isc_start_savepoint
DLLの関数定義のみ。コンポーネントからは一切使われていない。
IB7.5専用 TIBConfigService.ExecuteSQL(SQL : String);
TIBSecurityService.ExecuteSQL(SQL: String);
内部でDBのODSバージョンを確認している。ODSバージョンが11.2以下では動作しない。
IB7.51専用 (なし)  
IB2007専用 isc_dsql_batch_execute_immed
isc_dsql_batch_execute
DLLの関数定義のみ。コンポーネントからは一切使われていない。

 「IBXは将来においてFirebirdに接続できる保証がない」 と言われて、はや数年経ちますが、未だに問題は出ていません。"Delphi 2009 + IBX 12.12" で Firebird 2.1x に普通に接続できています。"保証がない" と言われればそれまでですが、将来に於いて永続的にサポートされる保証がないのは Firebird 対応を謳っているミドルウェアだって同じでしょう?

 "他のミドルウェアをお勧め" なヒトが結構いますが、本当にそうでしょうか?少なくとも "Windows/Linux で動作するGUI管理ツールを作れるか?" という観点から見るとそうとばかりも言えません。

ミドルウェア 配布形態 Linux(Kylix)対応
Interbase Express(IBX) Delphi/Kylix/IBに付属
FIBPlus 販売
IBObject(IBO) 販売
Mercury Database Objects(MDO) オープンソース ×

 Windows/Linux で同じように動作するGUI管理ツールを作るためには IBX 以外選択肢がない事が解ります。折角、管理ツールのソースコードを公開してもミドルウェアが有償なのでは敷居が高くなるだけです。それに将来、配布時のライセンスが変更にならないという保証はありません。Windows版だけでいいのならMDOがいいのでしょうが、LinuxのXで動作しない事を考えると魅力は半減です(Linuxのデスクトップ環境は年々良くなってきています)。管理ツールを作るのでなければ、上記以外のミドルウェアもあり、それこそ自由に選べるのですが...。

 よほど特殊な事をしない限りは最新の Delphi/IBX で普通に Firebird へ接続できるハズです...「絶対」とは言い切れませんが。


Vistaでの動作

 IBConsole 自体の問題ではありませんが、Vista ではローカルプロトコルが動作しない事があります。この問題を回避するには2つの方法があります。

  1. サービスで起動しない。
    サービス起動せず、スタートアップで"fbserver -a"として起動する。
     
  2. firebird.confをいじる。
    IpcName/IpcMapSizeのコメントを外す。

 いずれかの方法で回避できるかもしれません。但し、どちらもパフォーマンスはあまりよくないようです。

 Firebird 1.5系をお使いの場合、コントロールパネルにアプレットを登録すると、コントロールパネルを開いただけで Explorer が死ぬ事があります。このような症状に遭遇した場合は、一旦Firebirdをアンインストール("ファイル名を指定して実行"から"Appwiz.cpl"とすると直接"アプリケーション(プログラム)の追加と削除"を起動できます)し、再インストール時に Firebird アプレットをコントロールパネルに追加しないようにして下さい。

 VistaではUACを無効にする必要があるかもしれません。

 当方の環境では "Vista + FB1.5.4/2.0.1 + IBConsole(DEKO版)" でローカル接続できています。但し、ローカルサーバ接続時に必ず "fbserver.exe" が常駐してしまいます(「ローカルサーバーが起動していません。今すぐ起動しますか?」と尋ねられる事になります)。

 ローカルサーバにこだわらないのであれば、リモートサーバ接続方式にして、リモートサーバに "127.0.0.1" や "localhost" 等のループバックアドレスを指定するのが簡単でいいと思われます。

See Also:


総括

 総合的に考えると、

 繰り返しになりますが、IBConsole と一口に言ってもこれだけの種類があります。IBConsole と一括りにせず、自分の環境に合った IBConsole を探してみる事が大切だと思います。


 BACK