前書き

https://golang.org [Go]は、Googleの不満から生まれたプログラミング言語です。 開発者は、効率的に実行されるがコンパイルに長い時間を要する言語を選択するか、プログラミングは容易であるが生産では非効率的に実行される言語を選択する必要がありました。 Goは、3つのすべてを同時に使用できるように設計されています。つまり、高速コンパイル、プログラミングの容易さ、および運用環境での効率的な実行です。

Goは、さまざまなプログラミングプロジェクトで使用できる汎用性の高いプログラミング言語ですが、ネットワーキング/分散システムプログラムに特に適し、「クラウドの言語」としての評価を得ています。 現代のプログラマーが強力なツールセットでより多くのことができるように支援し、フォーマットを言語仕様の一部にすることでフォーマットに関する議論を取り除き、単一のバイナリにコンパイルすることで展開を容易にします。 Goは非常に少ないキーワードセットで習得しやすく、初心者にも経験豊富な開発者にも最適な選択肢です。

このチュートリアルでは、ローカルのWindows 10マシンにGoをインストールし、コマンドラインからプログラミング環境をセットアップする方法を説明します。

前提条件

インターネットに接続された管理アクセスを備えたWindows 10マシンが必要です。

ステップ1-PowerShellを開いて構成する

ほとんどのインストールとセットアップはコマンドラインインターフェイスで完了します。これは、コンピューターと対話する非グラフィカルな方法です。 つまり、ボタンをクリックする代わりに、テキストを入力し、テキストを介してコンピューターからフィードバックを受け取ります。 _shell_としても知られるコマンドラインは、コンピューターで毎日行うタスクの多くを変更および自動化するのに役立ち、ソフトウェア開発者にとって不可欠なツールです。

PowerShellは、コマンドラインシェルインターフェイスを提供するMicrosoftのプログラムです。 管理タスクは、操作を実行できるhttps://dotnet.microsoft.com/[.NET]ソフトウェアフレームワークの特殊なクラスである_cmdlets_(発音_command-lets_)を実行することにより実行されます。 2016年8月にオープンソース化されたPowerShellは、WindowsおよびUNIXシステム(MacおよびLinuxを含む)の両方のプラットフォームで利用できるようになりました。

Windows PowerShellを見つけるには、画面の左下にある[スタート]メニューアイコンを右クリックします。 メニューが表示されたら、[検索]をクリックし、検索バーに「+ PowerShell +」と入力します。 オプションが表示されたら、デスクトップアプリから* Windows PowerShell *を右クリックします。 このチュートリアルでは、[管理者として実行]を選択します。 *このアプリにPCへの変更を許可しますか?*を求めるダイアログボックスが表示されたら、*はい*をクリックします。

これを行うと、次のような単語の文字列を含むテキストベースのインターフェースが表示されます。

image:https://assets.digitalocean.com/articles/eng_python/Win10SetUp/Win10SetUp.png [Windows 10 PowerShell]

次のコマンドを入力して、システムフォルダーから切り替えます。

cd ~

その後、 `+ PS C:\ Users \ +`などのホームディレクトリに移動します。

インストールプロセスを続行するには、最初にPowerShellを介してアクセス許可を設定する必要があります。 デフォルトで最も安全なモードで実行するように設定されていますが、管理者として設定できる権限のレベルはいくつかあります。

  • * Restricted *はデフォルトの実行ポリシーです。 このモードでは、スクリプトを実行できず、PowerShellは対話型シェルとしてのみ機能します。

  • * AllSigned *を使用すると、信頼できる発行元によって署名されたすべてのスクリプトと構成ファイルを実行できるようになります。つまり、信頼できる発行元によって署名された悪意のあるスクリプトを実行する危険にさらされる可能性があります。

  • * RemoteSigned *を使用すると、信頼できる発行元によって署名されたインターネットからダウンロードしたスクリプトと構成ファイルを実行できます。これらの信頼できるスクリプトが実際に悪意がある場合、再びマシンを脆弱性にさらします。

  • *無制限*は、ファイルがインターネットからダウンロードされたことを理解したことを確認するとすぐに、インターネットからダウンロードされたすべてのスクリプトと構成ファイルを実行します。 この場合、デジタル署名は必要ないため、インターネットからダウンロードした未署名の潜在的に悪意のあるスクリプトを実行する危険にさらされる可能性があります。

