導入
Goは、Google社内の不満から生まれたプログラミング言語です。開発者は常に、実行効率は高いもののコンパイルに長い時間がかかる言語と、プログラミングは簡単だが本番環境では非効率な言語のどちらかを選ばざるを得ませんでした。Goは、高速なコンパイル、プログラミングの容易さ、そして本番環境での効率的な実行という、この3つを同時に実現するように設計されました。.
Goは様々なプログラミングプロジェクトに使用できる汎用性の高いプログラミング言語ですが、特にネットワーク/分散システムアプリケーションに適しており、「クラウドの言語」として知られています。Goは、堅牢なツールセットを用いて現代のプログラマーがより多くのことを実現できるようにすることに重点を置いており、フォーマットを言語仕様の一部にすることでフォーマットに関する議論を排除し、単一のバイナリにコンパイルすることでデプロイメントを簡素化しています。Goはキーワードが非常に少なく、習得しやすいため、初心者から経験豊富な開発者まで、誰にとっても最適な選択肢です。.
このチュートリアルでは、ローカルの Windows 10 マシンに Go をインストールし、コマンド ライン経由でプログラミング環境を設定する手順を説明します。.
前提条件
- インターネットに接続された、管理アクセス権を持つ Windows 10 デバイスが必要です。.
ステップ1 – PowerShellを開いて構成する
インストールとセットアップの大部分は、コマンドラインインターフェースで行います。コマンドラインインターフェースとは、コンピュータを操作するための非グラフィカルな方法です。つまり、ボタンをクリックする代わりにテキストを入力し、コンピュータからテキスト形式でフィードバックを受け取ります。コマンドライン(シェルとも呼ばれます)は、コンピュータで日常的に行う多くのタスクを変更および自動化するのに役立ち、ソフトウェア開発者にとって不可欠なツールです。.
PowerShellは、コマンドラインシェルインターフェースを提供するMicrosoftのプログラムです。管理タスクは、.NETソフトウェアフレームワークの特殊なクラスであるコマンドレット(「コマンド」と発音されます)を実行することで実行されます。2016年8月にオープンソース化されたPowerShellは、WindowsとUnix系システム(MacとLinuxを含む)の両方で、プラットフォームを問わず利用可能です。.
Windows PowerShell を見つけるには、画面左下のスタートメニューアイコンを右クリックします。メニューが表示されたら、「検索」をクリックし、検索バーに「PowerShell」と入力します。オプションが表示されたら、デスクトップアプリから Windows PowerShell を右クリックします。このチュートリアルでは、「管理者として実行」を選択します。このプログラムが PC に変更を加えることを許可するかどうかを確認するダイアログボックスが表示されたら、「はい」をクリックします。.
これを実行すると、次のような単語の文字列を含むテキストベースのインターフェースが表示されます。
次のコマンドを入力してシステム フォルダーを終了します。
cd ~
すると、PS C:\Users\sammy のようなルート ディレクトリに移動します。.
インストールプロセスを続行するには、まずPowerShellで権限を設定する必要があります。デフォルトでは、最も安全なモードで実行するように設定されていますが、管理者として設定できる権限にはいくつかのレベルがあります。
- デフォルトの実行ポリシーは「制限あり」です。このモードではスクリプトを実行できず、PowerShellは対話型シェルとしてのみ機能します。.
- AllSigned を使用すると、信頼できる発行元によって署名されたすべてのスクリプトと構成ファイルを実行できます。つまり、信頼できる発行元によって署名された悪意のあるスクリプトを実行するリスクにデバイスがさらされる可能性があります。.
- RemoteSigned を使用すると、信頼できる発行元によって署名された、インターネットからダウンロードしたスクリプトや構成ファイルを実行できますが、これらの信頼できるスクリプトが実際に悪意のあるものである場合は、デバイスが再び脆弱性にさらされることになります。.
- ファイルがインターネットからダウンロードされたことに気付くとすぐに、Unrestricted はインターネットからダウンロードされたすべてのスクリプトと設定ファイルを実行します。この場合、デジタル署名は不要であるため、デバイスはインターネットからダウンロードされた署名のない、潜在的に悪意のあるスクリプトを実行するリスクにさらされることになります。.
このチュートリアルでは、RemoteSigned実行ポリシーを使用して、現在のユーザーの権限を設定します。これにより、PowerShellは、無制限のライセンスの場合ほど多くの権限を課すことなく、信頼されたスクリプトを受け入れることができます。PowerShellで以下を入力してください。
Set-ExecutionPolicy -Scope CurrentUser
PowerShellは実行ポリシーの入力を求めます。RemoteSignedを使用するには、以下を入力してください。
RemoteSigned
ENTERキーを押すと、実行ポリシーの変更を確認するメッセージが表示されます。変更を適用するには「y」と入力してください。変更が適用されたかどうかを確認するには、デバイスの現在の権限を要求してください。
Get-ExecutionPolicy -List
次のような出力が得られるはずです。
Output
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser RemoteSigned
LocalMachine Undefinedこれにより、現在のユーザーがインターネットからダウンロードした信頼できるスクリプトを実行できるかどうかが検証されます。これで、Go 開発環境のセットアップに必要なファイルのダウンロードに進むことができます。.
ステップ2 – Chocolateyパッケージマネージャーをインストールする
パッケージマネージャーは、インストールプロセスを自動化するソフトウェアツールのセットです。これには、初期インストール、ソフトウェアのアップグレードと設定、そして必要に応じてソフトウェアの削除が含まれます。パッケージマネージャーは、ソフトウェアのインストール情報を一元管理し、システム上のすべてのソフトウェアパッケージを一般的な形式で管理できます。.
Chocolateyは、Windows向けに開発されたコマンドラインパッケージマネージャーで、Linuxのapt-getのように動作します。オープンソース版も提供されており、プログラムやツールを素早くインストールするのに役立ちます。開発環境に必要なものをダウンロードする際に活用してください。.
スクリプトをインストールする前に、スクリプトの内容をよく読んで、マシンにどのような変更が行われるかを確認してください。そのためには、.NET スクリプトフレームワークを使用して Chocolatey スクリプトをダウンロードし、ターミナルウィンドウに表示してください。.
まず、Internet Explorer とインターネット接続設定を共有する $script という WebClient オブジェクトを作成します。
$script = New-Object Net.WebClient
$script オブジェクトを | で Get-Member クラスにパイプして、利用可能なオプションを確認します。
$script | Get-Member
これにより、この WebClient オブジェクトのすべてのメンバー (プロパティとメソッド) が返されます。
. . .
[secondary_label Snippet of Output]
DownloadFileAsync Method void DownloadFileAsync(uri address, string fileName), void DownloadFileAsync(ur...
DownloadFileTaskAsync Method System.Threading.Tasks.Task DownloadFileTaskAsync(string address, string fileNa...
DownloadString Method string DownloadString(string address), string DownloadString(uri address) #method we will use
DownloadStringAsync Method void DownloadStringAsync(uri address), void DownloadStringAsync(uri address, Sy...
DownloadStringTaskAsync Method System.Threading.Tasks.Task[string] DownloadStringTaskAsync(string address), Sy…
. . .出力を見ると、PowerShellウィンドウにスクリプトと署名を表示するために使用されているDownloadStringメソッドを特定できます。このメソッドを使用してスクリプトを検査します。
$script.DownloadString("https://chocolatey.org/install.ps1")
スクリプトを確認した後、PowerShell で次のように入力して Chocolatey をインストールします。
iwr https://chocolatey.org/install.ps1 -UseBasicParsing | iex
iwr または Invoke-WebRequest コマンドレットを使用すると、Web からデータを抽出できます。このコマンドレットはスクリプトを iex または Invoke-Expression コマンドレットに渡し、スクリプトの内容を実行して Chocolatey パッケージ管理のインストールを実行します。.
PowerShellでChocolateyをインストールします。インストールが完了したら、chocoコマンドを使って追加ツールのインストールを開始できます。.
将来いつでも Chocolatey をアップグレードする必要がある場合は、次のコマンドを実行します。
choco upgrade chocolatey
パッケージ マネージャーをインストールすることで、Go プログラミング環境に必要なものの残りをインストールできます。.
ステップ3 – Nanoテキストエディターをインストールする(オプション)
このステップでは、コマンドラインインターフェースを使用するテキストエディターnanoをインストールします。nanoを使用すると、PowerShellで直接プログラムを記述できます。メモ帳などのグラフィカルユーザーインターフェースを備えたテキストエディターも使用できるため、これは必須のステップではありません。このチュートリアルでは、PowerShellの使い方に慣れるのに役立つため、nanoの使用を推奨しています。.
Chocolatey を使用して Nano をインストールします。
choco install -y nano
-y フラグは、確認を求めずにスクリプトを実行することを自動的に確認します。.
nano をインストールしたら、nano コマンドを使って新しいテキストファイルを作成できます。このチュートリアルの後半では、nano コマンドを使って最初の Go プログラムを作成します。.
ステップ4 – Goをインストールする
前の手順で nano を使用したのと同じように、Chocolatey を使用して Go をインストールします。
choco install -y golang
注: go は非常に短い単語であるため、パッケージのインストールやインターネットで Go 関連の記事を検索するときに golang という用語が使われることが多くなりました。Golang という用語は、Go のドメインである golang.org から生まれました。.
PowerShellはGoをインストールし、その過程でPowerShellに出力を生成します。インストールが完了すると、次の出力が表示されます。
Output
Environment Vars (like PATH) have changed. Close/reopen your shell to
see the changes (or in powershell/cmd.exe just type `refreshenv`).
The install of golang was successful.
Software installed as 'msi', install location is likely default.
Chocolatey installed 1/1 packages.
See the log for details (C:\ProgramData\chocolatey\logs\chocolatey.log).インストールが完了したら、Go がインストールされていることを確認できます。変更を確認するには、PowerShell を終了して管理者として再度開き、ローカルマシン上の Go のバージョンを確認してください。
go version
次のような出力が得られます。
Output
go version go1.12.1 windows/amd643.7.0Go をインストールしたら、開発プロジェクト用のワークスペースを設定できます。.
ステップ5 – Goワークスペースを作成する
Chocolatey、nano、Go がインストールされたので、プログラミング ワークスペースを作成できます。.
Go ワークスペースのルートには、次の 2 つのディレクトリが含まれます。
- src: Goのソースファイルが格納されているディレクトリ。ソースファイルとは、Goプログラミング言語で記述したファイルです。ソースファイルは、Goコンパイラによって実行可能なバイナリファイルを作成するために使用されます。.
- bin: Goツールによってビルドおよびインストールされた実行ファイルを含むディレクトリ。実行ファイルは、システム上で実行され、タスクを実行するバイナリファイルです。通常、これらはソースコードまたはダウンロードした他のGoソースコードからコンパイルされたプログラムです。.
src サブディレクトリには、複数のバージョン管理リポジトリ(Git、Mercurial、Bazaar など)が含まれる場合があります。アプリケーションがサードパーティのライブラリをインポートする場合、github.com や golang.org などのディレクトリが表示されます。github.com のようなコードリポジトリを使用している場合は、プロジェクトとソースファイルもそのディレクトリに配置します。これにより、プロジェクトにコードを正規にインポートできます。正規のインポートとは、github.com/digitalocean/godo のような完全修飾パッケージを指すインポートです。.
典型的なワークスペースは次のようになります。
.
├── bin
│ ├── buffalo # command executable
│ ├── dlv # command executable
│ └── packr # command executable
└── src
└── github.com
└── digitalocean
└── godo
├── .git # Git repository metadata
├── account.go # package source
├── account_test.go # test source
├── ...
├── timestamp.go
├── timestamp_test.go
└── util
├── droplet.go
└── droplet_test.go1.8 以降の Go ワークスペースのデフォルトディレクトリは、ユーザーのホームディレクトリにサブディレクトリ go または $HOME/go が追加されたディレクトリです。1.8 より前のバージョンの Go を使用している場合は、ワークスペースとして $HOME/go を使用するのがベストプラクティスです。.
$HOME ディレクトリに移動するには、次のコマンドを発行します。
cd $HOME
次に、Go ワークスペースのディレクトリ構造を作成します。
mkdir go/bin, go/src
これにより、次のディレクトリ構造が現在存在するようになります。
└── $HOME
└── go
├── bin
└── srcGo 1.8より前は、$GOPATHというローカル環境変数を設定する必要がありました。これはもはや必須ではありませんが、多くのサードパーティ製ツールが依然としてこの変数の設定に依存しているため、依然として推奨される方法です。.
インストールにChocolateyを使用したため、この環境変数は既に設定されているはずです。以下のコマンドで確認できます。
$env:GOPATH
sammy の代わりにユーザー名が入った次の出力が表示されます。
Output
C:\Users\sammy\goGo がツールをコンパイルしてインストールすると、$GOPATH/bin フォルダに配置されます。便宜上、ワークスペースの bin サブディレクトリを $PATH に追加するのが一般的です。これは、PowerShell の setx コマンドを使用して実行できます。
setx PATH "$($env:path);$GOPATH\bin"
これにより、Go ツールを使用してコンパイルまたはダウンロードしたプログラムをシステム上の任意の場所で実行できるようになりました。.
ワークスペースのルートを作成し、$GOPATH環境変数を設定しました。今後のプロジェクトでは、以下のディレクトリ構造でプロジェクトを作成します。この例では、github.comをリポジトリとして使用することを前提としています。
$GOPATH/src/github.com/username/project
https://github.com/digitalocean/godo というプロジェクトに取り組んでいる場合は、次のようにリストします。
$GOPATH/src/github.com/digitalocean/godo
プロジェクトをこのように構造化することで、go get ツールでアクセスしやすくなります。また、後々の可読性にも役立ちます。.
これを確認するには、go get コマンドを使用して godo ライブラリを取得します。
go get github.com/digitalocean/godo
注: Gitがインストールされていない場合は、Windowsでインストールするかどうかを尋ねるダイアログボックスが表示されます。「はい」をクリックして続行し、インストール手順に従ってください。.
ディレクトリを一覧表示すると、godo パッケージが正常にダウンロードされたことがわかります。
ls $env:GOPATH/src/github.com/digitalocean/godo
次のような出力が得られます。
Output
Directory: C:\Users\sammy\go\src\github.com\digitalocean\godo
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 4/10/2019 2:59 PM util
-a---- 4/10/2019 2:59 PM 9 .gitignore
-a---- 4/10/2019 2:59 PM 69 .travis.yml
-a---- 4/10/2019 2:59 PM 1592 account.go
-a---- 4/10/2019 2:59 PM 1679 account_test.go
-rw-r--r-- 1 sammy staff 2892 Apr 5 15:56 CHANGELOG.md
-rw-r--r-- 1 sammy staff 1851 Apr 5 15:56 CONTRIBUTING.md
.
.
.
-a---- 4/10/2019 2:59 PM 5076 vpcs.go
-a---- 4/10/2019 2:59 PM 4309 vpcs_test.goここまでで、Go ワークスペースを作成し、必要な環境変数を設定しました。次に、コードを使ってワークスペースをテストします。.
ステップ6 – シンプルなアプリを作成する
Goワークスペースの設定が完了したら、簡単な「Hello, World!」プログラムを作成しましょう。これにより、ワークスペースが正しく設定されていることを確認すると同時に、Goをより深く理解する機会にもなります。作成するのはGoのソースファイルであり、実際のプロジェクトではないため、この作業にワークスペースを使用する必要はありません。.
ホームディレクトリから、nano などのコマンドラインテキストエディターを開き、新しいファイルを作成します。
nano hello.go
テキスト ファイルが nano で開いたら、プログラムを入力します。
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}CTRL キーと X キーを押して nano を終了します。ファイルを保存するように求められたら、Y キーを押し、次に ENTER キーを押します。.
このコードはfmtパッケージを使用し、引数にHello, World!を指定してPrintln関数を呼び出します。これにより、プログラム実行時にHello, World!というフレーズがターミナルに表示されます。.
nano を終了してシェルに戻ったら、プログラムを実行します。
go run hello.go
作成した hello.go プログラムにより、PowerShell は次の出力を生成します。
Output
Hello, World!このステップでは、基本的なアプリケーションを使用して、Go ワークスペースが正しく構成されていることを確認しました。.
結果
おめでとうございます!これで、ローカル Windows マシン上に Go プログラミング ワークスペースがセットアップされ、コーディング プロジェクトを開始できるようになりました。










