「あれは、誰だ、誰だ、デビルマ~ン!(『デビルマン:永井豪』)」ということで、どうもボクです。そういうわけで、今回は、Go を使っていこうという試み。
ちなみに、永井豪さんは、海外ドラマ「ウエストワールド」のような世界観を一番始めに作り出した人なのでは、と、町山智浩さんが仰ってました。
ポケモンGoがなんぼのもんじゃい!
... ...... .........、え~っと...
そんでは、Here we go!
Go とは?
Wikipedia さ~ん!
Goはプログラミング言語の1つである。2009年、GoogleでRobert Griesemer、ロブ・パイク、ケン・トンプソンによって設計された。Goは、静的型付け、C言語の伝統に則ったコンパイル言語、メモリ安全性、ガベージコレクション、構造的型付け、CSPスタイルの並行性などの特徴を持つ。Goのコンパイラ、ツール、およびソースコードは、すべてフリーかつオープンソースである。
⇧ 静的型付け 言語とは!コーディング時に間違いを指摘してくれるっちゅうやつですね、サーバー側の言語だとJavaやC#なんか、フロント側の言語だとTypeScript とかで静的型付けに対応していますかね。
また、軽量スレッディングのための機能、Pythonのような動的型付け言語のようなプログラミングの容易性、などの特徴もある。Go処理系としてはコンパイラのみが開発されている。マスコット・キャラクターはGopher(ホリネズミ)。
⇧ 動的型付け 言語の良いとこも取り入れてるそうな。
Goって、なんとなく、並列処理に強そうなってイメージがありますかね。
Windows環境でGo言語な環境を構築
とりあえず、WindowsでのGo言語な環境を構築していかないことには、学習ができませんから~、っちゅうことで環境を作っていきましょう。
⇧ 上記サイト様の情報を参考にさせていただきましょう。
まずは、Goのバイナリ群をインストールする必要があると。
のどっちかで、インストールしていけば良いと。
今回は、Archiveの形式でインストールしてみます。
https://golang.org/dl/ にアクセスし、自分の環境は64bit なので、「go1.12.4.windows-amd64.zip」をクリック。
ダウンロードされるので、
適当なディレクトリに配置します。
配置できたらば、環境変数に追加していく必要があるようです。
- GOROOT
- C:\go\bin を追加する。(binまでのパスはインストール場所によって変わる。)
- GOPATH
- %USERPROFILE%go を作成して指定が望ましい。(C:\Users\[ユーザー名]\go)
- Path
- %GOROOT%\bin と %GOPATH%\bin を PATH に追加する
ということで、まずは、GOPATH用のフォルダを作成で。
そんでは、環境変数を設定していきます。ちなみに、インストーラーでGoをインストールした場合は、インストーラーが「GOPATH」「GOROOT」は自動で作成してくれるようです。
まずは、「ユーザー環境変数」に「GOPATH」を作成していきます。
続いて、「システム環境変数(S)」に「GOROOT」を作成で。
んで、「GOPATH」「GOROOT」を、PATHに追加しないといけないらしいんだけど、「システム環境変数」「ユーザー環境変数」どっちの?ってなりますやん?
とりあえず、「ユーザー環境変数」の「Path」に追加してみました。
バージョンが表示されればOKのようです。
Goの開発に必要なパッケージ群をインストール
とりあえず、何をインストールすれば?ですが、
⇧ 上記サイト様がインストールしているものをインストールしてみました。
go get するには、git がインストールされていないと駄目らしいです。
⇧ git がインストールされてるので、go get してみました。
go get -u -v github.com/Masterminds/glide go get -u -v github.com/nsf/gocode go get -v -v github.com/uudashr/gopkgs/cmd/gopkgs go get -u -v github.com/rogpeppe/godef go get -u -v sourcegraph.com/sqs/goreturns go get -u -v github.com/golang/lint/golint go get -u -v github.com/lukehoban/go-find-references go get -u -v github.com/lukehoban/go-outline go get -u -v golang.org/x/tools/cmd/gorename go get -u -v github.com/newhook/go-symbols go get -u -v golang.org/x/tools/cmd/guru go get -u -v github.com/derekparker/delve/cmd/dlv
⇧ 実行結果が成功したのか分からんです...
まぁ、インストールされたということで。
Visual Sudio CodeでGoを利用できるようにする
Visual Studio Code をインストールされていない方は、
⇧ 上記サイト様を参考に。
Visual Studio Code を起動したらば、 拡張機能で、「Go」を追加で。
そしたらば、Goプロジェクト用に適当なディレクトリを作成で。
Goプロジェクト用に作成したディレクトリを、Visual Studio Codeで開きます。
そしたらば、 をクリックで、「新しいファイル」を作成。
「main.go」を作成。
ファイルの中身を編集。
package main import "fmt" func main() { fmt.Printf("Hello world\n") }
う~ん、「Process exting with code: 0」ってのが気になるけども、
⇧ C言語のスタック・オーバーフローで、
It's just trying to tell you that all went fine. Return value 0 is "no error".
You have a typo in "hello" though, the trailing "w" shouldn't be there.
And main()
's parameters should be either (void)
or (int argc, char *argv[])
.
json - The program 'c:\...\a.exe' has exited with code 0 (0x00000000) - Stack Overflow
⇧ なんか、エラーじゃないよって言ってますね。
ツールのインストールがされとらんと言われたので。
「Process exting with code: 0」ってのは変わらんのだと...
結局、よく分からんけど、Go で Hello World が実行できたということで、ようやくGoの学習を始められそうです。
ちなみに、Goのプログラムを動かすと、Youtubeの通信が不安定になるんだけども、YoutubeがGoを使ってるらしいのと何か関係があるのかしら?
2019/5/1(水)21:00 追記:↓ ここから
衝撃...Goは、自分でクラスファイルみたいなのを別パッケージに作りたい場合、必ず、「$GOPATH/src」の下に配置しなけりゃならんらしい...相対パスは、Deprecated(非推奨)らしいっすね...
自分の場合ですと、
⇧ ってことになるらしい。
Go用のプロジェクトディレクトリは、「$GOPATH/」になるってことですかね...
Javaみたいに、Eclipseでimportの補完とかもしてくれないし...Goに慣れるのは骨が折れそうな気配ですかね...
まぁ、普通に考えて、main.go だけで完結するプロジェクトなんて無いと思いますしね...大規模向け言語っていう割には、どういうプロジェクト構成にすべし、みたいな情報が見つからんですわ...
調査するのに、また時間が取られそうですね(涙)
2019/5/1(水)21:00 追記:↑ ここまで
2019/5/2(木) 追記:↓ ここから
なんか、仕様が変わってるらしい...
バージョン 1.11 では2つのモードの切り替えのために環境変数 $GO111MODULE
でモードを指定する。 環境変数 $GO111MODULE
は以下の値をとり得る。
値 | 内容 |
---|---|
on |
常にモジュール対応モードで動作する |
off |
常に GOPATH モードで動作する |
auto |
$GOPATH 以下のディレクトリにあるパッケージは GOPATH モードで,それ以外はモジュール対応モードで動作する |
【追記 2019-03-24】 Go 1.12 でも引き続き auto
が規定値になっている。 なお 1.13 からはモジュール対応モードが既定になるらしい。 そうなれば環境変数 $GO111MODULE
はお役御免になるかな。
⇧ まじか...
⇧ 上記サイト様によりますと、いろいろ注意点があるようです。
で、肝心の「module-aware mode」になってるかどうかは、
⇧ 確認のしようがないと...というか、「$GO111MODULE」って環境変数がそもそも存在しないのだが...みんなどうやって確認しとるのかしら...
もしや、Goをインストールする時に、インストーラー使ってないから「GO111MODULE」って環境変数を自分で作成しないといけないってやつかしら......謎は深まるばかり...
ネットの情報で、とりあえず、生、みたいな感覚で「GO111MODULE=on」にしとけば良いよ的な情報が多いんだけど、まずは、現状の「GO111MODULE」の状態の確認が先でしょうに...その確認方法の情報がないんだけどね...
2019/5/2(木) 追記:↑ ここまで
令和になりましたし、Go言語を習得せねばですね。
今回はこのへんで。