前のパートに戻る 完了して次のパートへ  

  0-3 Go アプリケーションの開発環境構築(Mac)

Go でアプリケーションを開発するための環境構築を行います。


※)今回のパートは PC が Mac の方を対象としています。


準備するものは次の通りです。

  • Xcode Command Line Tools
  • Homebrew
  • tree
  • direnv
  • Go
  • MySQL

これらは全て ターミナル からコマンドを用いてインストールしていきます。


今回は Mac にデフォルトでインストールされているターミナルアプリからではなく VSCode 上のターミナルからコマンドを実行していきます。


VSCode でターミナルを開くには、[上部メニュー] > [表示] > [ターミナル] の順にクリックします。

Xcode Command Line Tools


Xcode Command Line Tools は macOS でコマンドライン開発を行うためのツールを提供してくれます。C 言語やコンパイラなどが含まれています。


Xcode Command Line Tools のインストール

Xcode Command Line Tools をインストールするにはターミナルに次のコマンドを入力て Enter キーで実行します。(先頭の $ はコマンドの開始位置を示すターミナルが表示する記号です。実際に入力するコマンドは $ の後ろからになります。)

$ xcode-select --install

コマンドを実行すると次のようなダイアログが表示されるので、 インストール をクリックします。

使用許諾契約が表示されるので 同意する をクリックします。クリックすると各種ソフトウェアのインストールが開始されます。

インストールが完了したら 完了 をクリックしてダイアログを閉じます。

最後にターミナルから次のコマンドを実行し、バージョンを確認します。バージョン番号は環境ごとに異なる可能性があります。

$ xcode-select --version
xcode-select version 2354.

Homebrew


Homebrew は macOS 用のパッケージ管理ツールです。 Homebrew を使うことで mac にはデフォルトではインストールされていないツールを簡単に導入できるようになります。

Homebrew のインストール

Homebrew をインストールするには次のスクリプトをターミナルで実行します。

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

実行すると次のようなコメントが表示され、インストールを実行するか確認されます。

==> This script will install:
/usr/local/bin/brew
/usr/local/share/doc/homebrew
/usr/local/share/man/man1/brew.1
/usr/local/share/zsh/site-functions/_brew
/usr/local/etc/bash_completion.d/brew
/usr/local/Homebrew

Press RETURN to continue or any other key to abort

インストールを続けるには RETURN (Enter) キーを押します。

Enter キー押下後、しばらくしてから次のように ==> Installation successful! のログが表示されたらインストールは成功です。

・・・

==> Installation successful!

==> Homebrew has enabled anonymous aggregate formulae and cask analytics.
Read the analytics documentation (and how to opt-out) here:
  https://docs.brew.sh/Analytics

==> Homebrew is run entirely by unpaid volunteers. Please consider donating:
  https://github.com/Homebrew/brew#donations
==> Next steps:
- Run `brew help` to get started
- Further documentation:
    https://docs.brew.sh

インストールが完了したら PATH やバージョンを確認してみます。

$ which brew
/usr/local/bin/brew

$ brew --version
Homebrew 2.1.10
Homebrew/homebrew-core (git revision 8738c; last commit 2019-08-21)

tree


tree は Linux コマンドの1つで、ディレクトリやファイルをツリー状に表示します。macOS にはデフォルトでは準備されていないコマンドのため Homebrew を使ってインストールします。

tree のインストール

ターミナルで次のコマンドを実行してインストールします。

$ brew install tree

インストールコマンドの実行が完了したら tree コマンドに PATH が通っているか確認します。

$ which tree
/usr/local/bin/tree

PATH が通っていることが確認できたら tree コマンドを使ってバージョンを確認します。

$ tree --version
tree v1.8.0 (c) 1996 - 2018 by Steve Baker, Thomas Moore, Francesc Rocher, Florian Sesser, Kyosuke Tokoro


direnv

direnv は、ディレクトリを移動するたびに設定ファイルを読み込んで、カレントディレクトリでのみ有効な環境変数を自動で設定してくれるツールです。


direnv のインストール

ターミナルで次のコマンドを実行します。

$ brew instal direnv


.bash_profile に設定の追加

ターミナルで次のコマンドを実行します。

# .bash_profile に設定の追記
$ echo 'eval "$(direnv hook bash)"' >> ~/.bash_profile

# 設定の反映
$ exec $SHELL -l

Go


Go のインストール

ターミナルで次のコマンドを実行します。

$ brew install go

しばらくしてコマンドが完了したら、次に go コマンドの PATH を確認します。

$ which go
/usr/local/bin/go

上記のように /usr/local/bin/go といったパスが表示されれば go コマンドが利用できるようになっています。

次に go コマンドを使って Go のバージョンを確認してみます。

