Go言語のフレームワークentにER図生成ツールが導入されたので使ってみた

大瀧

2024.01.04

1

この記事では、Go言語のフレームワークであるentにコマンド一つでスキーマファイルからER図を生成してくれるツールが追加されたことについて紹介します。

TL;DR

Entのスキーマファイルを元に生成したER図のリンクは以下のコマンドで作成できます。

$ go run -mod=mod ariga.io/entviz ./path/to/ent/schema


実際に使ってみた

1. go mod initで確認用プロジェクトを初期化する

go mod init で確認用プロジェクトを初期化します。

$ go mod init github.com/rotemtam/ent-blog-example


新しいプロジェクトが作成されたことを確認します。

go: creating new go.mod: module github.com/rotemtam/ent-blog-example


2. アプリケーション・データ・モデルを作成する

Entを使用してアプリケーション・データ・モデルを作成するため、go get を使って取得しましょう。


$ go get -u entgo.io/ent@master

3. Ent CLI を使用して2種類のエンティティのモデルを初期化する

Ent CLI を使用して、このチュートリアルで扱う2種類のエンティティ(UserとPost)のモデルを初期化します。


$ go run -mod=mod entgo.io/ent/cmd/ent new User Post

4. 生成されたschemaファイルに設定を追記する

./ent/schema 配下にあるpost.go と user.go にそれぞれ以下を追記します。


user.go

// Fields of the User.  
func (User) Fields() []ent.Field {  
  return []ent.Field{  
   field.String("name"),  
   field.String("email").
      Unique(),  
   field.Time("created_at").
      Default(time.Now),  
  }  
}  
  
// Edges of the User.  
func (User) Edges() []ent.Edge {  
  return []ent.Edge{  
   edge.To("posts", Post.Type),  
  }  
}


post.go

// Fields of the Post.  
func (Post) Fields() []ent.Field {  
   return []ent.Field{  
      field.String("title"),  
      field.Text("body"),  
      field.Time("created_at").
            Default(time.Now),  
   }  
}  
  
// Edges of the Post.
func (Post) Edges() []ent.Edge {  
   return []ent.Edge{  
      edge.From("author", User.Type).  
         Unique().  
         Ref("posts"),  
   }  
}


5. コマンドを実行してER図のリンクを生成する

以下のコマンドを実行し、ER図のリンクを生成してブラウザで確認します。

$ go run -mod=mod ariga.io/entviz ./ent/schema


以下のようなページが開ければ完了です。

まとめ

schemaファイルさえ書いていればコマンド一つでER図が生成できるので非常に便利な機能でした。

Entはコンスタントにこういった便利な機能のアップデートが行われているので、これからも定期的にリリースノートをチェックして追っていきたいと思います。

この記事をシェアする