KEIS BLOGは株式会社ケイズ・ソフトウェアが運営しています。

KEIS BLOG

タグ「Go言語」の記事

« タグ一覧に戻る

MySQLでGoroutineを使って並列クエリを投げたくなるパターンとその回避方法

Go言語の強力な機能の一つに、軽量なスレッドがあります。Goroutineを活用して、MySQLに対して複数のクエリを並列に実行することで、パフォーマンス向上を図りたいと考えたりもするかもしれません。 でも、並列クエリには注意が必要です。 ちゃなことで。この記事では、Goroutineを使って並列クエリを投げたくなるようなパターンと、その回避方法について詳しく解説します。特に、SQLのUN...

Goでlo.Mapやlo.Filterは本当に読みやすいのか?

Go言語は、その設計哲学から「シンプルさ」や「明快さ」を重視しています。その一方で、Goコミュニティには公式思想からやや外れた「便利ツール」や「シンタックスシュガー的な関数」を提供するサードパーティライブラリが数多く存在します。その代表格の一つが、samber/lo ライブラリです。 lo、結構実務では使ってるんですが、簡単に言うと、Go標準にはないMapやFilterといった関数型プログ...

Go言語設計哲学と「三項演算子」のあいだ

Go言語は2009年にリリースされて以降、「シンプルで明快」な設計哲学を貫いてきたことで知られています。C言語やJavaといった、多機能で柔軟性の高い言語から移行してくると、Goの最小主義的な設計には「そこ切り捨てちゃう?」という驚きがありますよね。 そんなGoでは、「あえて存在しない」ものがいくつかあります。そのうちの一つが「三項演算子」ですよね。三項演算子が大好きな私です。切ない別れです...

Kubernetes内のPod間通信とDNSキャッシュ問題をいかに解決しているのか + 避けるべきアンチパターン

前回の記事で解説したように、Kubernetes(K8s)のクラスタ内ではPod間通信は主にDNSによって行われ、Service → Endpoints → Podという仕組みを通じてPodが入れ替わるたびにトラフィック先を動的に更新します。DNS TTLも短く設定され、Pod入れ替え時のDNSキャッシュ問題を最小化していることがポイントでした。 しかし、このメカニズムを前提にしたK...

セマンティックバージョニング

Go言語プロジェクトでのセマンティックバージョニングの採用とそのメリット はじめに 前回はGo言語プロジェクトでのChangelogの管理について、特にコンベンショナルコミットとの連携を中心に解説しました。今回はその続きとして、セマンティックバージョニングについて解説します。 セマンティックバージョニングとは セマンティックバージョニングは、ソフトウェアのバージョンを明示的かつ一貫性を持って...

Changelogの効率的な管理

Go言語プロジェクトにおけるChangelogの効率的な管理 はじめに 前回の記事で「コンベンショナルコミット」について詳しく解説しました。今回はその前提として、特にGo言語のプロジェクトでどのようにChangelog(変更履歴)を効率よく管理できるのかについて探ります。 なぜChangelogが必要なのか Changelogはプロジェクトの各リリースで何が変わったのかを一覧形式で示したドキ...