Go言語を学習してみよう（１）：インストール

#はじめに
　先日、プログラミング言語別年収ランキング2018という記事を見まして、Go言語が１位でした。今後はGo言語の需要が増えそうなので、今更ですが学習していきたいと思います。
　今回はGo言語の所感と、Go言語のインストールと、IDE環境をインストールして開発環境を構築します。
　環境はWindows10環境です。

#Go言語？
　最初にGo言語のソースコードを見たとき、シンプルに記述出来て良さそうと思ったのですが、よく見るとC言語なのどの、手続き型プログラミングでした。
　手続き型プログラミングは苦手意識が有り、その理由として自動でやってくれないメモリ確保・開放、例外処理はないし、関数や変数の範囲が絞れない、一部だけが違う関数が山のようにある。おまじないコード、一定数でいる難読なコードを生産するプログラマ。バグの温床がアチラコチラにあって、品質がちっとも上がらない。単体テストをパスしても、結合テストでバグがになることもしばしば、エラーや不具合が発生しても原因の特定が困難な事が多々有りました。
　そこの頃にオブジェクト指向言語、C++（より正確に言うとVC++）と出会い、どんどん好きになったのですが、色々できる分覚えることも多く、MSの仕様も絡んできて、何が起きてるかわからない部分も多く、肥大化するコードと日々戦っていました。
　Java言語が出てきてた時、C++と比べるととても言語がシンプルで、あれこれできないがその分やりたいことに集中できる。また、環境依存も少ないことも魅力で、とても好きになりました。
　が、最近のJavaが仕様がごちゃごちゃしてきて嫌気がさし、よりシンプルな開発言語を求めていました。

##今わかってることは（全部らしいということだけ）

- 静的型付け。
- GC（ガベージコレクション）がある。
- 標準ライブラリが揃ってる。
- Genericsがない。
- クラス、継承がない。
- アクセス指定子がない。
- try-catchのような例外処理がない。
- 自由がない。
- スレッド処理？並列処理が得意。

##今はまだわかっていないことは

- 例外はどう扱うのか？
- 抽象クラスのような、制約をつけられるのか？
- 並列処理で一意性はどう保つの？
- 関数への値は、値？参照？
- 簡単に記述できるの？
- 学習コストは？

#Go言語インストール
　Go言語をダウンロードしインストール。環境設定を行います。

##ダウンロード
ファイルは次からダウンロードします。
https://golang.org/dl/

