今さらだけど、Go言語に入門するための情報源


Go言語の勉強を始めたばかりの超初心者なんで、プログラミング始めるに当たり、必要な情報を収集したものです。
![Gopher（ホリネズミ）](https://qiita-image-store.s3.amazonaws.com/0/42829/65cec34e-c8a9-21fc-d628-8506d3b28f0f.png "スクリーンショット 2018-01-12 10.23.17.png")


## Go言語とは
Go（golangと呼ばれることも多い）は、2009年にRobert Griesemer、Rob Pike、Ken ThompsonによってGoogleで作成されたプログラミング言語です。 これは、AlgolとCに似ており、ガベージコレクション、制限された構造型、メモリセーフ、およびCSPスタイルの並行プログラミング機能が追加された、コンパイルされた静的型言語です。 (CSPスタイルとは、並行システムにおけるインタラクションのパターンを記述するための正式な言語の仕様に影響されているという事の様です。) Googleが開発したコンパイラやその他の言語ツールは、すべて無料のオープンソースです。


* [Go (プログラミング言語) JA.WIKIPEDIA] (https://ja.wikipedia.org/wiki/Go_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E))

* [Go (programming language) WIKIPEDIA](https://en.wikipedia.org/wiki/Go_(programming_language))



### Go言語が成功している理由

Rob Pike氏が、Go言語の成功している理由として，語った要約です。

* コンパイルの速さ
* 実行の速さ
* デプロイの容易さ
* ツール（go tool）  THE GO TOOL https://mattn.kaoriya.net/software/lang/go/20120216093718.htm
* 標準ライブラリ

などのGo言語のエコシステムがよく挙げられるそうです。また，言語の特徴としては，

* 並行プログラム
* インターフェース

などが挙げられるそうですが，どれも本当の理由ではないということでした。 Rob Pike氏が考える成功の理由は，**Go言語のSimplicity（単純さ）**です。

参照元: Go言語の父と呼ばれるRob Pike氏による基調講演～Go Conference 2014 http://gihyo.jp/news/report/01/GoCon2014Autumn/0001




## Go言語の適用用途

2016年のアンケート調査によると、Go言語の利用用途としては、Webアプリケーションが最も多く、次がシステム・プログラミングなんですね。

![スクリーンショット 2018-01-11 22.24.40.png](https://qiita-image-store.s3.amazonaws.com/0/42829/f4be7631-4369-58bc-ebae-bcd478abad3a.png "スクリーンショット 2018-01-11 22.24.40.png")

参照元: https://blog.golang.org/survey2016-results




## インストール方法
ちょっと、使ってみたいという場合は、パッケージマネージャーでインストールできるUbuntu Linuxが便利だと思います。 でもGo言語のバージョンが古いので後述の仮想環境を利用するのが、お勧めです。 

* Getting Start, The Go Programing Language  https://golang.org/doc/install
* Go Ubuntu Wiki https://wiki.ubuntu.com/Go
* CentOSにGo言語をインストール https://qiita.com/ikenyal/items/eecc65b703eba8a52e88



## 仮想環境
Go言語のバージョンを指定してインストールする、Go言語のバージョンを切り替える便利なツールです。

* GitHub https://github.com/syndbg/goenv
* goenv(とgoof)で仮想環境を作ってみた #golang https://qiita.com/knsh14/items/e977b2dbf0efabfc77e1
* Golangをgoenvを使ってインストールしてみた https://qiita.com/walkers/items/761b2a5e58849176a633


## パッケージ＆ライブラリ
パッケージの依存関係を解決してパッケージをインストールするツールに関するリンクです。 

### godep
* コマンドの利用法 Command godep https://godoc.org/github.com/tools/godep
* インストール方法 GitHub godep https://github.com/tools/godep
* Goのパッケージ管理ツールgodepの紹介と、僕がハマった罠 http://otiai10.hatenablog.com/entry/2015/02/12/013406

注意 goenvでgolangをインストールした場合、godepが正しく動作いない様です。 困まる場合は、[Getting Start, The Go Programing Language] (https://golang.org/doc/install) の従って、インストールするとgodepが正常に動作する様になります。


### Glide
* Glide Package Management for Go https://glide.sh/
* Glide から dep に移行せよ　https://qiita.com/spiegel-im-spiegel/items/e931ad1a7565d02d179e

### dep
* depのインストールと利用法 (現在は実験的な位置付け、しかし実用可能、Go言語 1.8以降) https://github.com/golang/dep  

### パッケージのリスト
* パッケージのリスト Packages, The Go Programing Language https://golang.org/pkg/



## Go言語ホームページ、ドキュメントなど

最初に環境変数 GOPATH と ワークスペースの関係について、理解しておくと、コードを作り始めた後に困らなくても良い。

* How to Write Go Code ⭐️ https://golang.org/doc/code.html
* GOPATH は適当に決めて問題ない https://qiita.com/yuku_t/items/c7ab1b1519825cc2c06f#gopath

ドキュメントの在り処

* Documentation, The Go Programing Language  https://golang.org/doc/
* Goプログラミング言語仕様 golang.jp http://golang.jp/go_spec
* Go 言語に関するブックマーク ⭐️⭐️⭐️  https://qiita.com/spiegel-im-spiegel/items/98d49ac456485b007a15#%E3%81%AF%E3%81%98%E3%82%81%E3%81%A6%E3%81%AE-go-%E8%A8%80%E8%AA%9E-on-windows

* Goに関する投稿 Qiita https://qiita.com/tags/Go
* golangに関する投稿 https://qiita.com/search?utf8=%E2%9C%93&sort=&q=golang+



## チュートリアルなど入門

* A tour of Go https://go-tour-jp.appspot.com/list
* AN INTRODUCTION TO PROGRAMING iN GO https://www.golang-book.com/books/intro
* 他言語プログラマがgolangの基本を押さえる為のまとめ https://qiita.com/gctfuji/items/e2a3d7ce7ab8868e37f7
* goコマンドざっくりまとめ https://qiita.com/gougyan/items/8db66b1d05aec0921791
* Ubuntu 16.04 に GoLang 1.6 と Gin Web Framework をインストールし、HTMLテンプレートを読み込むまで https://qiita.com/kent_ocean/items/5bfb7b69973f78b8c843
* はじめての Go 言語 (on Windows) https://qiita.com/spiegel-im-spiegel/items/98d49ac456485b007a15#%E3%81%AF%E3%81%98%E3%82%81%E3%81%A6%E3%81%AE-go-%E8%A8%80%E8%AA%9E-on-windows




## Webフレームワーク

* 概観からGoのWebFrameworkを選ぶ（2016/02） https://qiita.com/jumbOrNot/items/45f86db15a5a6c8a0622
* Revel Feamework https://revel.github.io/
* BEEGO Framework https://beego.me/
* Gin Web Flamework https://gin-gonic.github.io/gin/



## RESTフレームワーク
* Build RESTful API service in golang using gin-gonic framework https://medium.com/@thedevsaddam/build-restful-api-service-in-golang-using-gin-gonic-framework-85b1a6e176f3
* golang+EchoでREST APIを作った話 http://namihira.hatenablog.com/entry/20170409/1491710093



## Go言語ソースコード、サンプルコードなど

* golang/go, GitHub https://github.com/golang/go
* Go サンプルプロジェクト https://github.com/golang/example



## エディタやIDE

* dominikh/go-model.el, GitHub https://github.com/dominikh/go-mode.el
* Emacs で Go を書く https://qiita.com/senda-akiha/items/8bbdd3e59c51d5619ea7
* GoLand https://www.jetbrains.com/go/
* Gogland - Go 言語用 IDE - を使ってみた (2016年12月版) https://qiita.com/pankona/items/380f8b08e39d469ca94d
* Goの開発環境 Eclipse+GoClipse（Windows） https://qiita.com/takanorig/items/9a652739ad2abcb5a221



## デバッカ

* go言語のデバッガ（delveとgdb)とcore dump https://qiita.com/YasunoriGoto1/items/abd0d23262a72e2be9bf
* derekparker/delve https://github.com/derekparker/delve
* Debugging Go Code with GDB https://golang.org/doc/gdb




## 質問、サポート・コミュニティ、Issueトラッキング

* 日本語 stack overflow https://ja.stackoverflow.com/questions/tagged/go
* 英語 stack overflow https://stackoverflow.com/questions/tagged/go
* Issues GitHub https://github.com/golang/go/issues
* golang-nuts https://groups.google.com/forum/#!forum/golang-nuts




## GoDoc

* goDoc Home https://godoc.org/
* godoc コメントの書き方 https://qiita.com/macococo/items/fb6da04d3909edc90e37






## クラウドやDocker実行環境

### CloudFoundry

* IBM Cloud Cloud Foundryアプリケーション Go https://console.bluemix.net/docs/runtimes/go/index.html#go_runtime
* Cloud Foundry Go Buildpack https://docs.cloudfoundry.org/buildpacks/go/index.html
* GitHub cloudfoundry/go-buildpack  https://github.com/cloudfoundry/go-buildpack

### Docker
* Dockerで最小のGoのイメージを作成する（cgo編） https://qiita.com/shibukawa/items/fe847e800f845c2f555d
* DockerHub golang https://hub.docker.com/_/golang/


### Major Cloud
* Getting Started on Heroku with Go https://devcenter.heroku.com/articles/getting-started-with-go#introduction
* Google Cloud Platform での Go https://cloud.google.com/go/home?hl=ja
* AWS SDK for Go https://aws.amazon.com/jp/sdk-for-go/
* Cloud Foundry Build Pack GitHub https://github.com/cloudfoundry/go-buildpack
* Cloud Foundry Build Pack ドキュメント https://docs.cloudfoundry.org/buildpacks/go/index.html
* IBM Cloud Your first Golang app server on Bluemix (video) https://www.ibm.com/blogs/bluemix/2015/11/first-golang-app-server-bluemix-video/
* IBM Cloud を利用して Go言語のアプリ開発入門 https://qiita.com/MahoTakara/items/70572f3f214f24ee452d

### API Library
* SoftLayer API softlayer/softlayer-go https://github.com/softlayer/softlayer-go



## 参考書

* [Amazon golang で検索](https://www.amazon.co.jp/s/ref=nb_sb_noss_2?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&url=search-alias%3Daps&field-keywords=golang)
* [Amazon Go言語で検索](https://www.amazon.co.jp/s/ref=nb_sb_noss_2?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&url=search-alias%3Daps&field-keywords=Go%E8%A8%80%E8%AA%9E&rh=i%3Aaps%2Ck%3AGo%E8%A8%80%E8%AA%9E)