こんにちは、キャスレーコンサルティング・SI(システム・インテグレーション)部のfkmtです。

今回は、Raspberry Piを使って、Lチカやってみます。

「ラズパイ」「Lチカ」で検索して出てくるのは、Pythonの例が多いと思います。
それを、そのままやっても面白くないので、Go言語でやります。

なお、掲載コードは次の環境で、動作検証を行っています。

  • Raspberry Pi 3 Model B
  • Raspbian GNU/Linux 9 (stretch)
  • go 1.9.1 (Linux ARMv6)

Goのインストール

まずは、Goをインストールします。

こちらを参考にどうぞ。

cd /usr/local/src

# RasberryPi3はARMv7だが、Goのサイトで提供されていないのでとりあえずARMv6入れる。
curl -L -O https://storage.googleapis.com/golang/go1.9.1.linux-armv6l.tar.gz

# checksum確認
diff \
  <(sha256sum go1.9.1.linux-armv6l.tar.gz | awk '$0=$1') \
  <(echo '65a0495a50c7c240a6487b1170939586332f6c8f3526abdbb9140935b3cff14c')

tar xzf go1.9.1.linux-armv6l.tar.gz

mv go /usr/local/

# PATHの設定
cat >> ~/.profile <<'END'
export PATH=$PATH:/usr/local/go/bin
END

source ~/.profile

# 確認
go version
#> go version go1.9.1 linux/arm

「go version go1.9.1 linux/arm」のように、バージョンが表示されればOKです。

Hello world

インストールのテストも兼ねて、まずはHello world。

cat > hello.go <<'END'
package main

import "fmt"

func main() {
    fmt.Printf("hello, world\n")
}
END

go run hello.go
#> hello, world

「hello, world」と表示されれば、OKです。

GOPATH

動作確認まで、できました。

次は、「Goに入ってはGoに従え」ということで、
Goの慣習に合わせた、ディレクトリ構成にしてみます。

以下のような、ディレクトリ構成にするのがGoの流儀のようです。

~/go
├── bin # `go install`コマンドでできたバイナリが配置される
├── pkg # 依存するパッケージがビルドされたものが置かれるっぽい
└── src # Goのソースコード

~/go$GOPATHとして、
これを起点に、モジュールやソースを探しに行くようです。

先程作った「hello.go」を、再構成します。

# GOPATHを`~/go`とするのであれば、設定はいらないようだが、一応設定。
cat >> ~/.profile <<'END'
export GOPATH=~/go
export PATH=$PATH:$GOPATH/bin
END

source ~/.profile

mkdir -p $GOPATH/src/hello

mv hello.go $GOPATH/src/hello/

# `$GOPATH/bin`にhelloコマンドができる。
go install hello

go installコマンドで、実行可能ファイルが$GOPATH/binにできます。

ディレクトリは、以下のようになります。

~go
├── bin
│   └── hello
└── src
    └── hello
        └── hello.go

$GOPATH/binにPATHを通しているので、helloで実行できます。

hello
#> hello, world

「hello, world」と表示されれば、OKです。


長くなってきたので、今回は一旦、ここまでとさせていただきます。
最後までお読みいただき、ありがとうございます。

続編は、2018年1月31日を予定しております。お楽しみに!!