isaax(アイザックス)は皆さんのIoTシステム開発や運営を簡単にしてくれるクラウドサービスになります。今回はそのisaaxを簡単に試す方法をステップを踏んで紹介します。

必要なもの

まず下記のデバイスやアカウントが必要になります。これからIoT開発をはじめていこうという方にとっては馴染みの深いものばかりだと思います。

  • Raspberry Pi
    またはLinux対応のデバイス。OSやネットワーク設定は終わっていることとします。
  • isaaxのアカウント
    こちらから登録できます
  • GitHubのアカウント
    BitBucketにも対応していますが、今回の記事ではGitHubを対象にします。
  • GitHubのリポジトリ
    空でかまいません。
  • デスクトップまたはノートPC
    以下PCとします。

isaaxでプロジェクトを作成(PC側の操作です)

isaaxにログインするとダッシュボードが表示されます。まず新規プロジェクトを作成します。

プラットフォームとしてGitHubを選びます。

最初はGitHub連携していないかも知れません(ユーザ登録時にGitHubを使っている場合にはすでに連携済みです)。その場合にはGitHub連携を行います。

GitHubでリポジトリへのアクセスを許可します。

そして、リポジトリを選択し、必要な情報を入力していきます。

入力内容は次のようになります。

項目
リポジトリ あらかじめ作成しておいた空のリポジトリを選んでください
更新方法 コミット
ブランチ master
プロジェクト名 分かりやすいものを設定してください

更新方法はソースコードを各デバイスにどのタイミングで反映するかを指定します。コミットする度にデバイスに反映する他、リリースを使った更新が選べます(マニュアルは執筆現在非サポートです)。リリースはGitHubのリリースを行ったタイミングで反映されます。開発中であればコミットで良いでしょう。本番環境下ではリリースにすることが多いかと思います。

ブランチはmaster以外のものが設定されていれば選べます。ブランチを分けることで、デバイスごとに更新するタイミングを変えるなど、より細かいワークフローに対応できます。

プロジェクトを作成するとプロジェクトトークンが作成されます。このコマンドはそのままコピーして、Raspberry Piなどのデバイスで実行します。ユーザはrootでなくてかまいません。

# Raspberry Pi側で実行します
$ curl -fsSL get.isaax.io | sh -s stable eyJ...UTs

このコマンドを実行すると、isaaxのプロジェクト画面でデバイスがリストアップされるはずです。デバイスは最初、Default クラスターに登録されます。このクラスターというのはデバイスをグルーピングするものです。分かりやすいラベリングであったり、更新するタイミングを変えるなどクラスターごとに設定を変更できます。

このコマンドが行っていること

上記コマンドを実行すると、 isaaxd というデーモンプログラムをインストールし、そして起動されます。このプログラムはisaaxプロジェクトの出力するログファイル( /var/isaax/log/isaaxd.log)を監視し、追加された内容を随時isaaxのクラウドへアップロードしています。また、クラウドで設定された内容を取得して実行内容に反映したり、Gitリポジトリの内容の取得、そしてIoTプロジェクトを自動実行します。上記のコマンドを実行し、後はPC側でソースコードを編集してプッシュすれば、それが自動的に反映されます。

IoTシステムの開発(PC側の操作です)

ここから実際にIoTプロジェクトをはじめていきます。といってもごく簡単なコードで試すだけです。プログラミング言語でよくあるHello World相当のことをIsaaxを使って実現してみましょう。

isaax.json の作成

デスクトップやノートパソコンなどで、IoTプロジェクトになるフォルダを作成します。そして、その中に isaax.json というファイルを作成します。isaax.json はisaaxプロジェクトの設定ファイルです。今回はデモとしてRubyを使ってみます。なお、Isaaxはプログラミング言語を問わずに使えます。Node.js/Java/Go/Pythonなど皆さんの好きなプログラミング言語を使ってください。isaax.jsonの内容を次のようにします。

