4連休でgoのウェブ関係を学ぼう(開発環境構築編)
こんなツイートを見かけたので4連休を使ってgoのウェブ関係をしっかり学んでまとめたいと思います。ただし、土曜日は4連休に含めないこととする。
それでとても良いサイトを見つけたのでそのサイトを参考にまとめていこうと思います。
筆者の実行環境
macOS Catalina
go version go1.14.7 darwin/amd64
エディタ: vscode
ワーキングディレクトリ
これまでTour of Goやplaygroundでしかコードを書いてこなかったのでローカルでの書き方やパッケージ管理の仕方をまとめます。
インストールに関しては環境によるところがあるので割愛します。上のサイトで詳しく説明してあるのでそれを参考にして頂ければと思います。
ここではインストールして実際に作業するワーキングディレクトリにパス($GOPATH)を通したあとの話をします。
インストールするとワーキングディレクトリが以下のような構成になっていると思います。
src:自分が書いたプログラムファイルを置くところ。
pkg: インストールしたり自分で作ったパッケージファイルを置くところ。
bin:バイナリファイルがあるところ。基本的には触らない。
パッケージは他の人が書いたプログラムを使いたい場合にそのプログラムをインストールする場所です。例えばjavascriptでfacebookが作ったライブラリreactを使おうと思ったら
$ npm install react
をするのと同じです。パッケージの取得方法は以下の2種類あります。
・自分の書いたプログラムをパッケージにする
・インターネット上からリモートパッケージを取得
自分の書いたプログラムをパッケージにする
自分が書いたプログラムをパッケージにする時はまず、そのプログラムを書く必要があります。今回は、A Tour of Goでもあった平方根を求めるプログラムを書いてパッケージにしてみましょう。
自分でプログラムを書く際はsrcディレクトリにファイルを作ります。パッケージ名は参考サイトに倣って"mymath"にしましょう。srcディレクトリにmymathディレクトリを作成します。ディレクトリ名がそのままパッケージ名になります。mymathディレクトリ内にsqrt.goを作成し、以下のように平方根を求める関数を書きます。
Goでは変数や関数の頭文字を大文字にしたものはファイルの外部から呼び出すことが出来ます。頭文字が小文字で始まっているものはそのファイル内でのみ利用可能で外部からアクセスすることは出来ません。
次にパッケージにするためにコマンドラインで
$ go install
を実行します。すると以下のように/pkg/${GOOS}_${GOARCH}内(私の場合だと/pkg/darwin_amd64)にmymath.aが作成されます。
もしmymathディレクトリ以外で行う場合は
$ go install ディレクトリ名
でパッケージにすることも出来ます。
これで平方根を求めるプログラムをパッケージとして使用することが出来るようになりました。
このパッケージを使うために/srcに戻ってmathappディレクトリを作成します。その中にmain.goを作成します。Goではmainとついているファイルが実行ファイルになります。それ以外の名前がついたファイルはmainから呼び出されるファイルになります。mainに以下を記述しましょう。
先ほど作った平方根を求めるmymathはimportで呼び出すことが出来ます。
コマンドラインで
$ go build
でバイナリファイルを作成します。今回はmathappというファイルが出来ると思います。それを実行してあげると結果がコマンドラインに表示されると思います。
このようにして自分の作ったファイルはパッケージにします。
インターネット上からリモートパッケージを取得
インターネット上には優秀なパッケージがたくさんあります。それを使って開発を楽にするのは良いことです。そのようなインタネット上にあるリモートパッケージはgithub、googlecode、bitbucket、Launchpadなどから取得することが出来ます。例えばこれも参考サイトに習い以下のパッケージをgithubからインストールするとしましょう。
リモートパッケージを取得する際は、
$ go get githubのリポジトリ名(githubの場合)
の形で取得出来ます。今回だと
go get github.com/astaxie/beedb
となります。そうするとまず/src/github.com/にクローンが作られます。その後クローンを元にgo installが実行され/pkg/darwin_amd64/github.com/にパッケージが作られます。
これでローカル環境でプログラムを組むことが出来ると思います。その他コマンドや開発ツールなどは、必要に応じて参考サイトを参照して頂けるといいかなと思います。
この記事が気に入ったらサポートをしてみませんか?