FIT2021（第 20 回情報科学技術フォーラム）K-004
10 キープログラミング教材の機能拡張とハードウェアの変更
Function Expansion of Numeric Key Programming Material and Alteration in it’s Hardware
家永 貴史†
Takafumi IENAGA
１．はじめに木室 義彦†
Yoshihiko KIMURO
Table 1

Command set

今日の情報化社会では，児童生徒もプログラミングを経験し，コンピュータでできることできないことを体験することが重要とされている[1]．これに対し我々は 10 キーによる直感的なプログラム入力によって移動ロボットの動作プログラミングを行える教材を開発し，小中高の初学者に対して，また視覚障害の有無を問わず，有用であることを示してきた[2]-[3]．
今回，この教材のうち，移動ロボット部分について，新たなハードウェアへの対応とプログラミング言語の機能拡張を行ったため，本稿において報告する．

CommandParameter

Description

FW0~9, A~B

Move forward

BK

0~9, A~B

Move BackwardLR0~9, A~B

CCW rotation

RR

0~9, A~B

CW rotation

BEEP

0~9, A~B

Musical scale

Assign A, B

0~9

Assign a value to the var.

FOR0~9, A~B

Loop blockNEXT-

End of loop

IFSensor ID & State

Conditional Branch Block２．10 キープログラミング教材

ENDIF

-

End of IF block

WNDW-

End of WHILE block

まず，これまで開発してきた教材について説明する．
我々の教材では，コンピュータの動作原理を学ぶことを目的としている．すなわち，コンピュータはプロセッサとメモリで構成され，プロセッサはメモリに記憶されたプログラムを読み出して実行する．児童生徒は，プログラミングを通してこのことを理解する．児童生徒自身がコンピュー
タはプログラムされた通りに動作し，人間がプログラムできないことはコンピュータもできないこと，人間が間違えて入力したプログラムは間違えた通りに動作することを体験することが重要となる．
2.1 移動ロボットプログラミング言語仕様

我々の移動ロボット教材のロボット言語では，ロボットの前後移動と左右回転，ビープ音の 5 つの基本命令の他，繰り返しと条件分岐のための制御命令を備えている（Table1 網掛け部は 3.2 節で説明）．基本命令は，移動の前後や回転方向，ビープ音を表すオペコードと，移動や回転の動作時間，音階を表す 1 桁の数値のオペランドとして指定する（0 の場合は乱数）．繰り返し処理では，FOR とNEXT に囲まれたブロックを FOR に続く数字 1 桁の回数だけ繰り返す（0 は無限回）．また，条件分岐では，IF とENDIF で囲まれたブロックを形成し，IF に続くセンサの識別子とセンサの状態を満たしたときに実行する．時計回りに四角形を描くプログラムの例を Figure 1 に示す．右回
転 4 がおおよそ 90 度の回転になるようにロボット側で調整している．
FOR 4FW
5RR4NEXT

Figure 1

FW: 前進RR: 右回転Robot programming samples†福岡工業大学 情報工学部 Faculty of Information
Engineering, Fukuoka Institute of Technology

RUN/STOP

Execution/ temporal stop

Reset

Clear program memory

2.2 プログラム入力方式：10 キープログラミングプログラムの入力環境としては，10 キーによる入力方式を採用している．キータイピングは初学者の障壁として広く認知され，初学者用のプログラミング環境では，その要素を除外するものも多い．一方，我々は，マウスよりも簡単にタイプでき，ミスの結果を直ちに，かつ面白く体験できれば良いと考えている．すなわち，アルゴリズムや文法のミス，キー入力ミスも学びの一つとして位置づけている．そのため，プログラミングに用いるキーを数字キーのみとするテキストプログラミングを採用している．
10 キーによる直感的な入力を実現するために，前進や後退，左右回転の命令は 5 キーを中心として上下左右に配置する．PC のテンキーと電話のボタンでは配置が異なるが，数字そのものではなく，キーの空間的な配置に着目す
る．制御命令については FOR と NEXT は，キーパッド上段左右に，IF と ENDIF は下段左右に配置している．また，センサ選択キーの配置は，実際のロボットのセンサ配置（左右や上下等）に一致させ，視覚的に（視覚障害のある学習者は触って）対応するセンサを理解できるようにしている．実行・停止とリセットは，0 キーの左右に配置している．プログラムの入力モードや実行モードを切り替えるボタンはなく，命令の入力途中でも実行できる．
2.3 実装我々の移動ロボット教材は，2 つのモータ，2 つの光センサとタッチセンサ，ブザー等が搭載された市販ロボット玩具 KIROBO（MR-9132 EK-JAPAN）をベースとしている．
これに前述のロボット言語のインタプリタをファームウェアとして書き込んだ Arduino UNO ボードとシールド基板（SU-1201 EK-JAPAN）を組み合わせる．さらに，16 個のタクトスイッチを搭載した 4×4 キーパッド（アイロジック）を設置し，プログラムを入力できるようにしている．5 キ339
第 3 分冊Copyright © 2021 by
The Institute of Electronics, Information and Communication Engineers andInformation Processing Society of Japan All rights reserved.

