JavaScriptだけでIoTネットワークを構築する方法

この記事では、**Alibaba Cloud**の**IoT**プラットフォーム上で**JavaScript**を使って開発者が簡単に**IoT**ネットワークを構築する方法を説明しています。

*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/implementing-an-iot-network-using-only-javascript_594140)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*

#概要
この例では、開発ハードウェアとしてDeveloper Kit（AliOS Thingsを移植したもの）を使用して、基板実装の温度センサからLink Developへのデータアップロードを実装し、デモにはWeb Appを使用しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/56d4f955-af07-2946-e722-e8c27e0d3b74.png)

#開発プロセス
####環境の設定
[AliOS Things](https://github.com/alibaba/AliOS-Things?spm=a2c65.11461447.0.0.79b2211bHiQTVz)は、アリババクラウドのIoTチームが開発中のIoT指向で拡張性の高いIoTオペレーティングシステムです。フロントエンド開発者の要求に応えるため、AliOS Thingsは、これまでCとC++でしか実装されていなかったIoT開発のためのJavaScriptをサポートするJavaエンジン「BoneEngine」を統合しています。BoneEngineは構文をシンプルにすることで、リソースが限られている組み込み機器でもJavaScriptアプリケーションを実行できるようにしました。

BoneEngineを使ってデバイスサイドの開発を行うには、事前に環境設定を行う必要があります。設定手順は以下の通りです。

1、Node.js（バージョン6.4.0以降、フロントエンド開発の場合はバージョン8.9.0以降を推奨）をインストールします。
2、シリアルポートまたはネットワーク経由でapp.binを更新するためのサポートを提供するbe-cliツールをインストールします: `npm i be-cli -g -P`先行のグローバルインストールが完了した後にbeを実行してもコマンドが見つからないと表示される場合は、`npm prefix -g`コマンドを実行してNode.jsのモジュールインストールパスを取得し、出力にあるグローバルインストールパスを環境変数の "Path "エントリに追加するだけでOKです。
3、**Windowsユーザーのみ)**Python、Visual Studio、AliOSプラグインをインストールします。続いて、ハードウェアUSBドライバをインストールします。
4、Gitをインストールし、AliOS Thingsのソースコードをダウンロードします: `git clone git@github.com:alibaba/AliOS-Things.git`

これで環境が設定できたので、開発を開始する準備ができました。

####クラウド上での開発
今回はLink Developを使用して、Alibaba Cloud上にIoTネットワークを設定します。**Create Project**（任意の名前をつけても構いません）＞Device Development＞Add Productを選択します。製品の種類は**Other**を選択し、通信方式は「WiFi」を選択し、データ形式は「Alink」を選択します。

Product Detailsで**Add Custom Features**を選択し、以下の機能を追加します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/eee81c57-6ae7-44d1-ade5-c4aee9a6e54e.png)

**Device Development** > **Add Debugging Devices** を選択し、デバイスの三重項に注意してください。

####デバイスでの開発
コンパイラでAliOS Thingsのソースコードディレクトリを開き、`AliOS-Things/framework/tinyengine/samples/app/lcd_shtc1_mqtt/device.js`ファイルを開き、Three Device Elementsを先ほど取得したDevice Tripletsに変更します。変更内容を保存します。

ターミナルを使ってサンプルアプリケーションをコンパイルします。`be -p samples/app/lcd_shtc1_mqtt.`

Developer Kit をコンピュータに接続し、`be connnect `を実行します。

コンパイルしたbinファイルをデバイスに書き込みます。`be push app.bin`

デバイスを再起動します。デバイスを再起動すると、デバイスは自動的にこのファイルをロードして実行し、同時にLink Developプラットフォームにアップロードします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/5ad7ed74-b499-342d-52bd-ccef810712b2.png)

#Webアプリでの開発
すぐに始められるように、ここではLink Developの新バージョンに統合されたWeb Appのビジュアル作成機能を利用します。必要なのは、吸湿器の部品をドラッグしてデータに接続するだけです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/6c6af55f-35b9-ddbf-796c-282ac4de6375.png)


経験豊富なフロントエンド開発者は、Bone.jsフレームワークを使ってハードコアなプログラミング機能を実行してみてください。ここでも JavaScript のみで実装できます: [https://bone.aliyun.com/bone-web/bonewebsdk.html?name=wpgl7p.](https://bone.aliyun.com/bone-web/bonewebsdk.html?name=wpgl7p.)

#結論
AliOS Things TinyEngineとLink Develop Bone.jsのミックスにより、フロントエンドの開発者は他のプログラミング言語を学ぶことなく、迅速かつシームレスにIoT開発を始めることができます。これは、Alibaba Cloud IoT Platformの互換性と独自性をも表しています。

Alibaba Cloud IoT Platformの詳細については、[www.alibabacloud.com/product/iot](https://www.alibabacloud.com/ja/product/iot) をご覧ください。

*アリババクラウドは日本に２つのデータセンターを有し、世界で60を超えるアベラビリティーゾーンを有するアジア太平洋地域No.1(2019ガートナー)のクラウドインフラ事業者です。
アリババクラウドの詳細は、こちらからご覧ください。
[アリババクラウドジャパン公式ページ](https://www.alibabacloud.com/ja)*