【発展編】12-b スマート・アーム(4)

Q1. ☆問題☆

コントロールプログラムでは、グラバーを操作(そうさ)するために「グラバーモード」を作ったよね。ワークブックではIdoが、「EV3ブロックにあるボタンは5つなのに、動かしたい部品や方向が全部を考えると6つのボタンが必要になってしまう」から仕方なくグラバーモードを考えたと言っているけど、ほかの方法も考えられるよね。次の中から、「ほかの方法」になりそうなものを次の中からひとつ選ぼう。

  • 「ローテーターだけを動かす」→真ん中のボタンをおす→「アームだけを動かす」→真ん中のボタンをおす→「グラバーだけを動かす」→真ん中のボタンをおす→「アームだけを動かす」 → 真ん中のボタンをおす → 「ローテーターだけを動かす」 → 真ん中のボタンをおす → …… をくり返すプログラム
  • 真ん中のボタンをおすと、「リセットプログラム」でグラバーが開いたモーターの方向だけにMモーターを回転させるプログラム
  • アームをおろすと3秒後にグラバーが閉じて、アームをあげると3秒後にグラバーが開くプログラム

正解

  • 「ローテーターだけを動かす」→真ん中のボタンをおす→「アームだけを動かす」→真ん中のボタンをおす→「グラバーだけを動かす」→真ん中のボタンをおす→「アームだけを動かす」 → 真ん中のボタンをおす → 「ローテーターだけを動かす」 → 真ん中のボタンをおす → …… をくり返すプログラム
  • 真ん中のボタンをおすと、「リセットプログラム」でグラバーが開いたモーターの方向だけにMモーターを回転させるプログラム
  • アームをおろすと3秒後にグラバーが閉じて、アームをあげると3秒後にグラバーが開くプログラム

解説

ぬいぐるみなどが取れる「クレーンゲーム」を考えてみよう。

たて方向、横方向、上下に動けるのは一度だけだよね。スマート・アームもそのようにすれば、ボタンの数はもっと少なくても足りることがわかるかな。

「ローテーターモード」「アームモード」「グラバーモード」を作るようなイメージだけど、必ず「ローテーターモード」→「アームモード」→「グラバーモード」→「アームモード」をくり返す(戻ることはできない)ようにしているよ。

このようなプログラムを作れれば、スマート・アームを手動で動かせるよね。

Vol.11でも考えたように、グラバーは「開く」方向に動かし続ければ必ず閉じるよね。でも、閉じてしまったら、反対の方向にモーターを回転させないと、グラバーは開いてくれない。つまり、同じ方向だけにモーターを回転させてもうまくいかないことがわかる。

ちなみに、iPadのアプリでは「さっきどちらの方向に回したか」を覚えていることはできないけど、モーターの回転数はわかるよね。これを使って、「○○回転以上ならば時計回り、それ以下ならば反時計回り」とすればいけるかもしれない。ただこれも、必ず数字をリセットしてからでないと本当は何回転しているかわからなくなってしまうから、カンペキではないよね。

グラバーが勝手に開いたり閉じたりしてくれれば確かに「グラバーモード」はいらなくなるけど、「アームをあげると3秒後にグラバーが開く」のはまずくないかい?別のところに動かす前に、荷物が落ちてしまう。だからこれは、ダメ。この方法を考えるのならば、もっと工夫しなければならないね。

Q2. ☆問題☆

コントロールプログラムでは、グラバーモードが終わるときに「ランプの状態(じょうたい)をリセット」するようにしたよね。もし、ランプの状態をリセットしなかったら、どんなことが考えられるだろうか。次の中からもっともふさわしいものを選んでね。

  • 特に問題はない。
  • プログラムが動かなくなってしまう。
  • ランプの色が赤になったりオレンジになったりしてしまう。
  • グラバーモードを終えることができなくなる。
  • グラバーモードが終わったのかどうかわからなくなる。

正解

  • 特に問題はない。
  • プログラムが動かなくなってしまう。
  • ランプの色が赤になったりオレンジになったりしてしまう。
  • グラバーモードを終えることができなくなる。
  • グラバーモードが終わったのかどうかわからなくなる。

解説

ランプの状態をリセットするのは、使う人のことを考えてのことなんだ。

考えてみよう。グラバーモードでないときには、左や右ボタンをおしたらローテーターが回るよね。でも、グラバーモードのときには、グラバーが動くよね。「いま、グラバーモードなのかどうか」を確かめる方法がないと、使う人はこまってしまう。だから、グラバーモードに入ったら「オレンジのランプがてんめつ」するようにした。つまり、オレンジのランプがてんめつしていれば「グラバーモード」だ、とわかるよね。

グラバーモードを終えるときにランプの状態をリセットしないと、そのままランプはオレンジ色にてんめつし続ける。グラバーモードでないのに、オレンジ色にてんめつし続けることになるんだ。これでは、何のために「グラバーモードではオレンジ色にてんめつする」ようにしたか、わからなくなってしまうよね。

プログラムを作るときには、使う人のことも考えてね。

Q3. ☆問題☆

コントロールプログラムでは「グラバーモード」を作ったよね。グラバーモードのときに上か下のボタンをおしたら「グラバーモード」が終わるようになったけれども、例えば次のようにすることもできる。

 

右ボタンをおしたらモーターが時計回りに回る

左ボタンをおしたらモーターが反時計回りに回る

下ボタンをおしたらグラバーモードが終わる

上ボタンをおしたらプログラムが終わる

 

でもこれは、あまりよいプログラムではなさそうだ。どんなところがよくなさそうかな。次の中から、もっとも関係なさそうなものを選ぼう。

  • グラバーモードを終わらせるのが上ボタンなのか下ボタンなのか、まちがえそうになる
  • プログラムを動かしていて、終わらせたくないのに、プログラムを終わらせてしまうかもしれない
  • グラバーモードへの入り方がわからない
  • グラバーモードに入らないと、プログラムを終わらせることができない

正解

  • グラバーモードを終わらせるのが上ボタンなのか下ボタンなのか、まちがえそうになる
  • プログラムを動かしていて、終わらせたくないのに、プログラムを終わらせてしまうかもしれない
  • グラバーモードへの入り方がわからない
  • グラバーモードに入らないと、プログラムを終わらせることができない

解説

アプリなどの使いごこちなど、使う人がどう感じるかを「UX(ユーザーエクスペリエンス)」というよ。どんなにすばらしいアプリでも、UXが悪いと使ってもらえないことも多い。アプリ開発ではUXを考えることは大事なことなんだ。

この問題は、「グラバーモードで下ボタンをプログラム終了にしたら、UXにどう関わってくるか」ということだよね。そう考えると、「グラバーモードへの入り方がわからない」だけが関係なさそうだ。それ以外、どれも言えそうなことだよね。

ワークブックで作ったプログラムも、UXがカンペキかといわれれば、そうではないかもしれない。そう感じたら、よりよいプログラムになるよう、改造してみてね。