「ラズパイさんは百葉箱に恋をする?」を読みました!
もともと気になっていた本です。本の冒頭に、世の中にはAWS(Amazon Web Services)情報が多く、GCP(Google Cloud Platform)があまりないと書いてあります。
私の勝手な予想ですが、GCP界隈は三大巨塔のGoogle App Engine、BigQuery、Firebaseが目立ちすぎて、その他のサービスがあまり知られてないのではないのかなーと推測しています。
恥ずかしながら、本書で紹介されているCloud IoT Core、Cloud Dataflow、Data Studioは、はじめて知りました。
- 本書で使うもの
- センサーとラズベリーパイの接続
- GCPの設定
- ラズパイ側のデータ送信プログラム
- Data Studioによるレポート作成
- ラズパイが百葉箱に!
- 同じサークル参加者としての振り返り
- さいごに
本書で使うもの
- GCP(Google Cloud Platform)
- Raspberry Pi3 (ラズパイさん)
- BME280(センサー)
センサーとラズベリーパイの接続
まず最初に、センサーとラズベリーパイを接続します。
接続確認はコマンドラインで「i2cdetect」です。信号線によるデータのやり取りによって、センサーからのデータを送受信を行なうみたいです。
I2C (Inter Integrated Circuit; アイ スクエア シー) はシリアル通信の方式の一つです。
この規格に準拠したデバイス同士は、二本の信号線だけでデータのやりとりを行えます。
デバイス同士は対等ではなく、マスターに一つ以上の I2C スレーブを接続します。これらスレーブは同じ種類の IC である必要はありません。
各種センサー、LCD、モータードライバ、A/D コンバータなど、様々な IC が I2C に対応しています
GCPの設定
本書は「MyHyakuyobako」というプロジェクトを作成して、GCPの設定へと進みます。
スクリーンショットを豊富に掲載しつつ、グラフィカルに本書は進行するため、進めやすいと思います。
Cloud IoT Coreと暗号化接続する
GCP設定の最初の方で、公開鍵を作成しています。これによって、物理的なIoTデバイスとの通信をセキュアに保ちます。
これは、後ほどCloud IoT Core側で公開鍵の値と方式(本書ではRS256_X509)を設定します。
データを中継するCloud Pub/Sub
データを中継するサービスです。私はRedisのPub/Subを使ったことがあるので、すんなり理解できました。
送信者から複数(または単一)の受信者へ、非同期でいつでも好きなタイミングでデータを送ることができます。概念的には、モバイルアプリのプッシュ通知と似ていると言えるかもしれません。
データを溜めるBigQuery
テーブルを作成します。百葉箱(ラズパイさん)から送られてきたデータを溜めておく場所です。
本書にスクリーンショットがあるのですが、普通にRDBのカラムと似ていました。スキーマは、画面から設定することも、JSONのような形式でテキスト編集することもできます。
データを変換するCloud Dataflow
データの変換を担います。プログラムが組めるので、わりと複雑なことまで可能です。
なお、本書ではGCPが予め用意しているテンプレートを使っています。ここで変換した結果を、最終的にBigQueryに保存します。
百葉箱ビッグデータの完成です!
ラズパイ側のデータ送信プログラム
ラズパイ側では、BME280(センサー)から取得したデータを、GCPへ送るためのプログラムが必要です。
なお、本書のプログラムはPythonで記述されています。412行のプログラムで少し長いですが、本の下部に簡単なソース解説があります。参考にしながら理解を深めていきます。
Data Studioによるレポート作成
BigQueryにデータが溜まるようになってきたら、最後にレポートを作成します。
Data Studioを使うと、折れ線などのグラフィカルな描画が可能です。
ラズパイが百葉箱に!
まとめると、以下のような実装になります。
- ラズパイに接続したセンサー情報を、プログラムで Cloud IoT Coreへ送る
- Cloud Pub/Subがデータを中継する
- Cloud Dataflowが、BigQueryにデータを保存する
- Data StudioでBigQueryのデータを取り出し、レポートを作成する
同じサークル参加者としての振り返り
Qiitaに、執筆者であるしゅういちろさんの「技術書典5 サークル参加の振り返り」があります。僭越ながら読ませていただきました!
部数は後輩と併せて80部印刷
「印刷は80部、急きょ対面電書でダウンロード版を準備」のくだりを、まさに私も経験しました。
初参加の技術書典4で、私は「コピー誌として80部を印刷」「対面電書によるダウンロード販売」を実施しました。
50部は少なそうだけど、100部は多いという感覚があります。
Microsoft Wordでの執筆
私は、今回の技術書典5向けの本は「Re:VIEW」を使って書きました。
しかし、前回の「Firebase Realtime Database と React.js で始めるリアルタイム アプリケーション入門」は、Googleドキュメントを使って書いてます。
執筆方式の使い分けですが、個人的には以下のような印象を持っています。
- 画像やスクリーンショットを多用する場合は、Wordで書く
- 文字やプログラムが中心であれば、Re:VIEWなどで書く
なんだかんだ、画像を自由自在に柔軟に扱えるWordやGoogleドキュメントは便利だと思っています。
昨日までと違う自分になれる
最後の「参加してみて」の感想に、とても感動しました!「昨日までと違う自分になれる」は、同意しかありません。
私の場合は、以下のような感想を持っています。
- 本を書こうとすると、順序だてて体系的にまとめる必要があり、否が応でも知識が整理されて成長します。
- 自分が持っている知識を共有した本が売れると、自分が必要とされている感が高まり、やる気が出ます。
- 本を書くのは、時間もかかり大変な作業です。でも、いざ終わってみると、すぐに次の本を書きたくなるくらいに楽しかったです。
さいごに
振り返り記事を読んでみて改めて思いましたが、本書は「Raspberry Pi + GCP +センサー」の技術書であるのみならず、気合のこもった本であると感じました。
「IoT + Serverless」の時流にのった本がお手頃価格で購入できますので、検討されてみてはいかがでしょうか?