My Favorite Life

Go there and write simply with golang. Such a person I want to be.

Go言語記事〜超まとめ〜

先日書いたこちらの記事

abemotion.hatenablog.com

ホッテントリ入りし、ブックマーク数も80を超えた。

やっぱりフィードバックがあると嬉しいですね。本当に感謝...!

今日は上記でも触れた、手元でブクマしているGo言語関係の記事を、

自分の中での整理も兼ねて、まとめます。

※ あくまで自分にとっての「超まとめ」なので、全て網羅しているわけでなく、
足りない所などあるかと思います。どなたかの参考になれば幸いです。

入門

Go入門
Go For Perl Mongers - YAPC::Asia Tokyo 2014
実践Go言語 - golang.jp
Go言語を学び始める人へ ~2017冬~ – All YoU Need Is D*
「Go言語らしさ」とは何か? Simplicityの哲学を理解し、Go Wayに沿った開発を進めることの良さ - エンジニアHub|若手Webエンジニアのキャリアを考える!
パッケージ名 (Package names) | The Go Blog 日本語訳

context

Go1.7のcontextパッケージ | SOTA
Goの並行パターン:コンテキスト (Go Concurrency Pattern: Context) | The Go Blog 日本語訳

実例

マイクロサービスのための綺麗なAPI設計 | Wantedly Engineer Blog
GoでとあるAPIサーバを実装し直した話 - Mercari Engineering Blog
「Go + grpc-gateway で作る JSON API サーバ速習会」を開催しました | Wantedly Engineer Blog
US版Mercariのリニューアルと今後 (サーバサイド) - Mercari Engineering Blog
Go で API サーバーを開発してきて1年が過ぎました | カメリオ開発者ブログ
Golangを初めて本番投入したぜ! - ゆーすけべー日記
【go】FWに頼らないオレオレroutingを実装する - emahiro/b.log
GoでJWT認証するAPI Gatewayを作成する - Tech Blog - Recruit Lifestyle Engineer
実戦へのGo導入
kubernetesで変わる開発スタイル 〜マイクロサービスじゃなくてもいいじゃない〜 // Speaker Deck
Go APIサーバーの設計について、golang.tokyo#9で話しました。 - Gunosy Tech Blog
マイクロにしすぎた結果がこれだよ!
golangを使って開発したWebAPIを1年半運用して改善してきたことー月間20億PVのマンガサービス開発の裏側 | Nagisaのすゝめ
API GatewayによるMicroservices化
Go言語での決済システムとマイクロサービス化について – Eureka Engineering – Medium
Go開発で実際にやった事一通り - Speaker Deck
Goアプリのデーモン化とデプロイの仕組み - 暁
Go言語による開発ノウハウを学ぼう!導入企業3社の選定理由とは?実践Go言語勉強会レポート | geechs magazine
Golangで支えるハイパフォーマンスAPI - Speaker Deck
ぐるなびにおけるGo言語の活用 - ぐるなびをちょっと良くするエンジニアブログ
メルカリ・ソウゾウでは どうGoを活用しているのか?
Go言語を使ってみて、個人的に引っかかったところと対処法。 | ヌーラボ
Go言語による2年半の新規プロダクト開発とその総括 - Speaker Deck

パッケージ構成

第1回 Mercari Tech Conf を開催しました - Mercari Engineering Blog
Goのパッケージ構成の失敗遍歴と現状確認 – timakin – Medium
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
[JA] Golang Package Composition for Web Application: The Case of Mercari Kauru // Speaker Deck
【翻訳】【Golang】標準的なパッケージのレイアウト - AllIsHackedOff
Goのpackage構成と開発のベタープラクティス - Tech Blog - Recruit Lifestyle Engineer
Implementing Go Go Go - Speaker Deck
1 Entry per Day: golang.tokyo #1 行ってきたメモ
Goの実装パターン ~ Webサーバ編 ~ - Speaker Deck
20160526 依存関係逆転の原則

テスト

Go の Test に対する考え方 - Qiita
go test で出来ること - Qiita
Advanced Testing with Go - Speaker Deck
実務で使える テストの話をしよう。golang.tokyo #2 in 株式会社はてな - Think - g.o.a.t
テストしやすいGoコードのデザイン
Golangにおけるinterfaceをつかったテスト技法 | SOTA
Big Sky :: golang で終了を確認するテストの書き方
Go Mockでインタフェースのモックを作ってテストする #golang - Qiita
もう一度テストパターンを整理しよう(WebApp編) - Speaker Deck

CI・デプロイ

自社のメインプロダクトにGoを導入したぞ++
Drone · Continuous Deliver
Go開発で実際にやった事一通り - Speaker Deck
CircleCIでDockerビルドしECRへpushする
CircleCI2.0を使ってGoで開発したツールをLint,UT,ビルドしてGithubにリリースする
circleci2.0でおもにgoをCIする · GitHub
CircleCI 2.0 で Go 1.10 の build cache をいい感じに効かせる · Hori Blog
lestrrat/go-server-starter: [MOVED] See github.com/lestrrat-go/server-starter
Goでstart_server (Server::Starter)とうまいことやる : D-7 <altijd in beweging>
Go言語でGraceful Restartをするときに取りこぼしを少なくする

バージョニング

Go & Versioning(vgo)を読んで大きな変更が入ったなと思った
Goにおけるバージョン管理の必要性 − vgoについて −
Golang — vgo vs dep — Dependency Management Tools Explained
依存関係管理ツールdep(golang)
Goオフィシャルチーム作成の依存関係管理ツール dep を試してみた | Developers.IO
Go 1.6 Release Notes - The Go Programming Language
ベンダリングのベストプラクティス - GolangRdyJp
Go1.11から試験導入されるバージョン管理機能(vgo)について

ログ

Goでのログ出力に標準logとcologを使う
Go言語のログ出力は標準logよりLogrus - HDE BLOG
logger のパフォーマンスについて [Go] - methaneのブログ
Let’s talk about logging | Dave Cheney
loggingについて話そう
Golangの高速なロガーzapとlumberjackでログを出力してrotateさせる - sambaiz-net
Gocon2017:Goのロギング周りの考察
go言語におけるロギングについて | さにあらず
Golang でのログローテション - Memo
golangの高速な構造化ログライブラリ「zap」の使い方
use zap instead of logrus by kazegusuri · Pull Request #44 · mercari/gaurun · GitHub
Goのアンチパターン - GolangRdyJp
zapはgoroutine safeなのか?? - DevDevデブ!!

エラー

Go言語のエラーハンドリングについて
Go言語におけるエラーハンドリングを今一度振り返る – Eureka Engineering – Medium
エラーは値 (Errors are values) | The Go Blog 日本語訳
Golangのエラー処理とpkg/errors | SOTA
Gocon Spring 2016
Golang の defer 文と panic/recover 機構について - CUBE SUGAR CONTAINER

ベンチマーク

Golangでベンチマークを取ってみた
Go でベンチマーク - Block Rockin’ Codes

ポインタ

#golang CodeReviewComments 日本語翻訳
golang の 引数、戻り値、レシーバをポインタにすべきか、値にすべきかの判断基準について迷っている - pospomeのプログラミング日記

middleware

Middlewares in Go: Best practices and examples
Writing middleware in #golang and how Go makes it so much fun.
GitHub - grpc-ecosystem/go-grpc-middleware: Golang gRPC Middlewares: interceptor chaining, auth, logging, retries and more.

最後に

現時点での、あくまで自分が触れた・興味ある分野での記事をまとめました。

今後も増えていくと思うので、本記事も定期的にアップデートできたらなと。

次は設計についての記事を書くぞ!