#Golang
66 件の記事
GolangのHTTPサーバーのコードリーディング
goblinルーター開発時に調査したGoのHTTPサーバー内部実装を解説。http.Server構造体、ServeMux、Handler登録フロー、goroutineによるコネクション処理を実装コードから読み解く。
自作ルーティングをアップデートした
自作のGo製HTTPルーター「goblin」をアップデートした際の記録をまとめた記事です。新たに追加したミドルウェアへの対応や、内部実装の最適化について、パフォーマンスのベンチマーク結果とともに紹介し、これまでのルーティング関連の記事の続きとして書き残します。
golang-migrateを使ってspannerのDBマイグレーションをする
golang-migrateとGoogle Spannerを使い、Dockerとgcp認証管理のもとでDBマイグレーションを実行する方法を解説します。
Golangでインメモリなキャッシュを実装する
軽量でシンプルなインメモリキャッシュがあれば十分だったため、Goで期限付きキャッシュを自前で実装してみた記録です。要件の整理から、sync.Mapを使った同時参照時の安全性の確保、期限切れデータのメモリ破棄の仕組みまでを設計・検証します。
Go CodeReviewCommentsのまとめ
Go公式のCodeReviewCommentsからコードレビューのベストプラクティスを厳選し、レシーバー型・エラーハンドリング・メモリ効率について解説。
gRPCとは?GoによるgRPCの実践入門
GoでgRPCに入門するための実践的なガイドです。gRPCとは何か、その前提となるHTTP/2やProtocol Buffersといった技術、サービス定義やストリーミングの仕組みを説明し、GoでgRPCのサーバーとクライアントを実装する手順を解説します。
Golang×chromedp×slack botでslackの絵文字自動生成ボットをつくってみた
Goとchromedpでcanvasのスクリーンショットを撮り、Slack APIと連携してSlack絵文字を自動生成するボットを作った話を解説します。
vscodeでgoのLanguage Serverを有効にしたらコード定義元ジャンプができなくなった
VSCodeでgoのLanguage Server(gopls)を有効にしたらコード定義元ジャンプができなくなった問題の原因と、go.modの配置を見直して解決する方法を解説します。
VPS×Docker Compose×Docker Machine×Golang×Nginx×Let's Encryptでの本番運用
「VPS×Docker Compose×Docker Machine×Golang×Nginx×Let's Encryptでの本番運用」のまとめと読書メモ。重要なポイントと実践的な知見を整理します。
GolangでgoblinというURLルーターを自作した
GoでURLルーターを自作した際の実装過程をまとめた記事です。トライ木というデータ構造を用いて、パスパラメータや正規表現によるマッチングに対応した高性能なURLルーター「goblin」を、設計の検討から実装まで順を追って解説します。
GolangのHTTPサーバーのコードリーディング (Go6 Advent Calendar 2019)
Qiita Go6 Advent Calendar 2019向けにGolangのHTTPサーバー内部実装をコードリーディング。net/httpパッケージのListenAndServe、ServeMux、Handlerインターフェースの動作を詳細に解析。
Golangでトライ木(Trie)を実装する|前方一致検索
トライ木(プレフィックス木)というデータ構造のアルゴリズムと、そのGoでの実装についてまとめた記事です。O(m)で検索・挿入ができる特徴や、HTTPルーティングなどへの応用、Radix Treeとの使い分けについて、挿入・検索の実装例を交えて解説します。
Goでクリーンアーキテクチャを実装する実践ガイド
Go でクリーンアーキテクチャを実践する方法を解説。レイヤー分離・依存ルール・ディレクトリ構成・実際のトレードオフを具体的なコードで学べます。
Realizeを使ってgoでホットリロードを実現するメモ
GoでソースコードのホットリロードをRealizeというツールで実現するためのメモです。go getでの導入から、.realize.yamlによる設定、監視サーバーの起動までの手順を紹介し、コードの変更を検知して自動でビルド・再起動させることで開発効率を高める方法を解説します。
Goでmysqldumpツールをつくる
SSHとTOML設定ファイルを使い、リモートサーバーのデータベースを自動バックアップするGo製mysqldumpツールをつくる方法を解説します。
Goならわかるシステムプログラミング
『Goならわかるシステムプログラミング』の書評。Goを通じて、低レイヤーに近いシステムプログラミングを学べる一冊。標準パッケージの内部的な仕様にも触れながら、OSとやり取りする仕組みを手を動かして理解できる。
Goのインターフェースを解説:柔軟でテスタブルなコードの書き方
Goのインターフェースについて実践的にまとめた記事です。特定のメソッドの型を列挙する仕組みや暗黙的な実装、インターフェースの合成、依存性の注入への活用、そしてよくある設計上の落とし穴までを、具体例を交えて解説します。
Goのポインタを解説:使うべき場面とよくある落とし穴
Goのポインタについて解説する記事です。値型とポインタ型の使い分けや、ポインタがメモリとパフォーマンスに与える影響、nilポインタやポインタレシーバの扱いなど、実務でつまずきやすいよくある落とし穴を具体例とともに学べる内容にまとめています。
Golangでの変数定義・宣言のパターンまとめ
Goにおける変数の定義・宣言のパターンを、var宣言や短縮形式(:=)といった書き方ごとに整理した記事です。型推論や複数変数の同時宣言、識別子の1文字目の大小による可視性制御のルールまで、実際のコード例を交えて網羅的に解説します。
Golangの関数についてー関数値/コールバック関数/無名関数
Goの関数について、関数値として扱う場合の関数、関数を引数として渡すコールバック関数、無名関数とクロージャの3つを中心にまとめます。それぞれの定義や仕組みを、具体的なコード例を交えて実践的に解説する記事です。