Go(Golang)は、Googleが開発したプログラミング言語で、シンプルな文法と高いパフォーマンスが特徴です。Webアプリケーション開発においても、Goは高速な処理と効率的な並列処理を実現し、NetflixやUberなどの大規模サービスでも採用されています。
この記事では、Goを使ったWebアプリケーション開発の基本から実践的なテクニックまでを解説します。
目次
ToggleなぜGoでWebアプリケーションを開発するのか?
Goは、以下の理由でWeb開発に適しています。
- 高速なコンパイルと実行速度 → C言語に近いパフォーマンス
- シンプルな文法 → 学習コストが低く、チーム開発に最適
- 強力な標準ライブラリ →
net/http
パッケージで簡単にWebサーバーを構築可能 - 並列処理(Goroutines) → 高負荷なアプリケーションでもスムーズに動作
特に、マイクロサービスやAPIサーバーの開発において、Goは高い評価を得ています。
GoでWebアプリケーションを構築する手順
1. 開発環境のセットアップ
Goのインストールは公式サイト(Go公式サイト)から行えます。
# macOS (Homebrew利用)
brew install go
# Windows (Chocolatey利用)
choco install golang
2. 基本的なHTTPサーバ゙ーの作成
Goの標準ライブラリnet/http
を使えば、数行でWebサーバーを立ち上げられます。
package main
import (
"fmt"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, Go Web App!")
}
func main() {
http.HandleFunc("/", handler)
http.ListenAndServe(":8080", nil)
}
このコードをmain.go
として保存し、go run main.go
で実行すると、http://localhost:8080
で動作確認できます。
3. ルーティングとテンプレートエンジンの利用
より実践的なアプリケーションを作るには、ルーティングライブラリやHTMLテンプレートの活用が重要です。
人気のルーティングライブラリ
ライブラリ | 特徴 |
---|---|
Gin | 高速で軽量、API開発に最適 |
Echo | シンプルで拡張性が高い |
Chi | 軽量でRESTful API向け |
HTMLテンプレートの例
Go標準のhtml/template
を使うと、動的なWebページを生成できます。
func homeHandler(w http.ResponseWriter, r *http.Request) {
tmpl := template.Must(template.ParseFiles("views/home.html"))
data := struct {
Title string
}{
Title: "Go Web App",
}
tmpl.Execute(w, data)
}
4. データベース接続(PostgreSQL / MySQL)
Goでは、database/sql
パッケージやORM(GORM)を使ってデータベース連携が可能です。
import (
"gorm.io/gorm"
"gorm.io/driver/postgres"
)
func main() {
dsn := "host=localhost user=gorm dbname=gorm password=gorm sslmode=disable"
db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})
if err != nil {
panic("Failed to connect database")
}
// 自動マイグレーション
db.AutoMigrate(&User{})
}
実践的なGo Webアプリケーションの構成
本番環境で利用する場合、以下の要素を考慮しましょう。
- ロギング → Zap や標準の
log
パッケージ - 設定管理 → Viper
- テスト → 標準の
testing
パッケージ + Testify - デプロイ → Docker + Kubernetes またはサーバーレス(AWS Lambda)
まとめ:GoでWeb開発を始めよう
Goは、シンプルさとパフォーマンスを両立した言語であり、Webアプリケーション開発にも最適です。
- 初心者向け → 標準ライブラリ
net/http
で基本を学ぶ - 中級者向け → GinやEchoでAPI開発
- 上級者向け → マイクロサービスや分散システム構築
さらに学びたい方は、Go公式ドキュメントやA Tour of Goを参考にしてください。
さあ、今日からGoでWebアプリケーションを作ってみましょう!