見出し画像

「SORACOM GPS マルチユニット のデータを kintone に保存する」やってみた

SORACOMさんのGPS マルチユニットの話のつづきです。

SORACOMさんのセミナーを受けさせていただいたこともありまして、ご提供のサンプルの範囲はさくっとできました。次はついにkintone!

kintoneでIoTがやりたいんだ

そもそも私がやりたいのはkintoneでIoT。そこで、サイボウズ公認 kintone エバンジェリスト 片岡さんのQiitaの記事「SORACOM GPS マルチユニット のデータを kintone に保存する」をやってみることにしました。

しかしこれ、パッと見て一筋縄ではいかない感じ^^;。原因は私の知識不足です。

GPSマルチユニットの使い方だけマスターしても、kintoneの使い方だけをマスターしても、それらを連動させて動かせるかどうかというのはまた別の話です。

IoTを実装するために選択する技術や言語、ソフトやハード、またインフラに至るまで、やり方はひとつではないと思います。先人の知恵をありがたく参考にしつつも、あとは自分の過去の経験や地道な検証、ひらめきや運^^;を信じて挑むもの。「IoTは技術の総合格闘技」とはよく言ったものです。

前置きが長くなりましたが、今回データをkintoneに入れ込むには、以下のルートになります。

GPS マルチユニット->Unified Endpoint->SORACOM Funk->AWS Lambda->kintone

これを私の保有スキルと照らし合わせると。。。

kintoneアプリは作れるかな。あとGPSマルチユニットとSORACOM関連も前回サンプルを動かした実績があるのでなんとかなりそう。

問題は・・・AWS Lambda。

AWS Lambda

AWS。。。つかったことない^^;。Lambdaってなに?^-^;;

IoTを目指す以上、いやITでやっていく以上いつかは習得しないといけない、クラウドサービスの巨人「AWS」

ついにこの時がきました。^^;

AWSについては、サービス内容が多岐にわたりすぎて正直どこから手を付けていいかわからない。おそらく私の保有知識ではネットでググって内容を精査してという事をやってたらいつになることやら。。。

いやいやどんな複雑な技術もはじめの一歩はあるもの。それを踏み出すことが大事なのだ!^^;

そんなときは私のいつもの作戦、「初見の知識は書籍で一気に底上げ」だ!ということで早速書店へゴー!!

IoTデバイス×Webアプリでホームネットワーク AWSクラウドサービス開発テクニック 

うん。IoTの事例も豊富だしAWSのアカウントの取得から載ってる。発行も新しいし監修もアマゾンさん自身だし、これだな。

早速、第1章を参考に、AWSアカウント取得。

画像2

「これがAWSか。。。」^^;

ここから先は、本書やWebサイトを参考に興味のおもむくまま散策して(まあわかりませんでしたが)多要素認証 (MFA)も設定しました。

AWS Lambda実践ガイド

さて次はLambda(ラムダ)。AWSがはじめてだから、もちろんLambdaってのも触ったことない。Lambdaってなに?

色々とネットの海を検索した結果、私にとっては以下動画が大変わかりやすかったです。(本来有料コンテンツのようですが第1回は無料でYouTube公開してくださってるようです。ありがとうございます。)

Lambdaって、サーバーレス(?)なんだ。常時必要ないサーバーという意味でサーバーレスというのかな。
で、さっそく動画の大澤文孝先生の書籍を購入。本書、Lambdaの入門書としては定番のようです。

なるほど。Lambdaって結局なにかっていうと、さまざまなサービスを「糊付け」するものだそうです。

今回でいうと、SORACOMさんのサービスとkintoneを「糊付け」するのに使います。本書で使用している言語はJavaScriptではなくPythonですが、仕組みの理解や操作方法の習得については特に問題ありません。

参考にさせていただいたのは、第1章、第2章、Appendix A、Appendix B になります。

だいたい本書を中心にそのままトレースで問題なく基礎技術の習得はできましたが、今回、私のハマったポイントをひとつ。

画像6

ソースをいくら確認しても問題ないのに実行結果にうまく反映されない。なんで??って悩みました。

