golang再入門2018/11

# ここまでのあらすじ
- golang好き！（もともとC言語歴が長かったので違和感なかった）…だったが、ここ２年ほど離れていた。
- 最近またgolangを書き始めるとやっぱ楽しい！のでgolangの仕事をやってはみたものの…
- 全然レベル低かった！やばい！
- 考えてみると…
    - ３年前にgolang書いてた時も割と一人で黙々と書いてた。
    - 必要なことしか身につけていなかった
    - そもそも比較対象がそばにいなかったのでアウトプットの速度やコードクオリティなども全然わかってなかった。
        - 書けてるし、仕様通り動いてるしそれで満足。
    - 忙しかった（言い訳）ので、リファクタもろくにしてなかった。
        - 「テストは書いてるからコードの健全性は保たれている！」（そういうことじゃない
- ちゃんと再入門せな！＜イマココ
- 書いては見たもののまだぜんぜん読んでる途中です。

# 何からやろうか？
- 基礎を洗い直そう
- 案外色々忘れてるし、昔は本も全然なかったので、公式ドキュメントを必要なところだけ斜め読みしてた。ちゃんと理解したい。

## ドキュメントを読もう
- 当たり前の基礎
    - [x] ツアー
        - A Tour of Go : https://go-tour-jp.appspot.com/welcome/1
        - まずはこれ。
    - [x] プログラミング言語Go - 丸善出版 理工・医学・人文社会科学の専門書出版社 : https://www.maruzen-publishing.co.jp/item/b295039.html
        - 書籍。バイブル。読もう。
    - [x] Effective Go
        - Effective Go - The Go Programming Language : https://golang.org/doc/effective_go.html
            - 日本語訳 Effective Go — プログラミング言語 Go ドキュメント v0.1 documentation : 
    - [x] 「Go言語らしさ」とは何か？　Simplicityの哲学を理解し、Go Wayに沿った開発を進めることの良さ - エンジニアHub｜若手Webエンジニアのキャリアを考える！ : https://employment.en-japan.com/engineerhub/entry/2018/06/19/110000
        - Go wayの解説記事
        - わかりやすい
    - [x] Code Review Comment
        - #golang CodeReviewComments 日本語翻訳 - Qiita : https://qiita.com/knsh14/items/8b73b31822c109d4c497
        - Effective Goと重複する部分はあるものの、コードの書き方とかすごく勉強になる。
    - [x] 言語仕様
        - The Go Programming Language Specification - The Go Programming Language : https://golang.org/ref/spec
        - バイブル。英語苦手な人（自分）は、日本語訳。。。は古いので、まあ英語をわかるところ眺めるだけでも。
[Goプログラミング言語仕様 - golang.jp](http://golang.jp/go_spec)
    - [ ] [Frequently Asked Questions (FAQ) - The Go Programming Language](https://golang.org/doc/faq#nil_error)
        - GolangのFAQ
    - [x] [Go Proverbs](https://go-proverbs.github.io/)
        - Golangの格言集
        - 日本語訳：[Go Proverbsを勉強がてら和訳して少し解説した - nametake-blog](http://nametake-1009.hatenablog.com/entry/2016/12/11/203328)
    - [ ] [Home · golang/go Wiki](https://github.com/golang/go/wiki)
        - golangのwiki。様々な情報があり、まだ全然読めてない。


- 読むのと並行して手も動かす
    - The Go Playground : https://play.golang.org/
        - サンプルはすぐに動かしてみながら読もう。疑問に思った動作や書き方もすぐ試す。

## 良いコードを読もう

- 考えてみればいっぱいいいコードはある。　
    - [ ] golang/go: The Go programming language : https://github.com/golang/go
        - golangもgolangで書かれている。見てみればわかるけど、可読性が高く綺麗。読みやすい。すごい。つよい。
        - どっから読めばいいかわからん人は、まずは自分が使ったことあるpkgから。ツアーやってればいくつか使ってるはず。
    - [ ] golang/lint: [mirror] This is a linter for Go source code. : https://github.com/golang/lint
        - 割とガリッと書かれている印象。でも読みやすい。エモい。
        - golangのコードとして何が良くて、何が悪いのかわかる。すてき。
    - [ ] Go Sub-Repository Packages - GoDoc : https://godoc.org/-/subrepo
        - golangの準標準package。いっぱい。ありすぎる。たいへん。つよい。
        - 参考：https://www.slideshare.net/takuyaueda967/20-76651772

## golangの動作について知ろう
- gorutineについて
    - [ ] [Golangのスケジューラあたりの話 - Qiita](https://qiita.com/takc923/items/de68671ea889d8df6904)
    - [ ] [GoConで発表してきたのでついでにruntime以下の知識をまとめていく #golang - niconegoto Blog](http://niconegoto.hatenadiary.jp/entry/2017/04/11/092810)
    - [ ] [【翻訳】goroutine の仕組み - まるまるこふこふ](http://sairoutine.hatenablog.com/entry/2017/12/02/182827)
    - [ ] [How Goroutines Work · Krishna's words](https://blog.nindalf.com/posts/how-goroutines-work/)

## 参考になる記事を読む
- [ ] golang advent calender
    - 情報古い記事もあるけど勉強になるものも多し
    - Go Advent Calendar 2016 - Qiita : https://qiita.com/advent-calendar/2016/go
    - Go Advent Calendar 2017 - Qiita : https://qiita.com/advent-calendar/2017/go
- [x] メルカリ・ソウゾウでは どうGoを活用しているのか？ : https://www.slideshare.net/takuyaueda967/mercari-souzoh-golang
    - 広範囲に勉強になる。

## ベストプラクティスを学ぼう
- [ ] 6年間におけるGoのベストプラクティス | POSTD : https://postd.cc/go-best-practices-2016/
    - 読み中

## 番外：いろいろなテクニックについての情報
- [ ] [Go の CI で lint と カバレッジ回して非人間的なレビューは自動化しよう in 2016年 - haya14busa](http://haya14busa.com/ci-for-go-in-end-of-2016/)
- [ ] [Go Meta Linter がサポートするツールまとめ - SideCI TechBlog](http://tech.sideci.com/entry/2017/01/10/110000)
- [ ] [Golangのエラー処理とpkg/errors | SOTA](https://deeeet.com/writing/2016/04/25/go-pkg-errors/)
- [ ] [Golang Error Handling lesson by Rob Pike - Block Rockin’ Codes](http://jxck.hatenablog.com/entry/golang-error-handling-lesson-by-rob-pike)

## 業務で使ってみよう
- golangの会社に転職すればいいんじゃないかな（雑
- ごめんなさい。
- 手元で便利に使えるgolangのクライアントツールとか作ると良い。
    - golangでKAIZEN!
    - 面倒なことは全部golangにやらせよう。