# Go のバージョンを確認
$ go version
go version go1.12.9 darwin/amd64

上記のように go1.12.9 のようなバージョン番号が表示されれば、実際に go コマンドが利用可能状態になっていることが分かります。

なお、本教材における Go の対象バージョンは 1.12 以上 です。

最後に、Go 製ツールをインストールした場合の実行ファイルへの PATH を設定します。ターミナルで次のコマンドを実行します。

# .bash_profile に設定の追記
$ echo 'export PATH=$HOME/go/bin:$PATH' >> ~/.bash_profile

# 設定の再読み込み
$ exec $SHELL -l

補足

先ほど go コマンドは /usr/local/bin/go へと PATH が通っていることを確認しました。これはつまり、ターミナルで go コマンドを使ったときに PC 内部では /usr/local/bin/go を実行していることを意味します。したがって、go の代わりに /usr/local/bin/go と絶対 PATH を指定しても go コマンドを実行できます。

$ /usr/local/bin/go version
go version go1.12.9 darwin/amd64


実際には /usr/local/bin/go もエイリアス(ショートカット)になっていて、本来の go の実行ファイルは別の箇所に配置されています。本来の実行ファイルがどこに配置されているかを確認するには次のコマンドを実行します。

# 本来の go の実行ファイルのパスを見つける
$ echo $(go env GOROOT)/bin
/usr/local/Cellar/go/1.12.9/libexec/bin

# go の実行ファイルを指定してバージョン確認
$ /usr/local/Cellar/go/1.12.9/libexec/bin/go version
go version go1.12.9 darwin/amd64

Homebrew は単にソフトウェアをインストールするだけではなく、このように PATH の設定やエイリアスの作成も同時に行ってくれています。おかげで /usr/local/Cellar/go/1.12.9/libexec/bin/go のように長々と PATH を指定せずとも、単に go だけでプログラムを実行できるようになっています。

Go の開発を補助するツール群のインストール


コード整形ツール、コード静的解析ツール、デバッグツールといった各種ツール群をインストールしていきます。

Go には go get というパッケージインストール用のコマンドが準備されています。ただし VSCode の拡張機能を使うと開発支援ツール一式を簡単に導入できます。今回はこちらを使ってインストールを行います。

VSCode を起動し、command + shift + P でコマンドパレットを表示します。コマンドパレットに go tool と入力して Go: Install/Update Tools を選択します。ツールの一覧とチェックボックスが表示されるので、全てのチェックボックスを選択した状態で OK をクリックします。

出力タブが表示されてログが流れます。しばらくして全てのツールのインストールが完了したら VSCode を再起動します。

MySQL

MySQL は現在 Oracle 傘下に属しているオープンソースのデータベース管理システムです。 MySQL というソフトウェアをインストールすることにより、コンピュータ内部にデータベースを作成してデータの格納や検索を効率的に行うことができるようになります。


MySQL のインストール

まずは Homebrew で MySQL を検索してみます。

$ brew search mysql
==> Formulae
automysqlbackup      mysql-client           mysql-connector-c++       mysql-utilities      [email protected]
mysql                mysql-cluster          mysql-sandbox             [email protected]            mysqltuner
mysql++              mysql-connector-c      mysql-search-replace      [email protected]

検索結果の中に mysql[email protected][email protected][email protected] が見つかります。 mysql を指定してインストールすると現在利用できる最新バージョンがインストールされ、[email protected] を指定してインストールするとそのバージョンの MySQL がインストールされます。

本来ならば最新版であるバージョン 8 系を利用したいところです。しかしながら、先にインストール済みの SQL クライアント Sequel Pro は 8 系には対応していません。よって今回はバージョン 5.7 を利用します。なお、5.7 は過去バージョンではあるものの、まだまだ広く使われています。クラウドサービスのデータベース(Amazone Aurora や GCP Cloud SQL など) もまだ 8 系に対応していません(2019/08/23 時点)。

それでは実際に MySQL をインストールします。

$ brew install [email protected]

上記コマンドを実行すると次のようなログが表示されます。

$ brew install [email protected]
(・・・省略・・・)
==> Caveats
We've installed your MySQL database without a root password. To secure it run:
    mysql_secure_installation

MySQL is configured to only allow connections from localhost by default

To connect run:
    mysql -uroot

[email protected] is keg-only, which means it was not symlinked into /usr/local,
because this is an alternate version of another formula.

If you need to have [email protected] first in your PATH run:
  echo 'export PATH="/usr/local/opt/[email protected]/bin:$PATH"' >> ~/.bash_profile

For compilers to find [email protected] you may need to set:
  export LDFLAGS="-L/usr/local/opt/[email protected]/lib"
  export CPPFLAGS="-I/usr/local/opt/[email protected]/include"