このチュートリアルでは、 `+ RemoteSigned `実行ポリシーを使用して、現在のユーザーのパーミッションを設定します。 これにより、PowerShellは、「 Unrestricted +」権限の場合と同じように権限を広げることなく、信頼できるスクリプトを受け入れることができます。 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 +`のように動作します。 Chocolateyは、オープンソースバージョンで利用でき、アプリケーションとツールをすばやくインストールするのに役立ちます。 これを使用して、開発環境に必要なものをダウンロードします。

スクリプトをインストールする前に、スクリプトを読んで、マシンに加えられる変更に満足していることを確認してください。 これを行うには、.NETスクリプトフレームワークを使用して、ターミナルウィンドウ内にChocolateyスクリプトをダウンロードして表示します。

まず、インターネット接続設定をInternet Explorerと共有する「+ $ script +」というWebClientオブジェクトを作成します。

$script = New-Object Net.WebClient

+ | +`で `+ $ script`オブジェクトを + Get-Member In`クラスにパイプすることで利用可能なオプションを見てみましょう:

$script | Get-Member

これにより、このWebClientオブジェクトのすべてのメンバー(プロパティとメソッド)が返されます。

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-Text Editor Nanoのインストール(オプション)

この手順では、コマンドラインインターフェイスを使用するテキストエディターである_nano_をインストールします。 nanoを使用して、PowerShell内でプログラムを直接作成できます。 メモ帳などのグラフィカルユーザーインターフェイスを備えたテキストエディターを使用することもできるため、これは必須の手順ではありません。 PowerShellの使用に慣れるため、このチュートリアルではnanoの使用をお勧めします。

Chocolateyを使用してnanoをインストールします。

choco install -y nano

`+ -y +`フラグは、確認を求められることなくスクリプトを実行することを自動的に確認します。

nanoをインストールしたら、 `+ nano +`コマンドを使用して新しいテキストファイルを作成できます。 このチュートリアルの後半で使用して、最初のGoプログラムを作成します。

ステップ4-Goのインストール

前のステップでnanoを使用した場合と同様に、Chocolateyを使用してGoをインストールします。

choco install -y golang

PowerShellはGoをインストールし、そのプロセス中にPowerShell内で出力を生成します。 インストールが完了すると、次の出力が表示されます。

OutputEnvironment 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

次のような出力が表示されます。

Outputgo version

Goをインストールしたら、開発プロジェクト用のワークスペースをセットアップできます。

ステップ5-Goワークスペースの作成

Chocolatey、nano、Goがインストールされたので、プログラミングワークスペースを作成できます。

Goワークスペースのルートには2つのディレクトリが含まれます。

  • + src +:Goソースファイルを含むディレクトリ。 ソースファイルは、Goプログラミング言語を使用して記述するファイルです。 Goコンパイラは、ソースファイルを使用して実行可能なバイナリファイルを作成します。

  • + bin +:Goツールによってビルドおよびインストールされた実行可能ファイルを含むディレクトリ。 実行可能ファイルは、システムで実行され、タスクを実行するバイナリファイルです。 これらは通常、ソースコードまたは別のダウンロードされたGoソースコードによってコンパイルされたプログラムです。

`+ src `サブディレクトリには、複数のバージョン管理リポジトリ(https://git-scm.com/[Git]、https://www.mercurial-scm.org/[Mercurial]、http://など)を含めることができますbazaar.canonical.com [Bazaar])。 プログラムがサードパーティのライブラリをインポートするときに、 ` github.com `や ` golang.org `のようなディレクトリが表示されます。 ` github.com `のようなコードリポジトリを使用している場合は、プロジェクトとソースファイルもそのディレクトリに配置します。 これにより、プロジェクト内のコードの標準的なインポートが可能になります。 _Canonical_インポートは、 ` 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.go

1.8でのGoワークスペースのデフォルトディレクトリは、ユーザーのホームディレクトリで、 `+ go `サブディレクトリ、または ` $ HOME / go `があります。 1.8より前のバージョンのGoを使用している場合、ワークスペースに ` $ HOME / go +`の場所を使用することは依然としてベストプラクティスと見なされます

次のコマンドを発行して、 `+ $ HOME +`ディレクトリに移動します。

cd $HOME

次に、Goワークスペースのディレクトリ構造を作成します。

mkdir go/bin, go/src

これにより、次のディレクトリ構造が適切に配置されます。

└── $HOME
   └── go
       ├── bin
       └── src

Go 1.8より前は、 `+ $ GOPATH +`というローカル環境変数を設定する必要がありました。 明示的に要求する必要はなくなりましたが、多くのサードパーティツールが設定されているこの変数に依存しているため、それは依然として優れたプラクティスと考えられています。

インストールにChocolateyを使用したため、この環境変数はすでに設定されているはずです。 次のコマンドでこれを確認できます。

$env:GOPATH

`+ sammy +`の代わりにユーザー名を使用して、次の出力が表示されます。

OutputC:\Users\\go

Goがツールをコンパイルしてインストールすると、それらは + $ GOPATH / bin +`ディレクトリに置かれます。 便宜上、ワークスペースの `+ bin`サブディレクトリを + $ PATH`に追加するのが一般的です。 PowerShellで `+ setx +`コマンドを使用してこれを行うことができます。

setx PATH "$($env:path);$GOPATH\bin"

これにより、システムの任意の場所でGoツールを使用してコンパイルまたはダウンロードしたプログラムを実行できるようになります。

ワークスペースのルートが作成され、 `+ $ GOPATH +`環境変数が設定されたので、次のディレクトリ構造で将来のプロジェクトを作成します。 この例では、https://www.github.com [github.com]をリポジトリとして使用していることを前提としています。

$GOPATH/src///
$GOPATH/src///

この方法でプロジェクトを構築すると、 `+ go get +`ツールでプロジェクトを利用できるようになります。 また、後で読みやすくなります。

これを確認するには、 `+ go get `コマンドを使用して ` godo +`ライブラリを取得します。

go get github.com/digitalocean/godo

ディレクトリを一覧表示することで、 `+ 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で開いたら、プログラムを入力します。

hello.go

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で次の出力が生成されます。

OutputHello, World!

この手順では、基本的なプログラムを使用して、Goワークスペースが適切に構成されていることを確認しました。

結論

おめでとうございます。 この時点で、ローカルのWindowsマシンにGoプログラミングワークスペースが設定され、コーディングプロジェクトを開始できます!