#Golang
66 件の記事
Goのマルチモジュール構成でWorkspace modeを使ってみる
Go 1.18以降のWorkspace modeでマルチモジュール開発を簡単にする方法。go work init、go.workファイルの構成、go.modを編集せずにローカルモジュールを参照する手順を解説します。
GoReleaserを使ってのGoのアプリケーションを配布する
GoReleaserを使って、Goで書いたアプリケーションをクロスコンパイルし、バイナリとして配布する方法を解説した記事です。GoReleaserとはどのようなツールなのかを説明したうえで、実際に設定してリリースを行うまでの手順を紹介します。
Goのresponse.WriteHeaderの副作用について
response.WriteHeaderの複数回呼び出しによる副作用を解析し、bytes.Bufferを使った回避方法とtemplateのExecute処理の実装パターンを提示。
GoでServeMuxの機能拡張を提案するProposalがAcceptedになった
Goのnet/http ServeMuxに動的ルーティングとパスパラメータを追加するProposalがAcceptedに。goblinなどサードパーティルーターやGoのルーティングの今後への意味を解説します。
Go言語100Tips 開発者にありがちな間違いへの対処法
『Go言語100Tips 開発者にありがちな間違いへの対処法』の書評。Goで陥りがちなミスを100個のTipsとして網羅的にカバーする一冊。ある程度Goに書き慣れた人が、コードの品質をもう一段上げたいときに手元に置いておきたい。
Goのhttp.RoundTripperについて
http.RoundTripperインターフェースを実装してHTTPクライアント側のミドルウェア的処理を実装し、ログ・認証・キャッシュ・リトライの例を示す。
Go言語による分散サービス
『Go言語による分散サービス』の書評。Goを用いた分散サービスの実践を、手を動かしながら学べる一冊。マイクロサービス文脈でのモダンな技術や構成の背景、実装の進め方まで実践的に理解を深められる。
実用Go言語
『実用Go言語』の書評。ある程度Goを書いてきた人でも、知らなかった・忘れていた実務的な知見に気づける一冊。エラー型の命名など細やかな作法から、実務でGoを書くうえで押さえておきたい定石までを幅広く扱う。
Goで始めるコードのパフォーマンス改善
Goのパフォーマンス改善の実践。pprofによるプロファイリング、ベンチマーク、エスケープ解析、メモリアロケーション削減を、自作HTTPルーターの最適化事例とともに解説します。
DefaultServeMux以外でpprofを使う方法
Goのnet/http/pprofを、DefaultServeMux以外の独自のルーターと組み合わせて使う方法についてのメモです。pprofをblank importするだけでは動かないというハマりどころを取り上げ、カスタムルーターにpprof.Indexなどのハンドラを自分で登録してパフォーマンス分析を行う実装を紹介します。
Goのhtml/templateでURLをエンコードさせない
Goのhtml/templateがURLを自動エンコードする理由と、template.URLを使ってエンコードさせずに生のURLを渡す方法を、最小の動作例つきで解説します。
buildxを使ったGoアプリケーションイメージのクロスコンパイル
Docker buildxのマルチアーキテクチャビルドで、GoアプリをLinux AMD64とARM64向けにクロスコンパイルしてイメージ化する方法を解説します。
Goを学びなおす
何年かGoを触ってきたものの、このタイミングで改めて学び直すと効果的ではないかと考え、言語仕様やジェネリクスの実装、Go 1.18以降の新機能などをひと通り見直してコーディング力を鍛えなおした記録です。その際に参考にした記事もあわせて紹介します。
GoのHTTP Routerを比較するベンチマーカーを実装した
GoのHTTP Routerのパフォーマンスを比較するために、ベンチマーカーを実装した記事です。静的なルートやパスパラメータを含むルートなど、複数のテストケースを設計し、さまざまなGo製ルーターのパフォーマンスの差分を計測・比較します。
Goプログラミング実践入門 標準ライブラリでゼロからWebアプリを作る
『Goプログラミング実践入門 標準ライブラリでゼロからWebアプリを作る』の書評。Goの標準ライブラリだけを使い、ゼロからWebアプリケーションをつくる実践的な方法を学べる一冊。フレームワークに頼らず、HTTPやテンプレートなどの仕組みを手を動かして理解できる。
Cloud Functionsを使ってSlack AppのSlash Commandを実装
Google Cloud FunctionsでSlack Slash Commandを実装。サーバーレス、低コスト、Signing Secret認証、Cloud Buildでデプロイするボット実装ガイドを紹介します。
GoでClean Architectureのレイヤーを静的解析する
GoでClean Architectureのレイヤー間の依存関係を静的解析で検証する方法についてのメモです。自作せずに手軽に導入できるgo-cleanarchというツールを使い、依存の方向がアーキテクチャのルールに沿っているかをチェックする手順を紹介します。
bmf-techを支える技術
Docker、Golang、Vue.js、Nginx、Prometheus、Grafanaなど、このブログのインフラと監視を支える技術を紹介します。
Golangでロードバランサーを実装する
ラウンドロビンで負荷分散するL4ロードバランサーをGoで一から自作してみた記事です。httputilを使ったリバースプロキシの仕組みや、ラウンドロビンによるスケジューリング、アクティブ・パッシブなヘルスチェックの実装を、構築例を通して解説します。
net/httpでつくるHTTPルーター自作入門
Golangのnet/httpでHTTPルーター自作を解説。ルートマップ、URLパス解析、メソッド別ルーティング、パスパラメータの仕組みをステップバイステップで実装ガイドします。