#Golang

66 件の記事

Goのマルチモジュール構成でWorkspace modeを使ってみる
アプリケーション 2024-01-19

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

Go 1.18以降のWorkspace modeでマルチモジュール開発を簡単にする方法。go work init、go.workファイルの構成、go.modを編集せずにローカルモジュールを参照する手順を解説します。

#Golang
GoReleaserを使ってのGoのアプリケーションを配布する
アプリケーション 2023-11-11

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

GoReleaserを使って、Goで書いたアプリケーションをクロスコンパイルし、バイナリとして配布する方法を解説した記事です。GoReleaserとはどのようなツールなのかを説明したうえで、実際に設定してリリースを行うまでの手順を紹介します。

#Golang#GitHub Actions
Goのresponse.WriteHeaderの副作用について
アプリケーション 2023-09-11

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

response.WriteHeaderの複数回呼び出しによる副作用を解析し、bytes.Bufferを使った回避方法とtemplateのExecute処理の実装パターンを提示。

#Golang#Tips
GoでServeMuxの機能拡張を提案するProposalがAcceptedになった
アプリケーション 2023-08-31

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

Goのnet/http ServeMuxに動的ルーティングとパスパラメータを追加するProposalがAcceptedに。goblinなどサードパーティルーターやGoのルーティングの今後への意味を解説します。

#Golang#router#HTTP
Go言語100Tips 開発者にありがちな間違いへの対処法
アプリケーション 2023-08-27

Go言語100Tips 開発者にありがちな間違いへの対処法

『Go言語100Tips 開発者にありがちな間違いへの対処法』の書評。Goで陥りがちなミスを100個のTipsとして網羅的にカバーする一冊。ある程度Goに書き慣れた人が、コードの品質をもう一段上げたいときに手元に置いておきたい。

#Golang#書評
Goのhttp.RoundTripperについて
アプリケーション 2023-08-22

Goのhttp.RoundTripperについて

http.RoundTripperインターフェースを実装してHTTPクライアント側のミドルウェア的処理を実装し、ログ・認証・キャッシュ・リトライの例を示す。

#Golang
Go言語による分散サービス
アプリケーション 2023-08-18

Go言語による分散サービス

『Go言語による分散サービス』の書評。Goを用いた分散サービスの実践を、手を動かしながら学べる一冊。マイクロサービス文脈でのモダンな技術や構成の背景、実装の進め方まで実践的に理解を深められる。

#Golang#書評
実用Go言語
アプリケーション 2023-08-05

実用Go言語

『実用Go言語』の書評。ある程度Goを書いてきた人でも、知らなかった・忘れていた実務的な知見に気づける一冊。エラー型の命名など細やかな作法から、実務でGoを書くうえで押さえておきたい定石までを幅広く扱う。

#Golang#書評
Goで始めるコードのパフォーマンス改善
パフォーマンス 2023-06-12

Goで始めるコードのパフォーマンス改善

Goのパフォーマンス改善の実践。pprofによるプロファイリング、ベンチマーク、エスケープ解析、メモリアロケーション削減を、自作HTTPルーターの最適化事例とともに解説します。

#Golang
DefaultServeMux以外でpprofを使う方法
アプリケーション 2023-04-30

DefaultServeMux以外でpprofを使う方法

Goのnet/http/pprofを、DefaultServeMux以外の独自のルーターと組み合わせて使う方法についてのメモです。pprofをblank importするだけでは動かないというハマりどころを取り上げ、カスタムルーターにpprof.Indexなどのハンドラを自分で登録してパフォーマンス分析を行う実装を紹介します。

#Golang#Tips
Goのhtml/templateでURLをエンコードさせない
アプリケーション 2023-04-23

Goのhtml/templateでURLをエンコードさせない

Goのhtml/templateがURLを自動エンコードする理由と、template.URLを使ってエンコードさせずに生のURLを渡す方法を、最小の動作例つきで解説します。

#Golang#Tips
buildxを使ったGoアプリケーションイメージのクロスコンパイル
アプリケーション 2023-04-20

buildxを使ったGoアプリケーションイメージのクロスコンパイル

Docker buildxのマルチアーキテクチャビルドで、GoアプリをLinux AMD64とARM64向けにクロスコンパイルしてイメージ化する方法を解説します。

#Golang#Docker
Goを学びなおす
アプリケーション 2023-01-23

Goを学びなおす

何年かGoを触ってきたものの、このタイミングで改めて学び直すと効果的ではないかと考え、言語仕様やジェネリクスの実装、Go 1.18以降の新機能などをひと通り見直してコーディング力を鍛えなおした記録です。その際に参考にした記事もあわせて紹介します。

#Golang
GoのHTTP Routerを比較するベンチマーカーを実装した
アプリケーション 2022-12-20

GoのHTTP Routerを比較するベンチマーカーを実装した

GoのHTTP Routerのパフォーマンスを比較するために、ベンチマーカーを実装した記事です。静的なルートやパスパラメータを含むルートなど、複数のテストケースを設計し、さまざまなGo製ルーターのパフォーマンスの差分を計測・比較します。

#Golang
Goプログラミング実践入門 標準ライブラリでゼロからWebアプリを作る
アプリケーション 2022-11-23

Goプログラミング実践入門 標準ライブラリでゼロからWebアプリを作る

『Goプログラミング実践入門 標準ライブラリでゼロからWebアプリを作る』の書評。Goの標準ライブラリだけを使い、ゼロからWebアプリケーションをつくる実践的な方法を学べる一冊。フレームワークに頼らず、HTTPやテンプレートなどの仕組みを手を動かして理解できる。

#Golang#書評
Cloud Functionsを使ってSlack AppのSlash Commandを実装
アプリケーション 2022-09-19

Cloud Functionsを使ってSlack AppのSlash Commandを実装

Google Cloud FunctionsでSlack Slash Commandを実装。サーバーレス、低コスト、Signing Secret認証、Cloud Buildでデプロイするボット実装ガイドを紹介します。

#Slack Bot#Slack#Golang#Google Cloud Platform#Cloud Functions
GoでClean Architectureのレイヤーを静的解析する
アプリケーション 2022-09-04

GoでClean Architectureのレイヤーを静的解析する

GoでClean Architectureのレイヤー間の依存関係を静的解析で検証する方法についてのメモです。自作せずに手軽に導入できるgo-cleanarchというツールを使い、依存の方向がアーキテクチャのルールに沿っているかをチェックする手順を紹介します。

#Golang#Clean Architecture
bmf-techを支える技術
アーキテクチャ 2022-08-08

bmf-techを支える技術

Docker、Golang、Vue.js、Nginx、Prometheus、Grafanaなど、このブログのインフラと監視を支える技術を紹介します。

#Docker#Docker Compose#VPS#Golang#Vue.js#Prometheus#Promtail#Loki#Grafana#Nginx
Golangでロードバランサーを実装する
アプリケーション 2022-01-01

Golangでロードバランサーを実装する

ラウンドロビンで負荷分散するL4ロードバランサーをGoで一から自作してみた記事です。httputilを使ったリバースプロキシの仕組みや、ラウンドロビンによるスケジューリング、アクティブ・パッシブなヘルスチェックの実装を、構築例を通して解説します。

#Golang#ロードバランサー#ラウンドロビン
net/httpでつくるHTTPルーター自作入門
アプリケーション 2021-10-24

net/httpでつくるHTTPルーター自作入門

Golangのnet/httpでHTTPルーター自作を解説。ルートマップ、URLパス解析、メソッド別ルーティング、パスパラメータの仕組みをステップバイステップで実装ガイドします。

#Golang#HTTP