Route54

技術や好きなものの話をします

BigQuery Emulator をアップデートしました

BigQuery Emulator の v0.6.0 をリリースしました。

今回のリリースでは、Recidiviz社@ohaibbq さんが多大な貢献をしてくださいました。Recidiviz社ではかなり前から BigQuery Emulator を使ってくれているようで、以前から Issue や DM などでそのことを伝えてくれていましたが、@ohaibbq さんが今Qエミュレータの改善にコミットできるということで、 Recidiviz社側で fork して使っていたものに加えていた patch をたくさん送ってくれました。

かなり多くの改善が入っているので、以前エミュレータを試して動かなかったクエリを再度試す良い機会かなと思っています。

@ohaibbq さんからは、嬉しいことに今後も貢献してくださると言っていただけているので、今後の改善も速いペースで進んでいくと思います。素晴らしい技術力に感謝しっぱなしです( ちなみにこちらが反応するとどの時間でも爆速で答えてくださるので、いつ寝てるんだと心配になっています )。 BigQuery Emulator の Window関数のパフォーマンス問題などを改善するために、 mattn さんの go-sqlite3 に PR を送って Window関数をカスタマイズできる機能を入れようとしてくれたりもしています。これが入るとより BigQuery Emulator がカバーできる範囲が増えるので注目です。

そして、実は今 go-zetasql の cgo 依存をやめて、WebAssembly ベースのバインディングに移行しようとしています。Pure Go化すると、現在ライブラリのインストール時に ZetaSQL のビルドをしている処理が要らなくなるため、爆速でインストールすることができます( ただし、使用時に wasm のインスタンス化のためにコンパイルが走るので、Cache するとかしないとオーバーヘッドがあります )。 wasm の Runtime は wazero を使うつもりです。 ちなみに Go で wasm を利用することで Pure Go 化しているプロジェクトはすでにいろいろあって、 https://github.com/ncruces/go-sqlite3 も wazero を使って Pure Go 化を実現しています。 go-zetasql を wasm ベースにしたいというアイディアは1年以上前からあったのですが、実装のために必要なツールや実例がそろってきたことで、晴れてこの度やる気になりました。

go-zetasql を wasm 化する際、 ZetaSQL のバージョンも最新にし、かつ半自動的に追従する仕組みも入れるつもりです ( コマンド一発で新しい ZetaSQL が使えるようになるもの )。そのための自動生成の仕組みなどを含めて現在実装中です。

go-zetasql が参照する ZetaSQL が最新になるととても嬉しいことがあって、Cloud Spanner の DDL を Parse できるようになります。 これはどういうことかというと、BigQuery と Cloud Spanner の SQL / DML / DDL をパースできるPure Go のライブラリが手に入るということです。

嬉しいですよね?ということで、go-zetasql の更新も含めて今後の BigQuery Emulator にご期待ください。

また、Recidiviz社以外にも、多くの会社さんに使っていただいているのを観測しています。 ブログなどで紹介してくださるのはとても嬉しく、開発の励みになります。 全ての記事についてコメントできているわけではないのですが、ちゃんと見ています。いつもありがとうございます。

ちなみに、 BigQuery Emulator は Google から特に支援を頂いていたりはしません。 Google はエミュレータの開発に4年前くらいにやる気は見せていますが、その後何もアクションをとっていません。 自分が半年間20%くらい業務時間で作業したくらいで作ったことを考えると、4年かかって何も出てこない以上、残念ですが今後も Google からのエミュレータ提供には期待できなさそうです。 なので、これからも BigQuery をエミュレーションする場合は拙作のエミュレータを使っていくことになりそうです。 そういう意味でも、応援いただければ嬉しいです。

ここからは、最近思った愚痴を書きます。

自分は割と作っているソフトウェアについてエゴサしたりするんですが、そういう中でちらほらと使ってみた投稿を見ることがあります。 Twitter で検索すると日本人の投稿が引っかかりやすいのもあって、日本の方の使用事例を目にすることが多いのですが、それらを見ているとなんとなく、例えば BigQuery Emulator は使って( 知って ) るけど、作者(自分) のことは知らないという雰囲気を投稿から感じることがあります。

「作品は知ってるけど誰が作ってるかは知らない」みたいなことはソフトウェアに限らずどの業界でもよくあることかなとは思いますが、自分がちょっと悲しいなと思ったのは、「それを日本人が言っていること」でした。

自分は、オリンピックで日本人が活躍すると嬉しいと思う感覚で、同じ日本人が作るソフトウェアに対して感銘を受けます。 「自分と同じ日本で生まれ育った人がこんなすごいものを作れるんだ」みたいなやつです。

今は GitHub のプロフィールをちらっと見ればどんな人が作ってるのかすぐわかる時代なので、自分はそうやって素晴らしい開発者を知っては嬉しくなります。そして自分がこういうタイプなので、海外の方が同じ発言をしているのは特になんとも思わないのですが、日本の方の発言が気になってしまうのです( 我ながら面倒くさいこと言ってるなとは思います )。

これは、ソフトウェアの話を一歩離れると自分自身もよくやってしまっていることなので、忘れないようにしたいです。 細かい話ですけど、こういうところからちょっとでもOSS開発者が元気をもらえたりする機会が増えると良いですね。