この記事はisaaxを使ってIoT開発をするためのシリーズ記事の第二回です。第一回目に関しては「isaaxではじめるIoTの第一歩!」を御覧ください。

そもそもユーザ環境変数とは

ユーザ環境変数(以下ユーザ変数)とは実行環境や実行ユーザ毎に定義する変数で、その値を使ってプログラムの処理分けを行います。環境変数の値によって処理を変えるのであれば、プログラミングコードを変更せずに動作を変えられるようになります。

LinuxやmacOSではホームディレクトリ( /home/isaax  /Users/isaax など)の下にユーザ環境変数を記述したファイル( .bash_profile など)を置いておきます。そして設定を変える時にはファイルを編集します。

自分の手元にPCがある場合にはこれでも十分です。しかし、IoTデバイスの多くは遠隔地に配置されており、ユーザ変数を編集するために各地を回るわけにはいきません。しかも台数が何百台もあったら作業は不可能です。

そこで使ってみたいのがisaaxのユーザ変数機能です。ユーザ変数をダッシュボードから簡単に設定、変更できる機能です。

isaaxのユーザ変数について

isaaxではユーザ変数をクラスター単位で設定します。クラスターとはIoTデバイスをグルーピングするものです。そのグループ毎にユーザ変数を設定します。デバイス単位ではないので注意してください。

数百台もあるIoTデバイスのユーザ変数を一つ一つ変更していくのは現実的ではありません。クラスター毎になっていることを意識してあらかじめグルーピングしておくと良いでしょう。

ユーザ変数を設定する

設定はダッシュボードのクラスター画面で、クラスター設定ボタンを押します。

表示された設定の中でユーザ変数を選択します。最初は何も設定されていません。環境変数追加ボタンを押します。

そうするとモーダルダイアログが開いて、環境変数名と値を入れる欄が表示されます。例えば キーを MY_ENV、値をHELLO などと設定します。最後に保存ボタンを押せば完了です。

プログラムから使う

ここで設定した値はプログラムから環境変数の一つとして扱えます。例えば以下のプログラミング言語では下記のようにアクセスできます。

  • Ruby
    • ENV[‘MY_ENV’]
  • Node.js
    • process.env.MY_ENV
  • Python
    • os.environ.get(‘MY_ENV’) # 事前に import os  が必要です

試してみる

例えば Node.js でisaaxプロジェクトを作っているとします。そうすると、以下のようなコードでユーザ変数にアクセスできます。

setInterval(() => {
  console.log("Hello, Isaax. I'm Raspberry Pi!");
  console.log(`My env is ${process.env.MY_ENV}`);
}, 5000);

ログにはちゃんとHELLOと出ているのが分かります。

ユーザ変数をアップデートする

次にダッシュボードに戻ってMY_ENVの値を こんにちは に変えてみます。

保存して数秒後にはログの内容が変わっているのが分かります。isaaxがIoTデバイスに対して環境変数が変わったことを通知し、それが実行結果に反映されたということです。コードを変えずに動作を変えられるので、運用担当者などにも扱いやすい仕組みです。

まとめ

isaaxのユーザ変数を使うことで、一時的な処理変更であったり、クラスターごとの処理分けを簡単に制御できるようになります。キーなど定期的に変更される情報などを管理する際にも便利です。ぜひお試しください!

isaax IoT

次は「isaaxのアプリケーションライフサイクルとシェルスクリプト機能について」をやってみましょう。