X(Twitter) Zenn GitHub RSS 共有

Fiber作業メモ

作成日時:2025-07-05
更新日時:2025-07-05

Goインストール

All releases - The Go Programming Language

Fiberインストール

Welcome | Fiber

go install github.com/gofiber/fiber/v2@latest

Go

# 初期化
go mod init takc-tech.com/local
# パッケージ編集
go mod tidy
# 実行
go run xxx.go
# 使っていないmモジュールを消す
go clean -modcache

FiberのHMR

🤔 FAQ | Fiber

air

go install github.com/cosmtrek/air@latest
air init
air

sqlc

Installing sqlc — sqlc 1.29.0 documentation

sqlc generate

MySQL

go get github.com/go-sql-driver/mysql

Goの逐語的文字列リテラル

バッククォート。

DBの違い

query.sqlにて、schema.sqlに存在するテーブルを指定しているのに、
テーブルが存在しない旨のエラーが出る。

query.sql:1:1: relation "t_article_tags" does not exist

途中までMySQLを想定して実装していたが、途中でSQLiteに変えた。
原因としてはschema.sqlの書き方。
テーブル名を囲っているバッククォートを消したら治った。
engineがMySQLなら通ったが、SQLiteでは通らなかっただけ。

SQLite3

SQLエディターを使ってると更新処理で「database is locked」になる。
複数プロセスでアクセスしたから、ロックがかかったっぽい。
SELECTは見られる。

journal_mode=WALをDSNに加える。
SQLiteのジャーナルモード - なべ’s blog

もしかしてDBeaverでテーブルを見ている状態で、アプリからクエリをたたいたのも原因だったりする?
これだわ。

Goのnilチェック

DBアクセスが10回の場合、10回nilチャックをするというならば、
メソッドを分割して、上位層の可読性を挙げるべきか。

nilチェック1
nilチェック2

nilチェック10
よりは

a() とnilチェック
b() とnilチェック
c() とnilチェック

func a() error{
nilチェック1
nilチェック2
nilチェック3
return err
}

ネストが深くなりがち

早期リターンや、ヘルパー関数を使う。
ネストが深いと感じている時点でSRPに違反している可能性がある。

SSH

ssh user@host

go fiber 同時起動 防ぐ

すでにポートが使われていたら、後発のFiberは落ちるから気にしなくていい