RaspberryPi×Go言語で電子工作!モーションセンサーからSlackへ通知を送る

RaspberryPi×Go言語で電子工作!モーションセンサーからSlackへ通知を送る

小島

小島

※本記事は「eureka tech blog」の記事をもとに編集された記事です

はじめまして、エウレカという会社でWebエンジニアをしている小島と申します。

業務ではpairsというサービスの開発・運用チームで、pairsをGo言語で書き直すフルスクラッチ開発を担当しています。自宅では自作スマート家電開発・スマートホーム化を目指し趣味で「Raspberry Pi」を使用して電子工作したりしています。

今回はRaspberry Pi × Go言語で「センサーに手をかざすと通知が来る」という、外部ハードウェアと連携させて動かす仕組みをつくってみようと思います。Raspberry Piを買ったけれど、何をしたら良いのかわからないという方や、電子工作に興味のある方の参考になれば幸いです。

Raspberry Pi上にGo環境を設定する

開発時の動作確認を簡単にするため、Raspberry Pi上に直接Goの開発環境をつくります。

使用機器

本体:Raspberry Pi TypeB 512MB

Raspberry Pi Type B 512MB

Raspberry Pi Type B 512MB

  • RS Components Ltd (ソースマーキング及び販売 Umemoto LLP)
  • 価格¥ 4,820(2016/01/14 17:48時点)
  • 商品ランキング28,307位

OS:Raspbian JESSIE https://www.raspberrypi.org/downloads/raspbian/
SDカード:32GB http://www.amazon.co.jp/dp/B004BDNLZI

1. 各種パッケージのインストール

Goを「apt-get」でインストールできれば一番手っ取り早かったのですが、うまく動かない・古いバージョンしかないなど環境設定だけで辛くなりそうでしたのでここはGoのソースをクローンして直接ビルドします。

まずはGoをビルドするのに必要なパッケージをインストールします。


$ sudo apt-get install -y gcc libc6-dev mercurial

[/sourcecode]

2. Goのソースコードをクローン


$ cd /usr/local
$ sudo hg clone -u default https://code.google.com/p/go
[/sourcecode]

作業フォルダ直下にGoがダウンロードされます。

3. Goをビルド


$ cd go/src
$ sudo ./make.bash
[/sourcecode]

※ビルドに30分以上はかかりますので、ご辛抱ください。

4. 最後にGOROOT,PATH,GOPATHを設定

#ダウンロードしたgoファイルパスを指定
export GOROOT=/path/to/go
# go コマンドを使用するためのパス設定
export PATH=$PATH:$GOROOT/bin
# go get でソースをダウンロードするファイルパス
export GOPATH=/repos/gohome # どのディレクトリでも指定可

[/sourcecode]

さて、これでGoを使用できる環境が整いました。

Goを動かしてみる

「Hello World」で動作を確認します。
適当なディレクトリに下記「main.go」ファイルを作成し、「go run」コマンドで実行します。


package main

import "fmt"

func main() {
fmt.Println("Hello world!")
}
[/sourcecode]


$ go run main.go
Hello world!
[/sourcecode]

これでやっと「Raspberry Pi」でGoの実行環境が整いました。
次はハードウェアとの連携をしてみましょう。

この記事のシェア数

小島
小島 pairs バックエンド・フロントエンド / 小島 広樹

pairsのweb版開発を担当しています。 主にバックエンドですが、フロントも少しやってます。 Androidが好きで学生時代からAndroidアプリ開発をやっていましたが、気がついたらなぜかwebエンジニアになってました。 最近は人工知能・機械学習に興味があります。

このメンバーの記事をもっと読む
電子工作部 | 15 articles
デザイン力×グローバルな開発体制でDXをトータル支援
お問い合わせ 会社概要DL