ちょっとデスマっていたので、雑文を書く暇がなかった。
何をやっていたかと言えば、MONTSUQIのデータベースレイヤにつながるODBCドライバを書いていた。当然ターゲットはWindows。
実はこれは私が産まれて初めて書いたWindows上のプログラムだ。つまり、
初めて書いたWindowsのプログラムはODBCドライバ
だということ。と言えば、Linuxを入れて初めて作ったプログラムはキーボード用のデバイスドライバだった。
件の仕事(仕事だ)をするまでは、私はただの一行も、Windows上のプログラムは書いたことがなかった。どれくらい書いたことがないかと言えば、Windows上ではそもそも
「メモ帳」以上のエディタを持っていない
のだ。まぁそりゃ原理的にはメモ帳でもプログラムは書けるはずだけど、とても「快適なプログラミング環境」とは言えないだろう。それに「Windowsのプログラムって、stdioどこになるの?」とか悩んでたくらいだし。「RCって何?」とか思ってたし、「Hello World」すら書いたことがない。
ODBCだって、「そーゆーものがある」ことは知っていたし、原理とか位置付けとかはわかっていたけれど、用がないから使ったことがなかった。また、APIとしては知っていても、ExcelやAccessと組み合わせて使うとかわからなかったし。
じゃあなんでそんな仕事を引き受けたかと言えば、
出来るという見通し
があったからだ。また、それも「仕事としてペイする程度の生産性」が確保出来る見通しだ。
技術的見通しはどうだったかと言えば、作るソフトは例によってGPL程度のライセンスでオープンソースになるものなので、オープンソースなソフトなら参考にしてもコードを持ち込んでも問題ない(当然ライセンスの整合性は気にしなきゃいけないけど)。となると、いくつかの元ネタが存在している。今時のメジャーなデータベースには、たいていODBCドライバが存在している。それを参考にすればいい。
普段Windowsの開発をしているわけではないから、開発環境は持っていない。どんどんそんな仕事があればMSDNでも何でも入るんだけど、単発に近いのでそれもちょっと。かと言ってSDKのExpress版を仕事に使うのもどうかと思うので、
MinGw
が使えないかと検討した… ってのは嘘で、SQliteのODBCドライバがMinGwで作られていることを知っていたので、「じゃあ同じようにやればドライバの参考にもなるし、開発環境の問題がない」という見通しだったのだ。そういった裏付けがあるから「引き受けてもいいかな」と思ったわけだ。
実のところ、SQliteのODBCドライバは、それ程綺麗なコードだとは思えない。それでも、必要な機能は全てあるし、1万行ちょいくらいの長さで読むのはそれ程苦でもない。結構ベタなコードになっていて泥臭いのだけど、その分見渡す苦労がない。
PostgreSQLのは綺麗っちゃー綺麗なんだけど、なまじ綺麗なもんだから、細かい差異を気にする作業にとってはあまり元ネタとして使えない。「綺麗な階層化」というのは正しいアプローチではあるけれど、本当に完全に綺麗になっているという保証がない限り、
隠蔽された部分も含めて暴く
という作業が要求されてしまうので、こういった作業のベースにするのは容易じゃない。何度か他のものに移植された実績とかあれば、「綺麗な階層化」も信用出来るけど、その実績がない「綺麗な階層化」は他人にとっては役に立たなかったりするものだ。いろいろ疑いを胸に抱きつつコードを読む時には、むしろベタな書き方の方が落とし穴は少ない。
という技術的なアプローチの話は実はどーでも良くて、重要なのは、
先達となるものがある
ということだ。これがあれば、自分の普段の「射程」よりも、遠くに届かせることが出来る可能性が出て来る。
もう一つ大事だったのは、ODBCドライバと言えども
単なるプログラム
だということ。細かいトリックを積み上げて作るような、工芸品のようなものではなく、勝負強さのようなものが要求されるようなものでもなく、「神業」が要求されるようなものでもなく、「言われたこと」を着々と片付けて行けば必ず出来上がるタイプのプログロラムに過ぎないということだ。単なるAPIを、仕様に従って作ればそれでいいわけだ。
これはさらにどういったことかと言えば、
やれば出来る
という見方が出来るということ。だから、問題解決と金のために必要なことは、「やる」ということであって、「才能」の類ではない。さっき「遠くに届かせることが出来る可能性」と書いたのはそのことで、「先達」によって裏付けを得ていれば、「やれば出来る」のだ。だったら、「出来る」ためにはやってみることだ。「可能性」を「現実」にするには「やる」しかないのだ。
現代で「射程」を長くするための方法はいろいろある。何らかの方法でそれが可能だとわかれば、実際にやるしかないのだ。
まぁこういったことをやったお陰で、自分の「射程」がかなり長くなった。出来そうに思ったことは、やってみて実績にする。ただそれだけのことなんだが。
なんだ。単なる言い訳か…。
ODBC ドライバを書いて「初めて書いたWindowsのプログラム」と言われてもなぁ。
なんだ、haveのクセに生意気なこと言いやがってwww
事実なんだからしょうがないじゃん。