9.9 サードパーティーのライブラリを使ったあれこれ

本節ではデータベースに関するサードパーティーのライブラリについて、周辺の話題を紹介します。ライブラリ自体のAPIの使い方は割愛します。「9.1  データベースの基本的な利用法 」でも説明した通り、便利なORMやサードパーティーのライブラリを使っても最終的には database/sql パッケージに行き付きます。より便利に開発できるように database/sql パッケージをラップしたさまざまなライブラリが開発されています。

9.9.1 サードパーティーライブラリの分類

サードパーティーのライブラリと一口にいっても、大きく2種類に分けられます。1つがサードパーティーのAPIで動的にSQLを組み立てる方法、代表的なライブラリには Gorm があります。もう1つがデータベースのスキーマやクエリー自体をベースにして、静的なクエリーを発行するコードのコードを生成する方法、代表的なライブラリとして kyleconroy/sqlc があります。この2つの中間として jmoiron/sqlxvolatiletech/sqlboiler などのライブラリがあります。

note

GitHubのstarの数やORMの知名度としては Gorm が有名ですが、筆者の周りのプロジェクトで Gorm を使って開発していた人たちからは Gorm の挙動に悩まされている声をよく聞きます。

9.9.2 スキーマドリブンでアプリケーションを開発

アプリケーションを設計するときに、アプリケーションを構成するテーブルにどのようなものがあるか、またテーブルのリレーションがどのようなものかはとても重要です。ER図はアプリケーション設計の重要な要素の1つですが、整頓されたER図を見れば、ある程度どのようなシステムかがわかります。アプリケーションが拡張されていくにつれ、データベースのスキーマも進化していきます。テーブルやスキーマが変わったときに、Goの実装と乖離がないように運用する必要があります。 ...