⚙️

Goの導入 for MacOS

2021/03/06に公開

シリーズの目次

  1. Goの導入 for MacOS
  2. パッケージ
  3. 変数とデータ型
  4. 条件分岐
  5. ループ処理
  6. 配列
  7. 関数

Go言語とは

Go言語は2009年、Googleが開発したオープンソースプロジェクトのプログラミング言語です。
2009年に登場してから10年ほど経ちましたが、プログラミング言語の中ではかなり新しい部類のプログラミング言語になります。

Go言語は主にWebサーバやWebアプリケーションの開発を得意としていますが、近年ではWeb系の開発以外にもスマートフォンアプリ開発、AI開発でも徐々に需要を増やしています。

「Go」だけで標記すると誤認される可能性があるので、「Go言語」や「Golang」と表記することが多くあります。

オープンソースプロジェクト

オープンソースとは、ソフトウェアのソースコード(プログラミング言語で記述された文字列)を無償で公開し、誰でも自由に改良・再配布ができるようにしたソフトウェアのことです。

対して、一般的なソフトウェアは利用料が必要となります。ソースコードを公開することはなく、その開発者でなければ修正などができません。

Go言語の特徴

1. シンプルな言語仕様

Go言語は複数のプログラマーが開発するのに向いているプログラミング言語です。
理由はGo言語は他のプログラミング言語に比べて、シンプルな構造だからです。

例えばプログラミング言語では繰り返し処理を行う時に、for文とwhile文の2つが準備されています。
しかし、Go言語の繰り返し処理はfor文しか存在していません。

他プログラミング言語の定番の処理までもシンプルにすることで、だれが作っても殆ど同じになる様に設計されています。 また、こうした機能の排除により,コンパイルの高速化や,予期せぬミスを減らすことを実現しています。

2. 処理が非常に高速

Go言語は処理が非常に高速な言語です。

例えばJavaのコンパイルでは、いったん中間言語というものになり、それを更に仮想マシンで機械語にコンパイルして実行するという二段階方式です。その為、コンパイルに時間がかかるうえに、仮想マシンを展開する分メモリリソースの消費が増えてしまいます。

一方のgo言語の場合、仮想マシンを使わずコンピューターが直接理解できる機械語へとコンパイルできるので、処理速度も速く、メモリの使用量も抑えられます。

3. 並行処理が可能

go言語には並行処理や並列処理が言語レベルで備わっています。
並行処理とは、コンピューターのCPUで複数の処理を同時に実行することを指します。

普段、私たちが、ブラウザで調べものをしながら、パワーポイントで資料を作り、メディアプレイヤーで音楽を再生するというように複数の処理を同時に行うことができるのは、OSに並行機能が備わっているからです。Go言語では、goroutine(ゴールーチン) やchannel(チャネル) という機能を使うことで複数のCPUを効率よく扱い、処理速度を向上させることが可能です。

みんな大好き「Gopherくん」

fiveyears
Gopher(ゴーファー)くんはGo言語の公式キャラクターです。
Gopherは日本語訳すると「ホリネズミ」です。

Go言語のインストール

  1. 公式ページに行き、「Download Go」 をクリックします。
  2. ダウンロードしたインストーラーを起動してポチポチ

    全項目「続ける」で問題ないです。
  3. ダウンロードしたらターミナルを起動し、whichコマンドでインストールに成功したかを確認
$ which go
/usr/local/go/bin/go

Pathを通す

Goを使うためには、GOPATHを設定する必要があります。
ここにimportする外部のライブラリが入りますので、GOPATH以下で開発しています。

.bash_profile の編集

.bash_profile はログインしたときに読み込まれる設定ファイルです。
ここに以下のように環境変数を定義します。

環境変数とは

OSが設定値などを永続的に保存し、利用者や実行されるプログラムから設定・参照できるようにしたもの。プログラムの実行時などに必要となる、利用者やコンピュータごとに内容が異なる設定値などを記録するために用いられる。

vimで .bash_profile を開いて、

vim .bash_profile

以下を記載して、保存。

export GOPATH=$HOME/development/go
export PATH=$PATH:$GOPATH/bin
export PATH=$PATH:/usr/local/go/bin

上記の変更を更新するために以下のコマンドを実行します。

$ source .bash_profile

以下のコマンドで自分の作業ディレクトリが表示されればPATHを通すのは成功です。
(usernameは各自のPCのユーザーを入力してください)

$ echo $GOPATH
> /Users/username/development/go

ソースファイルを作成

作業環を用意するために以下のような順番でファイル及びディレクトリを生成していきましょう。

$ cd $GOPATH
$ mkdir -p src/hello
$ cd src/hello
$ touch hello.go
cd: /Users/username/development/go: No such file or directory というエラーが発生する場合

export GOPATH=$HOME/development/go という設定はあくまで環境変数を設定するものであり、ディレクトリを形成するものではありません。その為、以下のようにディレクトリの作成を行うことで $GOPATH によって環境変数経由で該当するディレクトリへのアクセスが可能です。
(usernameはあなたのPCのユーザー名です)

cd /Users/username/
mkdir -p development/go

以上の流れで touch hello.go を生成したら、以下のようなGoの構文を記載しましょう。

package main

import "fmt"

func main() {
    fmt.Printf("hello Go\n")
}

ビルド & 実行

hello.goが存在するディレクトリで、下記のコマンドを打つことによってビルドが可能です。

$ go build

こうしてすると hello という実行ファイルが生成されるので、これを以下のコマンドで実行しましょう!

$ ./hello
> hello Go

ちなみにですが、以下のコマンドで ビルドと実行を同時に行うことができます。

$ go run hello.go
> hello Go

The Go Playground (ブラウザ上で実行)

環境構築を行わない場合でも このサイト を使うことでGo言語を実行することが可能です。ただ、実際の開発ではローカル環境使うことがほとんどなのでしっかり環境構築行うようにしましょう。

Discussion