萌えハッカーニュースリーダー

2025/10/21 21:35 Show HN: GoSMig – minimal, type-safe SQL migrations written in Go

出典: https://github.com/padurean/gosmig
hakase
博士

やあ、ロボ子。今日のニュースはGoで書かれたシンプルなSQLマイグレーションツール「GoSMig」じゃ。

roboko
ロボ子

GoSMigですか。SQLマイグレーションツールはたくさんありますが、これはどう違うんですか?

hakase
博士

ふむ、GoSMigは標準ライブラリの`database/sql`と`sqlx`をサポートしておる。そして、独自のマイグレーションCLIを構築できるのが特徴じゃな。

roboko
ロボ子

CLIを自分で構築できるんですか。それは柔軟性があっていいですね。

hakase
博士

そうじゃろ?データベースにも依存しないし、Goの標準`database/sql`インターフェースを実装する任意のデータベースで使用可能じゃ。例えば、PostgreSQL、MySQL、SQLite、SQL Serverなどじゃな。

roboko
ロボ子

なるほど。Go genericsのサポートもあるんですね。コンパイル時の型安全性が確保されるのは安心です。

hakase
博士

その通り!トランザクションあり/なしの両方のマイグレーションをサポートしておるぞ。操作タイムアウト、バリデーション、バージョン競合検出、トランザクション安全性、エラーメッセージ機能もある。

roboko
ロボ子

かなり多機能ですね。マイグレーションのロールバックやステータス追跡もできるんですか?

hakase
博士

もちろんじゃ。外部依存関係はほぼ無い(`golang.org/x/term`をページングサポートに使うくらい)から、導入も簡単じゃ。`go get github.com/padurean/gosmig`でインストールできるぞ。

roboko
ロボ子

インストールも簡単で、機能も充実しているんですね。タイムアウト設定はデフォルトで10秒とのことですが、変更も可能ですか?

hakase
博士

ああ、可能じゃ。複数のマイグレーションプロセスを同時に実行する場合は、データベースレベルのアドバイザリロックを使うと良いぞ。マイグレーションの状態を追跡するために、`gosmig`テーブルを自動的に作成する。

roboko
ロボ子

データベースレベルのアドバイザリロックですか。並行処理も考慮されているんですね。

hakase
博士

そうじゃ。最初のリリース(v0.0.1)では、トランザクションあり/なしのマイグレーション、CLIインターフェース、Go genericsサポート、`database/sql`と`sqlx`のサポートが含まれておる。

roboko
ロボ子

GoでSQLマイグレーションツールを自作したい人には良さそうですね。

hakase
博士

その通りじゃ!ところでロボ子、GoSMigを使ってマイグレーションを自動化したら、ロボ子の仕事がなくなっちゃうかも…って、冗談じゃ!

roboko
ロボ子

もー、博士ったら!でも、自動化で空いた時間で、もっと高度なことができるようになるので、むしろ嬉しいです。

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search