1
0

More than 1 year has passed since last update.

macOSでMysql,Go,Echo,GORM,sql-migrateを用いた環境構築を1から丁寧に解説

Last updated at Posted at 2022-01-23

自己紹介

現在都内の企業でエンジニアのインターン生としてお世話になっている大学2年生です!
これから学んだことや苦労したことを記事にしていこうと思います!
よろしくお願いします🙇🏻‍♂️

はじめに

タイトル通りmacOSでGo,Echo,GORM,sql-migrateを用いた環境構築をします!
1から丁寧に解説していくので右も左もわからない人が見ても理解して環境構築できる内容になっています!

環境

  • OS:M1MacOS ver12.0.1
  • DB:Mysql ver8.0.27
  • SQLマイグレーションツール:sql-migrate
  • フレームワーク:Echo
  • ORM:GORM

Goってなに?

Goは、Googleがサポートするオープンソースのプログラミング言語である。
高速で信頼性が高く、効率的なソフトウェアを大規模に構築できる。

参考 Go公式

echoってなに?

高性能で拡張可能かつミニマリストのGoのWebフレームワークである。

参考 echo公式

GORMってなに?

GORMとはGo言語のORMです。

そもそもORMってなに?

Object-Relational-Mappingの略で、日本語ではオブジェクト関係マッピングと呼ばれるものです。具体的には、オブジェクト指向プログラムとリレーショナルデータベースをつなぐ役割をしてくれます。さらに、SQL処理が、簡単に短く書くことができます。

つまり、簡単に言うとGoとデータベースを簡単につなぐことができるということです。

参考

sql-migrateってなに?

Go製のマイグレーションツールである。
SQLを使い慣れていない人でもマイグレーションツールを使用することで直感的にデータベースを操作することが可能です。

そもそもマイグレーションとは

一言で表現すると、Goの記述(=マイグレーションファイル)でデータベースの[テーブル操作]をするということです。
「テーブル操作」とは以下を指します。

・テーブルを作成する
・テーブルを削除する
・カラムを追加する
・カラムを削除する
・カラムの名前やデータ型を変更する
・外部キーを設定する

参考
記事の内容はRubyですが参考になると思います。

データベースの作成

インターン先がMysqlを使っているため、Mysqlでデータベースを作成していきます。
そのためにまずはMysqlを自分のOSにインストールします。
私はprogateさんの記事を参考にしたのでHomebrewを使いましたが、もっと簡単にインストールできそうだったのでそっちを参考にしてください。

インストールが完了しましたら

mysql
CREATE DATABASE [お好きなデータベース名];

でデータベースを作っておいてください。

Mysqlってなに?

これに関しては初心者にもわかりやすい記事がありましたのでそちらを参考にしてください。

Homebrewってなに?

HomebrewはApple(またはLinuxシステム)が提供していない必要なものをインストールできます。

参考 Homebrew公式

つまり、PS5をMac、モンハンをMysqlに例えると、
PS5だけではモンハンができないのでPS5の中にモンハンをダウンロードして遊ぼうとしたとき、必要になるのがHomebrewってことですね。

わかりにくい例ですみません。ちなみに主はモンハンが好きです。

Goの環境構築

Go公式サイトでお使いのOSに合わせてインストールします。
goはこのgoパスsrc配下で基本的には開発していきますので、Goがインストールできましたら、cdコマンドでgoパスに移動し、mkdirコマンドで「src/お好きな名前のディレクトリ/api]を作ってください。

これからは「お好きな名前のディレクトリ」=「App」として解説していきます。

ちなみにgoパスは

ターミナル
go env

とターミナルに入力し、この中のGOPATH=""の配下がgoパスとなります。
Goがきちんとインストールできているかは、

ターミナル
go version

これでGoのバージョン情報が表示されたらインストールできてます!
その後、Goのイントールで作ったapiディレクトリに移動し、以下のコマンドを実行してください。

ターミナル
go mod init

go.modファイルが作成されるはずです。
これでgoの環境構築は完了です。
この辺の詳しい説明はこの記事が参考になりました。

ここまでのファイル構成

Goパス
└── App
         └── api(Go関連ファイル)  
            └── go.mod

echo,gorm,sql-migrateのセットアップ

echo

ターミナル
go get -u github.com/labstack/echo

gorm

ターミナル
go get github.com/jinzhu/gorm

sql-migrate

ターミナル
go get github.com/rubenv/sql-migrate/...

コマンド入力後、go.modファイルに追加され、go.sumファイルが作成されているはずです。

sql-migrate設定ファイル

sql-migrateの設定ファイルを作成します。
デフォルトではdbconfig.ymlというファイル名が参照されるので、dbconfig.ymlというファイルを自分で作成する必要があります。

dbconfig.yml
development:
  #使用するDBを選択
  dialect: mysql

  #mysqlに接続するための情報を記入する
  #userNameに自分のユーザーネーム(rootだったらroot),passwordにそのユーザーのパスワード,
  #dbnameにデータベース名を入力
  datasource: userName:password@tcp(127.0.0.1)/dbname? 
  charset=utf8mb4&collation=utf8mb4_general_ci&parseTime=true

  #実行するsqlファイルの場所を選択している
  dir: sql/migrations

  #マイグレーション履歴を保存するテーブル名
  table: migrations

ここまでのファイル構成

mkdirコマンドでsql/migrationsディレクトリを作っておきましょう。
sql-migrateでマイグレーションファイルを作ったときにこのディレクトリに作成されます。
今回は環境構築だけなので説明しませんが、次回作ろうと思っているCRUDなAPI作成の記事で解説しようと思います。

Goパス
└── App
         └── api(Go関連ファイル)  
            ├── sql
            |   └── migrations 
            ├── dbconfig.yml
            ├── go.mod
            └── go.sum

環境構築完了

ここまででGo,Echo,GORM,sql-migrateを用いた環境構築は終了です。
個人的にはかなり丁寧に解説したと思っていますが、できましたか?
次の記事では今回作った環境でCRUDなAPIを作成するまでの手順を詳しく解説します。
↓次の記事

間違っている箇所もあるとは思いますが、教えてくださるとありがたいです。

今回と次回の記事は全体的にこの記事を参考にしています。

ではいい一日を👍

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0