GoのGeneric Repositoryパターンで重複コードを90%削減した話

高橋 蓮
高橋 蓮
Backend Developer

高橋です。

LinkPointのバックエンドはGoで書いています。328テーブルを扱う中で、CRUD操作の重複コードが課題でした。

課題

テーブルごとにRepository構造体を作ると、ほぼ同じコードが大量に生まれます。

解決策: Generic Repository

Go 1.18で導入されたGenericsを活用し、型パラメータ付きのRepositoryを設計しました。

type GenericRepo[T any] struct {
    db *sql.DB
}

func (r *GenericRepo[T]) FindByID(id string) (*T, error) {
    // 共通のFindByID処理
}

効果

※ この記事の情報は執筆時点のものです。

← ブログ一覧 高橋 蓮 のプロフィール →