忘れる前にメモ
Nintendo Laboが発売されてから約4か月たちましたが、その中の「Toy-Conガレージ」という自由にコントローラー(Toy-Conと呼ぶ)を作れるモードが面白くていろいろ作りまくっていた次第です。
Nintendo Switch本体をタッチするだけでプログラムが組めるというのが手軽すぎてちょいちょいいじってしまう。片手でできるんだぜ?!
小学校のプログラミング教育必修化というのもありますけど、その手始めにもいいかもしれないと思います。
で、プログラムってのは、ちゃんとメモしておかないと後から見た時に何やっているかわからなくなっちゃうんですよね。(もしくは解読に時間がかかる)
Toy-Conガレージでも「コメント」としてちょっとしたメモをプログラムの画面中に書いておけるんですけど、いくつかの仕組みを作るためにはこうすればいい、というのがわかってきたのでそれをメモしておきたいと思います。
なお、あくまでも私が遊んでこうかな?と思ったやり方であって、もっと効率的だったりスッキリとしたやり方だったりがあると思います。
基本
まず、これはまだニンテンドーラボを持っていない方へ、こういうのができるんだぜ!っていう紹介になりますけど、Toy-Conガレージはこういう画面でプログラムを作ります。
ここに「入力」「中間」「出力」という機能を持った「ノード」と呼ばれる箱を置くことができます。
例えば、「入力」のタッチと、「出力」のひかるを線でつなぐとこれだけでとりあえず一つ出来上がり。
これで「タッチ」のノードをタッチすると、「ひかる」が白くひかります。
一つの応用として、これらのノードを重ねると、タッチしているときだけ光る四角形ができあがります。
無理やり重ねた感じなので文字とか線がゴチャゴチャしていますけど、画面上の再生ボタンみたいなのを押すと、そういうのは見えなくなってスッキリきれいになります。
完成品になるのです。
タッチすると光る、ただそれだけですけど私としては相当ワクワクする。
また、各ノードにはそれぞれ設定画面があって、それをいじるとまたちょっと違う動きをするので最高です。
あと、私が買ったのはニンテンドーラボのバラエティキットなので、Toy-Conガレージの中に「ピアノToy-Con」や「つりToy-Con」を入力にできるノードなどもあります。
ソフトについてきたToy-Conと組み合わせられるという楽しさ。
私はまだ持っていないのでわからないですけど、ロボットキットだとロボットToy-Conのノードがあったりするんじゃなかろうか。
論理回路の三種の神器
そんなわけで、Toy-Conガレージではプログラムというか電子回路というか、そういう見た目の画面で作っていくことになります。
で、コンピュータの世界は0と1からできているという話がありますけど、さっき作ったやつも同じです。
0は何もない状態、1は電気(信号)が流れているという感じ。
「タッチ」のノードについて言えば、タッチしていないとき、つまりオフの状態のときはタッチのノードからは0がでている(何も出ていない)と言えます。
で、タッチしている、つまりオンの状態のときは、タッチのノードから1という信号が出ている…というイメージになります。
そんな0と1ですけど、電子回路とかプログラミングにはAND、OR、NOTという三種の神器があって、うれしいことにこのToy-Conガレージにもあります。
私など、ニンテンドーラボの購入前にANDがあるとわかった時点でもうニンテンドーラボが欲しくてしょうがなかったのでした。
AND
それで、ANDってのは、2つの入力がどちらも1のときに、1を出力するというもの。
なので、こう並べた時は、二つとも同時にタッチしているときだけ光ります。
OR
ORは、2つの入力のうち、どちらか片方だけでも1のときや両方が1のときに、1を出力するというもの。
ニンテンドーラボの世界には、ORというノード自体は無くて、1つのノードに直接、複数の線を引くだけでORの動きをしてくれます。
これで、どちらかのタッチ(両方同時でもいい)を触れると光ります。
NOT
そして、NOT。これは入力と逆のものを出力するというもの。
こうすると、タッチしていないときはタッチノードから0が出ていますが、NOTがそれをひっくり返して1にするので光ります。
逆に、タッチしているときはタッチノードから1が出てきますが、NOTがそれを0にするので消えます。
そんな感じで今までと逆の動きをするようになります。
3つの力をあわせて……
で、これらAND、OR、NOTを組み合わせるとXORと呼ばれる回路も作れます。
XORは日本語では「排他的論理和」って言いますけど、名前がなんかかっこいいので好き。
そんなXORは片方が1で、片方が0のときに限り1を出力するというトリッキーなやつです。
これで、上だけタッチ、もしくは下だけタッチすると光るけど、両方タッチすると消えちゃうという、名前も動作もかっこいいやつができます。
カウンターとタイマー
…というわけで、論理回路的な前置きの話が長くなりましたけど、ここからはToy-Conガレージに用意されているスペシャルな感じのノードの話題になります。
今までに出てきたノードに、「カウンター」と「タイマー」というノードを組み合わせるといろいろできるのです。
カウンター
カウンターは、「+」「-」「0」の3つの入力と、1つの出力があります。
そしてカウンターの真ん中に白い数字が表示されています。
こういう風にしたとき、「+」につなげたタッチノードをタッチすると、カウンターの白い数字が1になります。もう一度タッチすると2に…という感じで数字を数えてくれるというか、覚えておいてくれる優れもの。
「-」は数字が1ずつ減ります。
カウンターの範囲は0~100で、これを超える「+」や「-」が入力されても何も起きません。
で、一番下の「0」の入力(赤い0)は、カウンターの白い数字を強制的に0にリセットするというもの。たとえ、「+」と「0」が同時に入力された場合でも0が強くて、必ず0になるすごいやつです。
そんなカウンターの出力は、「デジタル」と「アナログ」という2種類から選べるんですけど、「デジタル」だと例えばカウンターの数字が10~80のときは1を出力する(画面を光らせる)というように、1を出力する範囲を指定できます。
で、「アナログ」にするとどうなるかというと、設定画面ってこういう感じなんですけど、
この設定(アナログで、範囲を0~100にした場合)だと、左下の「はんい」のところに白い坂があるように、カウンターの数字0のときは0を出力、カウンターの数字が100のときは1を出力するんですけど、その間、例えばカウンターの数字が30のときは0.3、70のときは0.7を出力するという、0と1だけの世界かと思われたToy-Conガレージ界に、0と1の間という新たな風を送り込むような動きをするのです。
で、0のときに黒、1のときに白となる「ひかる」ノードに、0.3や0.7が入ってくるとどうなるかというとその数字に応じた濃さのグレーになります。
そんなカウンターを、私はだいたいデジタルで使うことが多いんですけど、これがまあ、いろいろと使えるんです。
タイマー
タイマーはシンプルな動きですが、入力が入ってきたら、タイマーに設定された時間経ってから、ピッと一瞬だけ1を出力するというものです。
設定できる時間は0.00~10.00の間(0.02刻み)で、1.00だとだいたい1秒のタイマーになります。
あくまでもだいたい1秒であって、ノードをものすごくたくさん使ったりすると動きがちょっともっさりしてきて1.00でも1秒を超えちゃったりする。
このタイマーのポイントですけど、出力は一瞬のピッだけというところ。
ひかるノードも一瞬の輝きになるし、音を出すノードをつなげたときもまさに一瞬だけのピッという感じの音になります。音を出すノードの場合は、設定で音の長さを指定できるので、それをいじれば表現の幅も広がります。
あとは、入力側にも特徴的な動きがあって、上の画面のようにタッチのノードを1.00のタイマーにつなげた場合、例えばタッチのノードを0.5秒間タッチするとどうなるかというと、先ほどの通り、タッチし始めた時から約1秒後に一瞬ピッと出力されます。
が、1秒間以上、例えば1.5秒間くらい長押しするようにタッチするとどうなるかというと、一瞬ピッと出た後、さらに約1秒後にもう1回一瞬ピッと出るのです。
「えっ、なんで?」となりますけど、何があったかというと、タイマーとしては次のような動きをしているからです。
- 入力がくるまで寝てる
- タッチの信号が入ってきた!1秒待機(待機中もタッチの信号が入力され続けているけど、待機に精一杯でそれは別に見ていない)
- 1秒たったからピッと出力
- あれ、入力を見るとまた(まだ)タッチの信号が入っている!1秒待機
- 1秒たったからピッと出力
そんな感じで、特性を知らないとちょっと予想外の動きをしてくるタイマーですけど、こういう動きをするとわかればその動きを使っていろいろできるのであります。
まず相手をわかろうとすることからはじめよう。
まとめ
というわけで、大変申し訳ないのですが、Toy-Conガレージのノードをいろいろ書いていたら気持ちが盛り上がってしまい文字数が多くなってしまいました。
ちょっと一旦ここまでにして次回、続きを書きます。
他にもノードがいろいろありますけどその説明は置いといて、次こそ私がメモしておきたかったノードの組み合わせ方について書きたいと思います。
つづく。
コメント