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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

もー、博士ったら!でも、自動化で空いた時間で、もっと高度なことができるようになるので、むしろ嬉しいです。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。