IBConsole についての考察

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


IBConsoleのバリエーション

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

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

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

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

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

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

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

 1.1.x / 7.5.x 系は IB 7.x 対応版です。8.x 系は IB 2007 対応版です。9.x 系は IB 2009 対応版です。

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

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

最新版 ソース最新版 オフィシャル最新版 オフィシャル最新版
(Firebird接続可能)
NewsGroup最新版 NewsGroup最新版
(Firebird接続可能)
オープンソース版最新版
(Firebird対応)
プロダクト オープンソース版
IBConsole
InterBase XE7 に付属
(Developer Edition 含)
Delphi 2005 に付属の
IB 7.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 12.0.0.0 1.1.0.18 9.0.3.473 9.0.3.473 1.1.0.27 1.1.0.28 1.0.0.337 Alfa2 1.5.0.1J (1.0.0.337)
対応 IB 6.x IB 6.x, 7.x, 2007, 2009, XE, XE3, XE7 IB 6.x, 7, 7.1 IB 6.x, 7.x, 2007, 2009 IB 6.x, 7.x IB 6.x, 7.x, 2007, 2009, XE, XE3, XE7, FB IB 6.x, FB IB 6.x, 7.x, FB
言語 英語 マルチリンガル 日本語 英語 英語 日本語 日本語
日付 -
2015/08/11
10:53:32
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
conf レジストリ


IBX のバリエーション

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

  Delphi 5 Delphi 6 Delphi 7 Delphi 2005 BDS 2006 Turbo Delphi Delphi 2007 Delphi 2009 Delphi 2010 Delphi XE Delphi XE2
ver 対応IB ver 対応IB ver 対応IB 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
12.12
(13.13)
5.x / 6.x / 7.x /
2007 / 2009
14.13
5.x / 6.x / 7.x /
2007 / 2009
16.16
5.x / 6.x / 7.x /
2007 / 2009 / XE
最新DL 5.04
(SP1必須)
5.x / 6.x 6.11 5.x / 6.x / 7.x /
2007
7.11 5.x / 6.x / 7.x /
2007
9.11 5.x / 6.x / 7.x /
2007
10.11 5.x / 6.x / 7.x /
2007
10.11 5.x / 6.x / 7.x /
2007
- - - - - - - - - -
製品付属
(Trial含)
5.0.9
(IB 7.5 付属)
5.x / 6.x / 7.x 6.11
(IB 2007 付属)
5.x / 6.x / 7.x /
2007
7.11
(IB 2007 付属)
5.x / 6.x / 7.x /
2007
9.11
(IB 2007 付属)
5.x / 6.x / 7.x /
2007
10.11
(IB 2007 付属)
5.x / 6.x / 7.x /
2007
10.11
(IB 2007 付属)
5.x / 6.x / 7.x /
2007
- - - - - - - - - -

 Delphi 7 の IBX が 6.0 になっているのは、Delphi 6 の IBX 6.0 で日本語化した IBXConst.pas をそのままコピーしたからだと思われます(本当は 7.03 ではないかと...)。

 Delphi 2010 の IBX は 12.12 になっていますが、Delphi 2009 の IBX 12.12 と同一ではありません。バグ修正が行われており、各データセットには EmptyAsNull というプロパティも追加されています。これは IBX 派生コンポーネントや Delphi 5 に付属の IBX にある BlanksToNULL プロパティと同一のものです。このプロパティは DBGrid 等で空白が入力された時に "NULL とみなす" か、"空文字列とみなす" かを切り替えます。なお、Delphi 5 に付属の IBX にある BlanksToNULL はマトモに動作しません。

 IBX は 5 以降、下 2 桁がバージョンになっています。実際、IBX 5.04 / 6.04 / 7.04 は対象となるコンパイラが違うだけで、IBX としては同じもの (ver 4)になります。

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

バージョン バージョン固有の機能 備考
IB 6.5 専用 (なし) つまり、6.x対応。
IB 7.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 の関数定義のみ。コンポーネントからは一切使われていない。
IB 7.1 専用 isc_release_savepoint
isc_rollback_savepoint
isc_start_savepoint
DLL の関数定義のみ。コンポーネントからは一切使われていない。
IB 7.5 専用 TIBConfigService.ExecuteSQL(SQL : String);
TIBSecurityService.ExecuteSQL(SQL: String);
内部で DB の ODS バージョンを確認している。ODS バージョンが 11.2 以下では動作しない。
IB 7.51 専用 (なし)  
IB 2007 専用 isc_dsql_batch_execute_immed
isc_dsql_batch_execute
DLL の関数定義のみ。コンポーネントからは一切使われていない。

 「IBX は将来において Firebird に接続できる保証がない」 と言われて、はや数年経ちますが、未だに問題は出ていません。"Delphi XE2 + IBX 16.16" で Firebird 2.5 / 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 へ接続できるハズです...「絶対」とは言い切れませんが。

See Also:


Windows Vista / 7 での動作

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

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

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

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

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

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

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

See Also:


XE2 以降の IBX

 XE2 以降の IBX は 64bit / OSX に対応し、FireMonkey で利用する事もできます。

 幾つかのコンポーネントに ServerType プロパティが追加されていますが、コンポーネントを動的作成した場合には ServerType が自動で設定されません (内部では ServerType が空だったら "IBServer" とみなすようになっているようですが、実際には明示的に設定しないとエラーになる事があります)。

 等から派生しているコンポーネントを動的作成する際には、トラブルを未然に防ぐために、ServerType を都度指定した方がいいでしょう。

 ServerType プロパティには "IBServer" あるいは "IBEmbedded" が指定できますが、Firebird で使う場合には Embedded Server であっても "IBServer" を指定します。


総括

 総合的に考えると、

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


 BACK