Intel Edisonで遊ぶときの開発環境とか

前回のエントリでとりあえずの環境構築は終わってプログラミングの準備が出来たので、今回は実際にコードを書いていく環境についてまとめる。前回も書いたけど環境はある程度整っているので、そんなに身構えなくても大丈夫。

Edison+Arduino拡張ボードを使っていたので、Arduino IDEを使うという選択肢もあった(というか、実際少し使った)けど、今回はIntelさんのお勧めに従ってmraa(むらー、と読むらしい)を使うことに。

なお、mraaを使うためには前提ライブラリをインストールする必要があるので、opkgを使ってインストールしておくこと。こんな感じでパッケージマネージャ登録して、更新かけてからインストールすればOK。

$echo "src mraa-upm http://iotdk.intel.com/repos/1.1/intelgalactic" > /etc/opkg/mraa-upm.conf

$opkg update

$opkg install libmraa0

mraaはEdisonないしGalileoからIOを発行するためのライブラリといった感じのもので、これがあれば簡単にデバイスとインタラクションすることが出来る。mraaがサポートしている言語には C/C++, Python, JavaScript(nodejs) があるのだけど、今回はお手軽さと自分のやりやすさでnodejsを使うことにした。nodejsを選んでよかったのはREPLが使えること(Pythonでもいいけど)。とりあえずインタラクティブな環境立ち上げて、お手軽に試せるのはやっぱり分かりやすい。

あと個人的な感覚だけど、nodejsのこの辺りのコードはなんとなく自然な感じがして、Edison特有な話とそうではない部分の境界線みたいなのがあまりないような気がした。完全に感覚的なものだけど、そういったソースコードの一貫性というか繋がりの良さみたいなのは大事だと思う。

逆に悪かったことは、github見にいってもnodejsだけはドキュメントがなくて「サンプル読め」しか書いてないところ。そこはもうちょっと頑張ってくださいよ、ほんと。

ちなみに、nodejsとは言ってもC/C++向けのライブラリにnodejsを被せただけらしいので、デバイスIOが非同期で実行されるというわけではないみたい。このへんは非同期にしてくれると、デバイスアクセスのディレイとかあまり気にしなくてよくなるので、制御しやすくなったりしないかなぁとちょっと思った。今後に期待。

続いてサンプルコード。適当にコメントを付けておくまでもなくほとんど見たまま。後はdigital 8のところにブザーをつないで実行すれば1秒間音がなるし、LEDつなげば1秒間光らせることが出来る。簡単ですね。

sample io using mraa

なお、ソースコードの編集をEdisonでやるのは多分大変(一応viは入ってたけど、なんか挙動が怪しかったし、何より自分vimmerじゃないし)なので、PC側でコード書いて流し込むのがいいと思う。流し込み方は前回も書いたけどopkg経由でgitを入れて連携させるのが自分としては馴染みがあって楽だった。

別の方法としては、Intelが提供しているIoT向けのIDE(Intel® XDK IoT Edition | Intel® Developer Zone)もあるのでこちらを利用してもよい。IDE使うとデバッガが使えるのがいいのと、後はこのIDE経由で流し込んだコードはEdisonを再起動させても勝手に再開させてくれるのが楽なところかな。自分の環境ではやたら重くて固まりやすかったので、あまり使わなかったけど。

とりあえず、これで開発の準備は整ったかな。