画面をよくみると 「Changes not deployed」 って書いてある。で、[Deploy] ボタンを押したら、緑の「Changes deployed」変わりました!明示的にここ押さないと反映されなかったんですね。^^;

使ったことがない設定画面は、目に入っていても実は見えていないことがよくあります。「心理的盲点」といいますが、そんなときは「意味のない設定は設定画面にはない」とあらためて画面を見つめなおすと、突破口が開けることがあります。今回はそれでした。

Node.js

一応、なんとか AWS Lambda の基本の「キ」の動作確認はできました。
ではさっそく、片岡さんのソースを動かします。とりあえず、本編QiitaのJavaScriptソースをコピペ実行。

画像4

うごかない。。。。ですよねー。^^;
動かない理由はQiitaにちゃんと書いてあります。

AWS Lambda のプログラムは、以下の node.js のパッケージ request-promise と moment を追加する必要があります。

Node.jsってなんだろ^^;。

書籍購入。本代に糸目はつけない。^^;

Node.js超入門[第3版]

本書籍、Node.jsのインストールから丁寧に書いてあります。また著者の掌田津耶乃(しょうだつやの)先生の文章もわかりやすくて面白い。本題とズレますが本書の最後に記載されている「おわりに」の一部を引用します。

(前略)「色々学んだけど、わからないことだらけ」(中略)それは挫折ではなく、あなたが確実に「進歩」した証拠です。(中略)いくつかの「わからない」を「わかった」に変えたのです。それは「進歩」です。大いなる、進歩!(後略)

大変励まされる文章です。ありがとうございます。

話はNode.jsにもどりまして。。。要するに今回必要な作業は

「Node.jsというJavaScriptの実行環境をインストールして、そこからnpmで落としてきたJavaScriptを、AWSにzip形式でアップロードする。」

ということみたいです。つまりそういうことだとわかるまでそれなりに時間がかかってしまいました。^^;

で実際、npmで落としてくるのは以下3つ

npm install moment
npm install request-promise
npm install request

さくっと書いてますが、最後の request が必要なことがなかなかわからなくで悩みました。よくよく調べたところ以下、Installationにちゃんと書いてありました。

あと本サイトをみていてちょっと気になったのが、本パッケージは非推奨との記載。ただ他に代替案もわからないし、なにがどう非推奨なのかもわからないので、一旦テストという名目で今の私には使うしかない。セキュリティ関連の問題ではないと信じて^^;利用。

あと、レイヤーのバージョンの互換性のあるランタイムは、片岡さんのQiitaでは Node.js 12.x、今回ダウンロードしたNode.jsは、14.17.0 (同梱 npm 6.14.13)だったので、どうしようかと思いましたが、結果的にNode.js 12.xとNode.js 14x.の両方設定しました。やり方としてあってるかはわかりません。

画像5

そのほか色々と試行錯誤、最後はいつものごとく動いてくれー!!と神頼み的な気持ちにもなりながら色々トライした結果、ついに。。。

画像6

「おお!やったー!」(リアルに声をあげたので、家族から「またなにかやらかしたか」の視線。で、事情を説明してお祝いに家族にアイスクリームをふるまいました。^^)

GPS マルチユニットの設定

あとは勢いに乗って片岡さんのQiitaの記事通り進めます。こっから先は、できる見通しが立ってる!いけるいける!!

完成!!!

画像6

できた!一部データが入ってないようなフィールドもあるけどできたよ!!

よかったー。こういうのは、一本道を通すまでが大変。先人の実績をそのまま再現しただけですがなんとか道を開くことができました。あとはちょこちょちょこ道幅を広げていけばいいんだ。

今回、kintoneでIoTが実現できただけでなく、AWS Lambda、Node.js など、新しいIT知識習得の足がかりもできました。^^

片岡さんはじめ、SORACOMさん、各書籍の著者の方々や、Webに色々な情報を掲載いただいてる方々には感謝しかありません。ありがとうございます。

追記

片岡さんからツイートいただきました。恐縮です。ありがとうございます。


この記事が気に入ったらサポートをしてみませんか?