アプリケーション

OpenAPIを使ったスキーマ駆動開発

アプリケーション

OpenAPI Specificationとは 言語依存のない形でHTTP APIの仕様を定義するためのフォーマット。YAMLまたはJSONで記述する。 Swagger SpecificationはOpenAPI Specificationの前身である。 OpenAPIを採用するメリット・デメリット メリット REST APIの標準化されたフォーマットであり、開発者間のコミュニケーションコストを...

OpenAPI スキーマ駆動

Goのマルチモジュール構成でWorkspace modeを使ってみる

アプリケーション

Go1.18から追加されたWorkspace modeを使ったことがなかったので、使ってみた。 Workspace modeとは Goのマルチモジュール構成を便利するための機能。 Workspace modeの使い方 次のような構成を用意する。 . ├── bar │ └── bar.go └── foo └── foo.go // foo.go package foo func ...

Golang

GoReleaserを使ってのGoのアプリケーションを配布する

アプリケーション

GoReleaserを使ってGoのアプリケーションをクロスコンパイルしてバイナリ配布をやってみた。 GoReleaserとは GoReleaserは、Go言語で書かれたアプリケーションのビルド、パッケージング、およびリリースを自動化するツール。 クロスコンパイル、バイナリの圧縮、アーカイブの作成、GitHubなどのプラットフォームへのアーティファクトのアップロードができる。 GitHub Acti...

Golang GitHub Actions

GraphQLについて

アプリケーション

概要 GraphQLの素振りをしていたので調べたことについてまとめておく。 親切なチュートリアルが用意されており、始めやすい。 cf. www.howtographql.com GraphQLとは Meta社によって開発されたWeb API開発のためのクエリ言語。 GraphQLはGraphQL Foundationによって管理されており、Meta社はその一員である。 GraphQLの仕様と全ての...

GraphQL

HTTP Routerの自作で参考にした資料

アプリケーション

goblinの開発で参考にした各種ソースや自分の記事をリストアップする。 いくつかの自分のブログ記事に参考リンクを貼ったりしていたせいで分散していたので集約した。 参考 HTTP Routerの開発で参考にした資料リスト。 GitHub jba/muxpatterns importcjj/trie-go julienschmidt/httprouter gorilla/mux gowww/rou...

router HTTP URLルーティング リンク集

slogを使ったContextual Logging

アプリケーション

概要 Goでlog/slogを使ったcontextual loggingについてまとめる。 log/slogとは Go1.21で追加された構造化ロギングのためのパッケージ。 構造化ロギングとは、ログを構造化されたデータとして出力すること。 今まではGoで構造化ロギングをする場合はサードパーティのパッケージを利用するか、自前でスクラッチするかしか手段がなかったが、今後は標準パッケージも視野に入るよう...

slog contextual logging

Goのresponse.WriteHeaderの副作用について

アプリケーション

概要 Goのresponse.WriteHeaderの副作用についてメモする。 superfluous response.WriteHeader 以下は愚直な例だが、次のようにWriteHeaderを複数回呼ぶと、http: superfluous response.WriteHeader call from main.handlerというエラーが出る。 package main import ...

Golang Tips

GoでServeMuxの機能拡張を提案するProposalがAcceptedになった

アプリケーション

以前からウォッチしていたnet/http: enhanced ServeMux routing #61410がAcceptedになったので、それについてポエムをかく。 最終的な仕様がどうなるかはわからないが、静的なルーティングの機能(/foo/barのような固定値のルーティング)しか持っていないServeMuxに動的なルーティング(/foo/:idのようなパスパラメータを使ったルーティング)の機能...

Golang router HTTP