FIT2021（第 20 回情報科学技術フォーラム）ーのキートップには，凸シールを設け，触ることでキーの配置が分かるようにしている．
ロボットの電源を入れるとインタプリタが起動し，10キーパッドからプログラム列を入力し，実行することができる．入力されたプログラム列は，マイコンの EEPROMにも保持され，電源オフ後も再実行可能である．入力可能なプログラムは 256 ステップであり，FOR 文，IF 文，および WHILE 文 の入れ子は，それぞれ 10 段まで可能である．

３．新たなハードウェアへの対応と機能拡張

3.1 市販マイコンボードの Arduino 化
以上の教材では，市販の組み立て型ロボット玩具の他にArduino マイコンボードとシールド基板が必要であった．
汎用的なマイコンボードは，初学者向けの 10 キープログ
ラミングだけでなく，より高度なプログラミングを学ぶことも可能になる．一方で，揃える機材が増えることは，初学者にとってそれだけでも学習の障壁となる．
そこで，ベースとなる移動ロボットを KOROBO2（MR9192 EK-Japan）に変更し，そのロボットの制御基板に搭載されているマイコンのファームウェアを改変し，Arduinoとして動作させるようにした．具体的には，ATmega16u4を搭載するマイコンボードに対応した Arduino IDE 用のMPU とピン配置の設定，Arduino ブートローダの開発である．これにより，従来と同等の学習教材を 10 キーパッドの追加のみで構成できるようになった．但し，マイコンが変更になったことにより，フラッシュメモリの容量が半減したため，入力可能なプログラムステップ数を 128 にした．
Figure 2 の左が従来のロボット，右が今回開発したロボットである．なお，マイコンボードの改変と公開，USB デバ
イス用の VID と PID の使用については，メーカの許可を得て行った．また，Arduino ブートローダや特別なデバイスドライバを用いずに，USB の HID デバイスとしてプログラムの転送が可能なことも確認している．

FOR A
5FWNEXT--------A 2

Figure 4

FW: 前進Robot programming samples with a variable

3.2 プログラミング言語仕様の拡張（機能追加）

我々のプログラミング教材における変数の概念の学習について，質問や要望が以前から寄せられていた．そこで，これに対応する機能拡張を行った．具体的には，4x4 のキーパッドのうち，これまで使用していなかった右端の列 A～D の A と B のキーをレジスタとして利用できるようにした．すなわち，従来の即値命令に対しレジスタ修飾を追加した．これに伴い，状態遷移とキー配置，各コマンドにおける入力可能な値は Table 1 及び Figure３のようになった．レジスタ A,B への代入は，基本命令となる．この機能拡張によって，プログラムのアルゴリズム部分はそのままで，データのみを適宜書き換えて実行状態を変えることができる．具体的なプログラムの例を Figure４に示す．レジ
スタ A-B 間の二項演算は，別途検討中である．
3.3 カリキュラムの検討（変数の理解）

一方，変数の概念を教えるカリキュラムについては，現在検討中である．変数の教え方としては，変数を箱に例え，箱にデータを入れて，使うときに取り出すという説明の方法がある．この場合，例えば A=5, B=A とした後に，少なくない初学者が A=空になると考える．すなわち，箱の中に何か入っている場合には何も入れられないし，中身を取り出した後は空になると考える可能性がある．このような理解はメモリやレジスタなどの実際の動作を考えると，コンピュータの動作原理の理解という目的には適さない．
そこで，我々は変数を黒板に例える方法を検討している．
すなわち，情報は黒板の決められた場所に書いてあり，新しい情報は前の情報を消して書く．情報を知りたければ，決められた場所を見れば良いというものである．この方法
では，データの書き換え時の処理や読み出した後のデータという点で，実際のレジスタなどの動作に近く，コンピュータの動作原理を学ぶという我々の目的には適している．

４．おわりに
Figure 2

Mobile robots for 10 key programming

State1FORFWNEXTALRBEEP

RRB

IF

BK ENDIF

State2123A456

B

7890

RUN/
ENDW Reset
STOP

State4State3

今回，市販のロボット玩具の 10 キープログラミング対応及び変数の機能を組み込んだファームウェアを開発した．
今後開発した教材の有用性とともに，初学者に対する変数の概念の教え方についても検証を行っていきたい．なお，
本研究の一部は，文科省科研費（17K00992）によるものである．また，ロボットのファームウェア開発にあたっては（株）イーケイジャパンの協力を得た．
参考文献[1] 安浦, "情報技術を社会常識にするためには",情報処理,Vol.40,
No.1, pp. 47-49, 1999.
[2] 木室他, "視覚障害のある中高生のためのロボットを用いたプロ

LT

RTon

グラミング教育", 信学論 D, Vol. J95-D, No.4, pp.940-947, 2012.

LIRI

off実践", 情報教育シンポジウム SSS2019 Vol.2019,2019.

Figure3[3] 木室他, "10 キープログラミング教材による地域 ICT クラブのState Transition

340
第 3 分冊Copyright © 2021 by
The Institute of Electronics, Information and Communication Engineers andInformation Processing Society of Japan All rights reserved.