応用 kindでKubernetes(k8s)のローカル開発環境を作ってGo言語(Golang)のAPIをデプロイする方法 こんにちは。Tomoyuki(@tomoyuki65)です。Go言語(Golang)はマイクロサービスでよく使われたりしますが、そんなマイクロサービスを大規模なサービスで開発している場合、インフラにはKubernetes(略してk8s)を使... 2025.02.21 応用
基礎 Go言語(Golang)でマップ(map)型の排他制御にはsync.Mapを使う! こんにちは。Tomoyuki(@tomoyuki65)です。以前の記事でgoroutine(ゴールーチン)による並行処理や、mutex(ミューテックス)による排他制御などについて解説しましたが、排他制御が可能なマップ(map)型を扱うことが... 2025.02.02 基礎
基礎 Go言語(Golang)のイテレータ(range over func)について こんにちは。Tomoyuki(@tomoyuki65)です。Go言語(Golang)のバージョン1.23からイテレータ(range over func)が導入され、引数に「yield」のついた関数が「for range文」で扱えるようになり... 2025.01.31 基礎
基礎 Go言語(Golang)の空インターフェース型(interface{})とジェネリクスで未知の型を扱う方法 こんにちは。Tomoyuki(@tomoyuki65)です。Go言語(Golang)には未知の型を扱う方法として、全ての型を受け取れる空インターフェース型(interface{})と、Goのバージョン1.18から導入されたジェネリクスという... 2025.01.31 基礎
基礎 Go言語(Golang)の配列(array)・スライス(slice)・マップ(map)の使い方や違いについて こんにちは。Tomoyuki(@tomoyuki65)です。Go言語(Golang)で複数のデータを扱う際は配列(array)、スライス(slice)、マップ(map)を利用しますが、使い方や違いについて迷うことがあると思います。この記事で... 2025.01.29 基礎
基礎 Go言語(Golang)のインターフェースで共通機能を実装する! こんにちは。Tomoyuki(@tomoyuki65)です。以前の記事で構造体とメソッドの基礎について解説しましたが、さらにインターフェースを使うことで型の種類(構造体の種類)を気にせずに共通の機能(メソッド)を実行させることが可能です。こ... 2025.01.28 基礎
基礎 Go言語(Golang)の動的な文字列結合にはstrings.Builderを使う! こんにちは。Tomoyuki(@tomoyuki65)です。Go言語(Golang)で文字列結合をする際はいくつか方法がありますが、動的な文字列結合をしたい場合は"strings.Builder"を使うのが最適です。この記事では、そんなst... 2025.01.06 基礎
応用 Dockerによる負荷テストツール(k6・Prometheus・Grafana)の使い方 こんにちは。Tomoyuki(@tomoyuki65)です。今回はGo言語からは少し離れますが、実務においては作成したAPIの負荷テストをしておくのは重要だったりすると思います。そんな負荷テストをするためのツールとして、「k6・Promet... 2024.12.16 応用
基礎 Go言語(Golang)のログ出力ではslogが使える!コンテキストの引き回しも忘れずに。 こんにちは。Tomoyuki(@tomoyuki65)です。Go言語(Golang)でログ出力をする際にはfmt.Printlnなどを使うことがありますが、Goのv1.21からは標準ライブラリとして"log/slog"が使えます。この記事で... 2024.12.11 基礎
応用 Go言語(Golang)のAPIをGoogleのCloud SQLとCloud Runでデプロイする方法 こんにちは。Tomoyuki(@tomoyuki65)です。以前にGo言語(Golang)でEchoのAPIを開発する方法に関する記事を書きましたが、今回はそのコードを使ってGoogleのCloud SQL(MySQL)とCloud Run... 2024.09.25 応用