2025年12月、first-go で Go を本格的に触り始めた。TypeScript 中心の開発からの転換点で、「次に自前で何か書くなら Go かな」という気持ちで始めた。
動機ははっきりしていて、バイナリ1つで配布できるビルドツール / SSG を自前で書きたかった。TypeScript だと Node ランタイムや依存が前提になるのが、ツール配布だとちょっと重く感じていた。
何を作ったか
ただ言語を素振りするだけだとつまらないので、Go + HTMX の Web アプリ雛形 を GitHub Template として組んだ。
- Go 標準の
net/http(重いフレームワークは入れない) html/templateでサーバー側レンダリング- HTMX で、JS フレームワークなしの軽いインタラクション
DB_MODEで memory / SQLite・Turso を切り替えAUTH_ENABLEDで Cookie セッション認証の有無を切り替え- handler / service / repository でレイヤ分割
ハマった/学んだところ
最初に効いたのは、「ハンドラは薄く、ロジックは service に」 という分け方を最初から徹底したこと。Repository パターンにしておくと、memory 実装と SQLite 実装を DB_MODE で差し替えられて、プロトタイプから永続化ありへ移すのが楽だった。
途中で全体を日本語化したり、HTMX 対応で認証ミドルウェアを直したりしつつ、最後にユニットテストを足してカバレッジを計測した。config / repository / service / middleware / handler それぞれにテストを置いて、テスタブルに切ってあると Go は素直に書ける、という手応えがあった。Makefile に run / build / test / coverage をまとめて、make で回せるようにしたのも地味に快適。
Go は CLI / バッチ / SSG / 軽い Web に向く、というのが触ってみての感想。ランタイムを持ち歩かなくていいのが、やっぱり配布で効く。
おわり
この first-go が、2026年1月の go-static-site(このサイトの自前 SSG)に直接つながった。最初の素振りを「捨てコード」じゃなくて再利用できる雛形にしておくと、次の本番にそのまま効く、というのを実感した回。