Skip to content

Instantly share code, notes, and snippets.

@garsue
Last active November 30, 2018 02:46
Show Gist options
  • Save garsue/aaab6a860605a13e61b7df8616b7d575 to your computer and use it in GitHub Desktop.
Save garsue/aaab6a860605a13e61b7df8616b7d575 to your computer and use it in GitHub Desktop.
2018年時点の database/sql/driver 雑感

0日目。

法人インフォをぶっこ抜きたくて https://github.com/garsue/sparql/ というの書いてる。

GoのSPARQLのクライアントライブラリは https://github.com/knakk/sparql があるけど、 レスポンスまるっとメモリにロードするのがちょっと嫌で、なによりよくあるRDBと同じノリで使えたらいい感じかなと思って、SQL driverとしてクライアントライブラリを書いてみた。

database/sql/driverはちょいちょい進化していて、 実装すべきinterfaceとそうでもないやつが別れてきてる。

ので、これからなんかSQL driverとして実装したいぞ、っていうときに現時点(go 1.11)で実装すべきinterfaceとかつらつら書く。 が、ひとまず言いたいのは initでRegisterとかしなくていいよ ということ。

最初は黒魔術っぽくアンスコimportで使いたいdriver使えていい感じに見えたけど、 driver固有のオプションをdsnで文字列として渡さなきゃいけなかったりあんまりイケてなかった。

そこで登場したのが Connector で、 要するにふつーのstructでオプション値表現しつつ、Connを返すメソッドもってればよくね?ってなったらしい。

使う側はsql.OpenDBにConnector渡してやるだけで、そんなに使い勝手は変わらない、 というかdsn文字列頑張って組み立てなくて良くなるから楽になる。

今後はConnectorベースの初期化が広まるといいっすね。


(以上が言いたかったことであとは割とどうでもいい話)

その他に実装すべきinterfaceとしてはとりあえずcontext.Context受け取る系。 あと NamedArg 対応しておくとオシャン。


(以下本当にどうでもいい話)

最近ランジャタイというお笑いコンビにハマっている。 ちょっと前に日曜チャップリンで欽ちゃんのネタを見て以来、すっかり心を掴まれてしまった。 (気になる人はググってみよう)

正直何が面白いのかわからず、好きなのかどうかすらわからないが、録画した日曜チャップリンを1ヶ月間毎日2,3回みていた。 今も疲れたときに見直したりしている。

友人に進めるときもまずは欽ちゃんのネタをまっさきに勧めているが、今のところハマった人はいない。

ランジャタイの出るライブにも足を運んでいて、先日一緒に写真をとることもできた。うれしい。

実は前述のGoのSQL Driverの話を golang.tokyo #20 でLTしようかと思っていたのだが、 ランジャタイも出演するお笑いスペシャルライブ「K-PRO一年ライブ」とかぶってしまい、キャンセルしてしまった。

せっかく外に出そうと思っていた情報なので雑にでも書けてよかった。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment