Home

Sessions

Timetable

Floor Guide

Staff

English

Information Schemaから自動生成する型付きORM spannent

Room A : LT4

GoでRDBを使う際には標準のdatabase/sqlがありますが、ORMを使用することもあります。 MySQLやPostgreSQLのような広く普及したDBにはSQLドライバが存在したり、対応したORMが多数存在します。 しかしNewSQLのような新しいDBにはそれらが存在しないことも多いです。 またGoはパターン化されたコードを自動生成する機構を言語の標準機能だけで作りやすい特徴があります。 特にORMの領域では近年有名なEntというパッケージがあります。 EntではGoでテーブル定義を行い、各テーブル・カラムに対応した型付きのコードを自動生成する特徴があります。 自動生成されたコードは基本的にメソッドチェーンで記述することができます。また マイグレーション機能も存在するため、Goのテーブル定義をDBに反映することもできます。 Gormや他の自動生成ではないORMと比較し、存在するテーブル・カラム名や型がコード上に定義されているため、DDLを参考せずともGo上だけでテーブル定義が把握できることや、名前や型を間違えにくいことが利点です。 しかしEntも対応したNewSQLの種類は少ないです。 そこで今回はNewSQLの一種であるGoogle Cloud SpannerのORMを自動生成しました。 生成されるコードは上述の利点からEntを参考にしています。 また最小限の機能を持つORMとしたかったため、マイグレーション機能は持たせていません。 そのためテーブル定義はGoで定義するのではなく、Information Schemaから読み取ることで、実際のDBのテーブル定義との同期を図っています。 本セッションを聴くことで、Spanner以外にもORMをGoで作成する際の実装ヒントを得ることができます。 例えばチームによってSnowflakeやBigQueryのORMを作成したいモチベーションがある場合、参考にすることができます。 またORMに限らずテーブル定義所の生成やテストコードの生成等のGoで自動生成する強みとアイデアを知ることが可能です。

LT(5min)
Yuki Kume

Yuki Kume

株式会社サイバーエージェント

2021年に株式会社サイバーエージェントに新卒で入社。 一年ほど広告配信基盤(DSP)の運用を経た後、小売DX領域に異動し、バックエンドの開発を行っている。

ツイート
gopher conductorgopher drummergopher trumpetergopher pom pomgopher flower blue