クリエイター手抜きプロジェクト[526]IoT IchigoLatte編 関数を使う/古籏一浩

投稿:  著者:  読了時間:6分(本文:約2,900文字)



今回は、関数について説明します。LEDを点滅させるプログラムで、キーが押されたらすぐに終了できるようにするために、必要なのが関数です。

JavaScriptの関数は、必要な値を渡すと何かしらの処理を行い、結果を返します。関数は使用する前に、処理内容を定義する必要があります。

JavaScriptで関数を定義するにはfunctionを使います。IchigoLatteでの関数定義も、一般的なJavaScriptと基本的には同じです。関数定義は以下の構文になります。

function 関数名(パラメーター1,...,パラメーターN){
何らかの処理
return 戻り値
}

場合によっては、パラメーターがまったくないこともありますし、戻り値がないこともあります。




まずは、簡単な足し算をした結果を返す関数を作ってみましょう。2と5を足した結果を返すプログラムは、以下のようになります。

function add(a,b){
var c=a+b;
return c;
}
var n=add(2,5);
log(n,"\n");

function add(a,b){ のaddが関数名になります。aとbが関数に渡された値を入れる変数になります。

ちなみに、この変数aとbは関数内でのみ有効な変数です。このような特定の範囲内でのみ使える変数を、ローカル変数と呼びます。

関数内では変数aとbの値を足した結果を、変数cに入れています。その後、returnで計算した結果を返しています。

関数は定義しただけでは実行されません。また、一般的なJavaScriptでは、関数はプログラムのどこに書いても動作しますが、IchigoLatteでは呼び出す前に定義されている必要があります。

つまり、以下のようにするとIchigoLatteでは動作しません。

var n=add(2,5);
log(n,"\n");
function add(a,b){
var c=a+b;
return c;
}

プログラムを実行すると、2+5の結果である7が表示されます。

lash>ms .
7
lash>■

今回のように決まった値を計算するだけでは、関数を定義した意味がありません。そこで、ユーザーが入力した値に5を足した結果を、返すようにしてみましょう。まず、関数を以下のように変更します。

function add(a){
var c=a+5;
return c;
}

これで、5を足した結果を返す関数になります。

次にユーザーからの入力ですが、IchigoLatteではユーザーからの数値入力を行うinput()メソッドが用意されています。一般的なJavaScriptであれば、prompt()メソッドに該当します。

IchigoLatteのinput()は、10進数の値しか入力できません。0xで始まる16進数や8進数などは入力できません。入力しても予期せぬ値になることがあります。

ユーザーから入力された値に5を足した結果を返すプログラムは、以下のようになります。

function add(a){
var c=a+5;
return c;
}
var b=input();
var n=add(b);
log(n,"\n");

関数はいくつでも定義できます。と書きたいところですが、IchigoLatteは使えるメモリが少ないため、変数や関数などの合計が一定数を越えるとエラーで動作しなくなります。

どこまで使えるかは、IchigoLatteのバージョンによっても異なりますが、だいたい32個ほどと考えておけばよいでしょう。

もうひとつ、関数には制約があります。それは関数名は最大7文字まで、ということです。実は名前の長さが7文字までというのは、関数だけでなく変数名も同じです。

とにかくメモリが少ないので、IchigoLatteにはこのような制約があります。他にもオブジェクトで定義できるメソッド・プロパティは4つまでなど、いろいろな制約があります。

制約はありますが、やはりJavaScriptで手軽にプログラムできるのは便利です。ですから多少の制約は仕方ないでしょう。

次回は、、LED点滅のプログラムを改良しキーが押されたらすぐに終了できるようにします。


【古籏一浩】openspc@alpha.ocn.ne.jp
http://www.openspc2.org/

Google Home mini。なくても困らないけど、他の仕事しながら問いかけに答えてくれるので、便利と言えば便利。一番使うのはタイマー。次は天気。質問には答えてくれないことが多いけど、一応問いかけたりはします。

教育用のコンピューター「Micro:bit(マイクロビット)」認識しない原因が判明。様々なマシンに接続して、3つのマイクロビットとも認識しないので、残っている原因はmicro USBケーブルしかない。

電源は入るし、動くけど、デバイスとして認識されない。で、新品の新たなケーブルを購入し接続したら、あっさりとUSBドライブとして認識されました。IchigoJamとかでは問題なかったのに(IchigoJamは電源系ラインしか使ってないからという理由もあるかも)。

何にせよ、これでマイクロビットで遊べそう。

・InDesign CS6 JavaScript Reference
http://www.openspc2.org/reibun/InDesignCS6/ref/

・Photoshop CS6 JavaScript Reference
http://www.openspc2.org/reibun/PhotoshopCS6/ref/

・Illustrator CS6 JavaScript Reference
http://www.openspc2.org/reibun/IllustratorCS6/ref/

・みんなのIchigoLatte入門 JavaScriptで楽しむゲーム作りと電子工作
https://www.amazon.co.jp/dp/4865940936
[正誤表]
http://www.openspc2.org/book/error/ichigoLatte/

・After Effects自動化サンプルプログラム 上巻、下巻
https://www.amazon.co.jp/dp/4844397591
https://www.amazon.co.jp/dp/4844397605

・IchigoLatteでIoT体験
https://www.amazon.co.jp/dp/B06X3X1CHP
http://digiconcart.com/dccartstore/cart/info/2561/218591

・みんなのIchigoJam入門 BASICで楽しむゲーム作りと電子工作
http://www.amazon.co.jp/dp/4865940332/

・Photoshop自動化基本編
http://www.amazon.co.jp/dp/B00W952JQW/

・Illustrator自動化基本編
http://www.amazon.co.jp/dp/B00R5MZ1PA/

・4K/ハイビジョン映像素材集
http://www.openspc2.org/HDTV/

・クリエイター手抜きプロジェクト
http://www.openspc2.org/projectX/