こんにちは、キャスレーコンサルティング・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日を予定しております。お楽しみに!!