SSブログ

Firebird の思い出(後半) [Firebird]

これは Firebird Advent Calendar 2015 の http://qiita.com/advent-calendar/2015/firebird 13 日目の記事で、 http://nakagami.blog.so-net.ne.jp/2015-12-11 の続きです

2008年になって、 python の Firebird データーベースドライバー
KInterbaseDB のメンテナンスが危機的状況ということを知って、ずっと気になっていました。
そして、2008年12月に Python3.0 が出て、今後、データーベースドライバーを
Python3 対応にしていかないといけないであろうに、その目処が全く立っていない
という状況になってしまいました。

2008年後半から2010年前半のどこかのタイミングで、このドキュメント(当時は Githubでないどこかにあった)を発見しました。
https://github.com/cincuranet/FirebirdSql.Data.FirebirdClient/tree/master/Documentation
このドキュメントを見ただけではわかりませんでしたが、
isql とサーバーの間で、どんなデータをやり取りしているか調べるスクリプトを書いて、
実際にやり取りされるデータと上記のプロトコルドキュメントを見比べると、
うっすらと、データーベースドライバーが書けそうな気がしてきました。
現実的な路線として
- 不具合があっても、機能的に KInterbasDB に劣っていてもよいので、とにかく動くもの
- C 拡張は難しいので、 pure python のもの
- Python2 で動かなくてよいので、Python3 で動くもの
を目標にしました。

2010-09-26 に Protocol Version 10 (Interbase6.0相当)で
Python3 で動作する最低限のものができて、 PyPI にリリースできました。
https://pypi.python.org/pypi/firebirdsql/0.1.0
Python2 で Firebird に接続したい人は、KInterbasDB を使ったほうが
安定して速いので、pure python のドライバー使わないだろうと思ったのですが、
リリース直後の反応は、「Python2 では動かないのか?」という問い合わせが多くて、
ほどなく Python2 でも動くようになりました(しました)。

最初のリリース後、Firebird 公式の python 用ドライバー FDB の開発が始まりリリースされました。
もし、FDB があったら、python のドライバーを書こうと思わなかったでしょう。
僕がリリースするまで、誰も python のドライバーを書き直そう(もしくは KInterbaseDB を Python3 で動くようにしよう)
と思わなかったことは、結果として僕にとってラッキーなことでした。
・・・と書くと、すんなりと完成したようにも見えるかもしれませんが、
完成するかどうかわからない状態で試行錯誤している時には、
「ここまで時間をかけて完成しなかったら、今までの労力が無駄になってしまう」
というあせりはありました。完成して本当に良かったと思っています。

あらためて見直してみると、2008年から2010年中頃まで2年半は、断続的にではありますが
プロトコルの資料探したり、Interbase6 の Developper's Guide を読んだり、
あーでもないこーでもないとパケット観察しながら思考錯誤してたりしてたようです。
思うに、これだけ長く挫折せずに続けられたのは、代わりになる Python のドライバーが
出現できなかったことと、Firebird 本体の開発が停滞していて「まだ追いつける」という
気がしてたからだと思います。停滞万歳。

その後、2013年の8月頃に GO言語の勉強をしてみたら、思いのほか書ける気がしました。
http://nakagami.blog.so-net.ne.jp/2013-08-24
サンプルコードは書いたので、次は習作として何か使える(使われる)ものを書きたいと思いました。
そして書いたのが、Firebird のデーターベースドライバーでした。
(GO言語のよいドライバーがなかったので)
この時は、 プロトコルの理解も進んでいて Python の動く実装もあったので、思ったよりすぐ動くようになりました。
ちゃんとした記録がなくてよくわからないのですが、2014-04-14 の頃には一般に知られるようになったようです
http://www.firebirdnews.org/another-firebirdsql-driver-for-go-golang/

仕事でちょっと使って、いつかまた役に立つだろうと Firebird の開発状況のウォッチを続け、
気がつくと、Firebird を使わずに、 Firebird のドライバーを書いてばかりいて、
(しかも、仕事には関係なく)なんだか不思議なことです。
コメント(0)  トラックバック(0) 
共通テーマ:日記・雑感

コメント 0

コメントの受付は締め切りました

Facebook コメント

トラックバック 0