Golang、GinでさらっとWebサイト作ってみる

どーも、フリーランスエンジニアのyutaです。

今回はGinというGolang製のWebフレームワークでWebサイトを作ってみたいと思います。

Ginとは

GinとはGolang製のWebフレームワークです。パフォーマンスにも優れ、現在も頻繁に更新がおこなれています。

またGithubのスター数が一番多いのもGinです。

私も以前にGinを採用したGolang案件に参加したことがありますが、日本でも実際に案件で採用してる企業もあります。

Ginインストール

前提としてGolangが既にインストール済みで進めていきます。もしまだGolangをインストールしていなかったら、下記URL等を参考にインストールしてくだい。

参考:MacにGoをインストールする

パッケージインストール

//ディレクトリを作り移動します(ディレクトリ名は任意です)
$ mkdir go_gin_tutorial && cd go_gin_tutorial

//go mod を初期化します。
$ go mod init go_gin_tutorial

//ginパッケージのインストール
go get -u github.com/gin-gonic/gin

Ginの起動とブラウザへの出力

下記のようなファイルを作成します。内容としては公式リポジトリの参考そのままです。

package main

import "github.com/gin-gonic/gin"

func main() {
	r := gin.Default()
	r.GET("/", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"message": "Hello World",
		})
	})
	r.Run()
}

下記コマンドで実行します。

$ go run main.go

これで、127.0.0.1:8080にアクセスすればメッセージが表示されます。

ちなみにセキュリティソフトなどが起動してるとうまく表示できないこともあるので、その場合は一時的に止めるとかしてください。

HTMLやら静的ファイルを使ってLP作ってみる

このままでは味気ないので、htmlやcss、jsファイルも用意してLPを作ってみます。

ソースはGithubにリポジトリ作ったので良かった見てください。

さらっと作りたかったので見た目は無料のこちらのbootstrapテンプレートを使ってみました。

main.goは正直そんな変わってませんが、こんな感じになりました。

package main

import "github.com/gin-gonic/gin"

func main() {
	r := gin.Default()
	r.LoadHTMLGlob("templates/*") //ここでhtmlファイルのパス指定
	r.Static("/assets", "assets") //ここがcss、js、image等のパスを指定

	r.GET("/", func(c *gin.Context) {
		c.HTML(200, "index.html", gin.H{
			"message": "Hello World",
		})
	})
	r.Run()
}

正直、ルーティングの機能なども使ってないので、実際の開発等で使える実装ではないですが、まぁLPだけであればこれだけでいけます。

ちなみにこんな感じの見た目に仕上がってます。

最後に

ちょっとバックエンドで本格的に使ってみようと思います。