クリエイター手抜きプロジェクト[460]IoT編 IchigoJamで入力した値に応じて計算させる
── 古籏一浩 ──

投稿:  著者:



今回は、IchigoJamでちゃんとしたプログラムを作ってみます。ちゃんとした、というと語弊があるかもしれません。今回作成するのは、入力した数値に応じて計算結果を表示させるプログラムです。

コンピューターのいいところは「ユーザーからの入力」と「条件判断ができる」ことです。

ユーザーからの入力ができなければ、常に決まった結果しか出すことができません。また、条件判断ができなければ、入力に応じたきめ細かい処理ができません。条件判断ができなければユーザーからの入力があっても決まった計算式に沿った結果しか出せません。

また、この入力と条件判断を行うために必要なものとして「変数」があります。今回は「入力」と「変数」を扱ってみましょう。




IchigoJamは文字の入力はできないので、数値だけの入力になります。もちろん、小数値も扱えないので入力できる数値は-32768〜32767になります。

IchigoJamで入力を行うにはINPUT命令を使います。INPUT命令は以下のように変数名を書く必要があります。というのも、変数に入力した数値が入るからです。ここでの変数名はAです。

INPUT A

ちなみにINPUT Aとしたあとは画面に?が表示され、数値の入力を待つ状態になります。この状態で数値を入力してリターンキーを押すと、変数Aに入力した数値が入ります。

INPUT A
?314

OK

しかし、入力しても画面には何も表示されずOKとなるだけです。入力された数値は変数Aに入ります。それでは変数Aに入っている数値を表示してみましょう。

変数の内容を表示するにはPRINT命令を使います。数値表示や計算を行う時に使った命令と同じです。PRINT命令のかわりに、省略形である?を使っても同じです。

PRINT A
314
OK

変数Aには入力した値が入ってることが確認できます。IchigoJamの変数はAからZまでのアルファベット26文字だけです。

今のコンピューターのプログラム言語は、Antやnumberのように好きな変数名をつけることができます。しかしIchigoJamでは、AからZまでのアルファベット1文字だけです。Axのような変数名を使うとエラーになってしまいます。

INPUT Ax
?Syntax error

入力した値が変数に入っているので、次に計算させます。簡単な計算として入力した値に1を確か結果を表示してみましょう。

前回は数値同士の計算でしたが、数値の代わりに変数を指定して計算させることができます。例えば、以下のようにすると変数Aの値は10になります。

INPUT A
?9  ←ここで9を入力してください
OK
A=A+1
OK
PRINT A
10

A=A+1の部分が計算式です。ここで=を使っていますが、これは算数や数学での=(等号記号)とは意味が違います。

IchigoJamに搭載されているBASIC言語での=は、右辺の計算結果を左辺に入れる、という意味になります。A←A+1ということです。これは変数Aの値を読み出し1を加算します。その結果を再び変数Aに入れるという意味になります。

さて、ここまでは命令を入力するだけでした。実際のところ、これはプログラムとは呼べません。そこで、今回のプログラムをちゃんとしたプログラムにしてみます。

BASICでは以下のように行番号をつけると、すぐに実行されず内部にプログラムとして記憶されます。

10 INPUT A
20 A=A+1
30 PRINT A

このプログラムを実行するには、以下のようにRUNと入力します。すると?が表示され数値の入力ができる状態になります。

RUN
?

数値を入力すると1が加算された数値が表示されます。

?456
457
OK

プログラムは一度入力してしまえば、何度でも実行することができます。上記のプログラムを再度実行するにはRUNと入力します。ちなみに、実行しているプログラムを中断するにはescキーを押します。

このプログラムを修正したい場合は、カーソルキーを動かして修正したい数値や文字の上で新たな文字を入力します。入力したらリターンキーを押せばプログラムが修正されます。

すでにあるプログラムを消去するにはNEWと入力します。これで、きれいにプログラムは消えます。

せっかくプログラムを作ったので保存しておきましょう。プログラムを保存するにはSAVE命令を使います。SAVE命令の後に0〜3までの値を指定します。省略すると前回指定した番号の領域に保存されます。

SAVE 0
Saved 34byte

プログラムはIchiogJamの内部(IC)に保存されます。ハードディスクやUSB、SDカードなどは不要です。不揮発メモリに保存するので書き込み、読み出しとも高速です。

再度電源を入れた後に、保存したプログラムを読み込むにはLOAD命令を使います。0番に保存してあれば、以下のようにすることで読み込むことができます。

LOAD 0
Loaded 34byte

ということで今回はここまでにしましょう。


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


これまで実際に見たことも経験したこともなかった、ランサムウェアが目の前に。というか、某会社に行ったときに「何か変な画面がでるけど」ということで確認。

Windows XPを起動すると、デスクトップ表示後に3つのウィンドウが表示され、英語のメッセージが…。ファイルを暗号化したので、戻したかったらBitCoinで支払ってね、というもの。テレビやWebなどでは取り上げられたりしていたので、話としては知ってました。

ユーザーが何かフォルダを開いたりアクションを行うと、金払えと書かれた内容のパワーポイントのデータ、HTMLファイル、テキストファイルがハードディスク内に増殖するという状態。

ちょっと操作しただけで500個くらいファイルが増殖(いずれも!RECで始まるファイル名)。とりえあず、Command.comでdelコマンドでファイルを削除。

この場合は、すんなり消える。しかし、結局何か他のことをすれば増えるので意味なし。そもそも、システムに感染しているので、どうしようもない。

原因はアンチウイルスソフトなどが全く入っていなかったということなのですが、他のWindows 7マシンなどにもネットワークを介して感染。合計3台に感染。

うち1台だけがファイルが暗号化され、残りの2台は暗号化されず。どうして暗号化されなかったのかは不明。

とりあえず全マシンをネットワークから物理的に切り離し。工場のマシンがやられるとどうしようもない状態になるけど、幸いにしてガードが堅かったせいか無事。もうひとつの工場はネットワークが違うので無事。他の部署のも無事。

全部やられてファイルが暗号化されると、もう会社が何日も仕事にならない状態か、会社によっては潰れるような状態にまでなります。

ということで、ランサムウェアに感染したWindows XPマシンを撮影してきたので、実際にどうなるのか見たい方は以下にアップしていますので、どうぞ。



エクセルファイルの中身は暗号化、もしくは最後に金払えのメッセージ。ワードファイルは完全に暗号化。PDFもJPEGファイルも開けない。でも、DocuWorksなどメジャーではないファイルは、そのまま。

ランサムウェアにやられてお金を払っても復元される保証がないので、実質やられたらおしまいということでしょう。

というのが、目の前で展開されてビックリ。思わぬ落とし穴だったのが、多くの人が英語が読めないので「金を払え」と書かれていることが分からないということでした。やられても数日ほったらかしという、ナイスな状態が続いたのでした。

・Premiere Pro & Media Encoder自動化サンプル集
http://www.amazon.co.jp/dp/4802090471/


・JavaScriptによるデータビジュアライゼーション入門
http://www.amazon.co.jp/dp/4873117461/


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


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


・Adobe JavaScriptリファレンス
http://www.amazon.co.jp/dp/B00FZEK6J6/


・ExtendScript Toolkit(ESTK)基本編
http://www.amazon.co.jp/dp/B00JUBQKKY/


・データビジュアライゼーションのためのD3.js徹底入門
http://www.amazon.co.jp/dp/4797368861


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


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