Go開発に最適な構成:TypeSpec + ogen + sqlc + orval + MSW + Docker Compose + Taskfile で爆速プロトタイピング

最近、Go(Golang) の開発プロジェクトでは以下のような構成を採用していて、開発体験がかなり快適になっている。


📝 TypeSpec:省量・高視認性・AIフレンドリー

TypeSpec は OpenAPI を生成するための DSL。記述量が少なく、構造がシンプルなので全体を把握しやすい。記述が冗長にならないので AI にそのまま投げても補完や変換がしやすい のが地味に便利。設計を進めるフェーズでのスピード感が全然違う。

最近やっと 1.0.0 が出たので安心して使えるようになりました。


⚙️ ogen:OpenAPI仕様に基づくバリデーションが神

OpenAPI から Go サーバーコードを自動生成してくれる ogen は、スキーマに基づいた自動バリデーション付きのハンドラを生成してくれる。形式チェック、型制約、minLength, enum, pattern などが一切の手書きコードなしでサポートされるのが最高。

ogen が interface を定義してくれるので、中身を実装していけば良いのでわかりやすい。


🗃️ sqlc:SQLファースト、型安全なDB操作

RDB には生SQLでアクセスしたい派なので sqlc を採用。スキーマとクエリを書くと、Goの型付き関数が自動生成される。ORMに頼らず、SQL最適化や複雑なJOINもコントロールしやすいし、IDE補完が効くのも安心。


🧰 Taskfile:Goでgo installできるシンプルビルド管理

Makefile より直感的で、YAMLベースで読みやすい。しかも Go 製なので、go install 一発でプロジェクトに導入できるのが最高にラク。

go install github.com/go-task/task/v3/cmd/task@latest

で使えるし、CI にもそのまま組み込みやすい。


🖼️ 開発時のために react + mui で ui を構築。 orval で API アクセス。MSW モックして GitHub Pagesにも展開

実装した golang のサーバーを動作確認するには web ui を作るのが手っ取り早い。web ui を作ることで、実際にどういう風に api が呼ばれるかのイメージがつくので API 自体の品質も上がる気がします。 orval で openapi 定義からクライアントを生成し、CORS で API にアクセスする形になっています。

フロントエンドエンジニアに実際の動作を体感してほしいわけですが、サーバーを動かしてもらうのはハードルが高いです。 というわけで orval のモック機能をつかって msw/browser で API 呼び出しをエミュレートします。 この構成にすると、バックエンドが完成する前でも静的なフロントで UI を確認できるのもメリットですね。 そのまま GitHub Pages にデプロイして、関係者に URL 共有しておけばコミュニケーションもスムーズ。


🐳 Docker Compose + air:即時フィードバックでサーバー開発が捗る

バックエンド側は Docker Compose を使って開発環境を管理。中で air を動かすことで、ファイル変更 → 自動ビルド → 再起動 の流れがサクッと作れる。

DBやValKey等も同時に起動できて、依存環境の整備も一発。


✅ まとめ

技術 役割 快適ポイント
TypeSpec API設計 少ない記述で設計と見通しが良く、AIにも強い
ogen Goサーバー生成 自動バリデーションと型安全
sqlc DBアクセス SQLファースト + コンパイル時の型保証
orval + MSW フロント確認 + モック 開発用フロントエンド兼、モック生成してデモに使える
Docker Compose + air 統合環境 airによる即時フィードバック
Taskfile タスク管理 go install 一発 + YAMLで読みやすい

全体的に型で守られるようになっているので、typespec と schema.sql を真面目に実装すれば、あとはだいたい AI で生成できる気がしてます。

この構成にしてから、設計・実装・動作確認・共有までが非常にスムーズな気がしています。 もっとこういうの使った方が良いよ、とかあれば教えて欲しいっす。

Published: 2025-06-06(Fri) 10:54