{
  "name": "ruby-app",
  "version": "",
  "description": "ruby - raspberry-pi",
  "main": "app.rb",
  "author": "",
  "language":"ruby",
  "license": "",
  "scripts": {
     "start": "ruby app.rb"
  }
}

特に大事なのは scripts の中の start です。ここでisaaxが実行する内容を記述します。今回は app.rb というファイルを実行すると指定しています。

先ほどインストールした isaaxd はこの isaax.json を読み込み、ソフトウェアを自動実行します。今回の例で言えば ruby app.rb を実行し、その標準出力とエラー出力をログファイル( /var/isaax/log/isaaxd.log )に出力します。

app.rb の作成

そこで app.rb を isaax.json と同じフォルダの中に作成します。内容は次の通りです。

STDOUT.sync = true
while true do
  puts "Hello Isaax, I'm Raspberry Pi."
  sleep(5)
end

内容は見て分かる通り、5秒ごとに Hello Isaax, I’m Raspberry Pi. を標準出力するだけのプログラムです。isaaxではプログラムの標準出力と標準エラーを自動的にクラウドにアップロードしてくれます。ネットワークの仕組みであったり、繋ぎ込みなどを気にする必要はありません。そういった処理をプログラム側で書く必要もなく、ただ標準出力すれば良いだけです。

コードの反映(PC側の操作です)

ここまで書いたコードをGitHubのリポジトリに反映します。

$ git init .
$ git add .
$ git commit -m "First commit"
$ git remote add origin git@github.com:(作成したIsaax用のプロジェクト)
$ git push -u origin master

ここまで終わった時点ですでにisaaxは動き始めています。自動的にGitHubからソースコードをダウンロードし、処理を開始します(プロジェクトは /var/isaax/project 以下に配置されます)。ダッシュボードでプロジェクトに登録されているデバイスを見ると、ログが出力されているのが分かるでしょう。ネットワークのことを一切気にすることなく、ログの収集が開始されています。

コードの修正(PC側の操作です)

ここからさらにisaaxの面白さが体感できます。作成した app.rb をちょっと修正してみましょう。例えばこんな感じです。

STDOUT.sync = true
while true do
  puts "こんにちは Isaax, 私は Raspberry Piです。"
  sleep(5)
end

修正したらGitHubにプッシュします。そうするとisaaxのダッシュボードでコードが修正されたのを感知します。そして自動的にRaspberry Pi側のGitリポジトリを更新します。ログの内容も変わっているのに気付くはずです。

通常、PC側で修正したコードをIoTデバイスに反映するのは面倒です。GitHubなどを介したとしても、いちいちRaspberry Piにログインしてプルしなければなりません。isaaxを使えばそういった手間が一切なく、コードの修正と反映をごく手軽に行えるようになります。

まとめ

今回はisaaxを手軽に体験する方法について紹介しました。isaaxを使ってIoTプロジェクトを素早く立ち上げてください!

Isaax IoT

次は「isaaxのユーザ環境変数を使いこなそう」をやってみましょう。


3 Comments

isaaxのユーザ環境変数を使いこなそう – Isaax Camp · 2018-10-08 at 00:56

[…] 事の第二回です。第一回目に関しては「isaaxではじめるIoTの第一歩!」を御覧ください。 […]

isaaxのアプリケーションライフサイクルとシェルスクリプト機能について – Isaax Camp · 2018-10-08 at 01:01

[…] この記事はisaaxを使ってIoT開発をするためのシリーズ記事の第3回です。併せて第1回「isaaxではじめるIoTの第一歩!」、第2回「isaaxのユーザ環境変数を使いこなそう」も御覧ください。 […]

Raspberry Pi + Picamera でisaax をはじめよう – Isaax Camp · 2018-10-09 at 14:40

[…] isaaxではじめるIoTの第一歩! – Isaaxキャンプ […]

Leave a Reply

Your email address will not be published. Required fields are marked *