Microsoft Windowsを選択します。
![ダウロード - コピー.png](https://qiita-image-store.s3.amazonaws.com/0/259433/8e16acb7-7d7c-d2dc-c91e-920125d1690b.png)

選択するとファイルがダウンロードされ、次の画面が表示されます。
![ダウンロード後.png](https://qiita-image-store.s3.amazonaws.com/0/259433/d7a7cc5a-4d83-8cae-3840-6b98cdc71d0f.png)

ダウンロードしたファイルを起動します。
今回は、「go1.11.windows-amd64.msi」でした。これを起動します。
セットアップウィザードが起動するので、内容に従って選択し、インストールしていきます。
選ぶ場面はほとんどありません。

##一瞬だけ表示される画面
インストール容量確認。
 ![インストーラー_01.png](https://qiita-image-store.s3.amazonaws.com/0/259433/be8a1652-2965-27ac-eec6-157d6c82a905.png)

##セットアプウィザード起動画面
インストールを続けるので「Next」ボタンします。セットアプウィザードを終了する場合は「Cancel」ボタンを押下します。
![install_01.png](https://qiita-image-store.s3.amazonaws.com/0/259433/27cc1670-453a-6849-5ec8-537be7e5fde9.png)

##ライセンスの同意
ライセンスを確認し、同意できる場合は、インストールを続けるので「Next」ボタンを押下します。
![install_02.png](https://qiita-image-store.s3.amazonaws.com/0/259433/ff9030c7-faee-df87-744a-18d384a2b499.png)

##インストールフォルダ指定
Go言語のインストールするフォルダを指定します。デフォルトは「C:\Go\」です。変更する場合は値を変更し、「Next」ボタンを押下します。
![install_03.png](https://qiita-image-store.s3.amazonaws.com/0/259433/4f334df4-5fa1-112a-412e-bad4ebd295df.png)


##インストールする準備が整いました。
「Install」ボタンを押下します。
![install_04.png](https://qiita-image-store.s3.amazonaws.com/0/259433/989c569d-30a2-7d46-50ee-8c2cdfe68a2b.png)

##インストール中....
インストールを開始すると「このアプリがデバイスに変更を加えることを許可しますか？」画面が表示されるので、「はい」を押下します。
![インストーラー_06.png](https://qiita-image-store.s3.amazonaws.com/0/259433/515ad901-da11-1194-2889-b6cb6133aee3.png)

##インストール完了
「Finish」ボタンを押下します。
![install_06.png](https://qiita-image-store.s3.amazonaws.com/0/259433/3e1ef940-2017-a1d3-1d33-8a8a3873cfa0.png)

##インストール後の確認
コマンドラインを起動します。(Windowsキー+Rで「ファイル名を指定して実行」ダイアログを起動して、「cmd」と入力後に、「Enter」キーが楽だと思います。)

下記のコマンドを実行し、バージョン名が表示されていれば大丈夫です。

```bash
>go version
go version go1.11 windows/amd64
```

##環境変数
インストールが完了すると、下記の環境変数が追加されます。
GOPATH=C:\Users\[ユーザ名]\go
GOROOT=C:\Go\

`GOROOT`は、インストールディレクトリです。
`GOPATH`の作業用のディレクトリになり「%GOPATH%\bin」にbin 実行可能コマンド配置されます。また、「%GOPATH%\src」Goのソースファイルが配置されます。

インストールが完了すると、下記の環境変数に追記されています。
PATH=C:\Go\bin;%GOPATH%\bin

#IDEインストール
今回は、Go言語用IDEのLite IDEをインストールします。他にもEclipse、 Visual Studio Code、Atomなどもあるようですので、お好みの環境を選べば良いかと思います。

##ダウンロード
以下の場所からインストールファイルを取得します。
Github(https://github.com/visualfc/liteide) 
Home(http://liteide.org/en/)

Githubから取得する方法を記載しておきます。
「releases」を選択します。
![LiteIDEダウンロード画面 - コピー.png](https://qiita-image-store.s3.amazonaws.com/0/259433/3f7d0117-d186-a92f-421d-1482994da312.png)

Windowsのパッケージを選択します。今回は「liteidex34.2.windows-qt5.9.5.zip」を選択します。
![LiteIDEダウンロード_02 - コピー.png](https://qiita-image-store.s3.amazonaws.com/0/259433/00062164-4d5c-98c6-148d-e49e7d0f6dbb.png)


## ファイル展開
エクスプローラーから対象のファイル選択し、右クリックでメニューを表示し「すべて展開」を指定します。
![LiteIDEインストール_01 - コピー.png](https://qiita-image-store.s3.amazonaws.com/0/259433/7933d8d8-9369-67ba-f3bf-37f5af211bb2.png)

展開するフォルダを聞かれますので、適当なフォルダを指定し、「展開」ボタンを押下します。
展開が完了すると展開したフォルダに「liteide」ディレクトリがありますので、このディレクトリを実行したい場所に移動させます。
![LiteIDEインストール_02 - コピー.png](https://qiita-image-store.s3.amazonaws.com/0/259433/427f2b4e-798d-f0d8-e330-7e251aa19238.png)

##LiteIDEの起動
先程展開し移動した「liteide」以下にある「\bin\liteide.exe」を実行します。
![LiteIDE_setting_00.png](https://qiita-image-store.s3.amazonaws.com/0/259433/11067378-ac4a-d751-0baa-51e16e15344c.png)

##環境設定
環境を「system」から「Win64」に変更します。（他の環境の場合は環境に合わせて変更して下さい。）
![LiteIDE_setting.png](https://qiita-image-store.s3.amazonaws.com/0/259433/a6837b07-fb3c-c5be-07c7-c766fd058fe0.png)

環境リストボックスから、「Win64」を選択します。
![LiteIDE_setting_-02.png](https://qiita-image-store.s3.amazonaws.com/0/259433/5112157b-7bbf-736d-f76f-f112ea43d816.png)

変更後に環境を更新します。
![LiteIDE_setting_03.png](https://qiita-image-store.s3.amazonaws.com/0/259433/fb491f8f-6a2e-7d87-5cff-364f8c844268.png)

#終わりに
　今回はインストールと環境設定を行いました。次回からGo言語プログラミングを進めて行きたいと思います。
　　勘違いなどあればご指摘、ご意見頂けると助かります。