For pkg-config to find [email protected] you may need to set:
  export PKG_CONFIG_PATH="/usr/local/opt/[email protected]/lib/pkgconfig"


To have launchd start [email protected] now and restart at login:
  brew services start [email protected]
Or, if you don't want/need a background service you can just run:
  /usr/local/opt/[email protected]/bin/mysql.server start
==> Summary
🍺  /usr/local/Cellar/[email protected]/5.7.27: 320 files, 232.3MB

コマンドが終了してインストールが完了したら、 mysql の PATH とバージョンを確認してみます。

$ which mysql
(何も表示されない)

$ mysql --version
bash: mysql: command not found

which コマンドで結果が表示されていないので、mysql コマンドに PATH が通っていないことが分かります。ログを見直すと次のような記載があります。

If you need to have [email protected] first in your PATH run:
  echo 'export PATH="/usr/local/opt/[email protected]/bin:$PATH"' >> ~/.bash_profile

ログの内容にしたがって次のコマンドを実行します。

$ echo 'export PATH="/usr/local/opt/[email protected]/bin:$PATH"' >> ~/.bash_profile

コマンドを実行したら、設定を再読み込みします。

$ exec $SHELL -l

再度 mysql の PATH とバージョンを確認します。

$ which mysql
/usr/local/opt/[email protected]/bin/mysql

$ mysql --version
mysql  Ver 14.14 Distrib 5.7.27, for osx10.14 (x86_64) using  EditLine wrapper

PATH が通って mysql コマンドが利用できるようになりました。


MySQL Server の起動

MySQL Server の起動・ステータス確認・停止をしてみます。

# 起動
$ mysql.server start
Starting MySQL
.. SUCCESS!

# ステータス確認
$ mysql.server status
 SUCCESS! MySQL running (XXXXX)

#  停止
$ mysql.server stop
Shutting down MySQL
.. SUCCESS!


MySQL の初期設定

インストール時のログに次のような記載がありました。

We've installed your MySQL database without a root password. To secure it run:
    mysql_secure_installation

セキュリティを向上させるには mysql_secure_installation を実行せよ、とのことです。MySQL Server を起動した上でコマンドを実行します。コマンドを実行すると対話形式で設定が進んでいきます。

$ mysql.server start

$ mysql_secure_installation
(省略)
VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?

Press y|Y for Yes, any other key for No:

パスワードに関するプラグインを導入するかを聞かれています。今回は導入してみます。y を入力して Enter を押します。

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG:

パスワードポリシーをどの強度に設定するかを聞かれています。今回は 1 を入力して Enter を押します。

Please set the password for root here.

New password:

Re-enter new password:

root ユーザーに設定するパスワードを尋ねられています。ポリシーに合致する強度の任意のパスワードを入力して Enter を押します。なお、パスワード入力中はキーボードを打ち込んでもターミナル上には文字列は表示されませんが、実際に入力はできています。パスワードは確認のため 2 回の入力が求められます。

こちらのパスワードは開発で利用するため確実に控えておくようにします。

Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) :

入力したパスワードの強固さが判定されています。y を入力して Enter を押します。

By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) :

開発時の検証用のデフォルト匿名ユーザーを削除するか聞かれています。本教材においては検証用に残しておいて良いので、n を入力して Enter を押します。

Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) :

ネットワークを通じて別の PC から現在利用中の PC 上で稼働している MySQL にログインすることを防ぐか聞かれています。y を入力して Enter を押します。

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.


Remove test database and access to it? (Press y|Y for Yes, any other key for No) :

デフォルトで準備されている開発時の検証用データベース( test という名称) を削除するか聞かれています。本教材においては検証用に残しておいて良いので、n を入力して Enter を押します。

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) :

権限関連のテーブルを再読み込みするか聞かれています。 y を入力して Enter を押します。

All done!

以上で初期設定は完了です。


MySQL にログイン

mysql コマンドを利用して root ユーザーでログインします。パスワードは先ほど設定したものを利用します。

$ mysql -u root -p
Enter password:

ログインに成功すると次のように表示されます。

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.27 Homebrew

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

この状態になると SQL が利用できるようになるので、試しに MySQL がデフォルトで準備しているシステム用のテーブルからユーザー情報を読み込んでみます。

# mysql データベースの user テーブルの定義を表示する
mysql> DESC mysql.user;
(結果省略)

# mysql データベースの user テーブルの host, user カラムの情報を表示する
mysql> SELECT host, user FROM mysql.user;
(結果省略)

アプリケーションの開発に入ったら、このようにして SQL を用いてデータベース・ユーザー・テーブルを作成していきます。

それでは mysql モードから抜けておきます。抜けるには quit または \q です。

mysql> quit
Bye

$


議論

0 質問

このコースの評価は?