iArduino:マイコン上で対話的な開発を実現するインタプリタ型言語
6
0
0
全文
(2) . . マイコン上で対話的な開発を実現する インタプリタ型言語 光永 法明. . 概要:本論文では,マイコンを利用した製作の初心者へ向けて,マイコン上で動作し対話的にプログラミン グができるインタプリタ言語 と,プログラム動作と入出力を可視化するツール
(3) を作成したので,その設計方針と実装結果を紹介し議論する. キーワード: ,インタプリタ,可視化,プログラミング言語,. . .
(4) .
(5)
(6) .
(7) . . .
(8)
(9)
(10)
(11)
(12) .
(13)
(14) .
(15)
(16)
(17) . はじめに. 合った回路の設計と実装,開発に利用するプログラミング. 近年,マイコン(マイクロコンピュータ マイクロコン. される.比較的初心者にも取り扱いやすいといわれるマイ. トローラ)が安価になる一方で処理速度や記憶容量といっ. コン向けの 言語処理系である の . た性能が向上し,応用範囲が広がっている.また実世界指. モジュールや各社のマイコン向け コン. 向インタフェースへの関心の高まりとともに, . パイラ . などでは,典型的な利用方法の場合. や
(18) といったアーティストやデザイナー向けにプ. にはマイコンや周辺回路の初期化や操作について記述量が. ロトタイプ作成用に開発されたボードと開発環境が広く知. 少なくなるように工夫されており,ライブラリのリンクを. られるようになり,マイコンを利用する層も広がりを見せ. 意識させない.. つつある.また 年度から中学校の技術・家庭科では. よりも汎用性や拡張性などが重視される傾向があり,サン. 実世界とつながったコンピュータのプログラム作成の指導. プルプログラムのみでライブラリが用意されない場合や,. が必須となる .したがって,マイコンを使った製品や作. 用意されてもライブラリのリンクに明示的な指定が必要な. 品製作に関心が高まるとともに,初心者にも分かりやすい. 場合が多い.そのため難しいという印象を持たれることが. 開発環境がより重要となる.. 多いが, 言語( . マイコンを利用した製品や作品を制作するには,目的に. 言語とライブラリ についての知識と活用が必要と. 言語の処理系では記述量の少なさ. 言語をベースとする)で. は初期化,操作やライブラリのリンクについて,多くの知 識を必要としないよう工夫がされている.. 大阪教育大学 . .
(19)
(20)
(21)
(22) . また多くのマイコンには,あらかじめキャラクタ液晶や.
(23) Vol.2012-UBI-34 No.8 2012/5/17. 情報処理学会研究報告
(24) . 可変抵抗,!"# 等を実装した基板と,サンプルプログラ. てはメモリの利用効率が重要となり,また動作速度の要求. ムをセットにした学習キット(トレーニングセット)が用. にも応えようとしているためである. 入出力・変数値・実行文(命令)の可視化に注目すると. 意されている.学習キットで学んだあとで,キットの回路 をベースに目的の回路を制作することが想定されており,. '() * と ' '+ をのぞくと初心者向けの可視化支. サンプルプログラムの流用について制限が少ない場合も多. 援がされていない.*. の開発環境では,開発環境によ. い.さらに,マイコン(あるいはマイコンボード)と親和. る可視化の支援はなく,いわゆる , デバッグ(シリア. 性の高い電気的・機械的なインタフェースをもつセンサ・. ルポート利用)もしくは,出力ピンの操作と回路計やオシ. アクチュエータなどのモジュールも多く市販されており,. ロスコープの組み合わせが必要となっている.また . サンプルプログラムが用意されているものも多い.. の開発環境ではシミュレータやデバッガの利用が必要であ. このように理解・利用しやすい単位のソフトウェアや ハードウェアのブロックを多く用意し,設計・製作を容易. り,可視化について初心者に向けて十分に配慮されている 開発環境は . と多くない.. にする様々な手法が提案・実現・市販されている.一方で. ' )' % - はインタプリタ. 各ブロックの利用方法を理解し,適切に利用することが不. 型の 言語を実装しており,対話的な計算(実行)や. 可欠であることは変わらない.ソフトウェア,ハードウェ. 実行の中断が可能となっている.一方で統合開発環境は持. ア共に理解には,実際に実装をし動作を確かめることが. たず,シリアルターミナルによりマイコンとユーザが対話. 早道である.動作を確認するために,ソフトウェアではデ. して開発をするため,可視化のツールを持たない.. バッガ,ハードウェアでは回路計やオシロスコープといっ. と こ ろ で & 歳 か ら * 歳 を 対 象 に 設 計 さ れ て い る. た可視化ツールが用いられる.しかし,それらのツールを. ' '+ ではグラフィカルプログラミング言語を採. 利用するには,基本的なプログラミング言語,マイコン,. 用している.開発環境では,アイコンをクリックするだけ. 回路動作の理解が必要である面があり,またツール操作の. でアイコンの命令が動作し,対話的に命令の動作を把握で. 習得や実際の操作にも時間が必要なことから,使用が有効. きる.また実行中の命令が分かるように表示に工夫がされ. な場面でも初心者には使われない傾向がある.. ている.このような対話的操作や可視化は年齢を問わず. したがってソフトウェアの基本的な操作ができれば使用. 有効であると考えられる.一方で ' '+ ではマイコンは. できる,可視化ツールを用意すれば初心者の助けになると. . のために用いられており,開発したプログラムはマイ. 考えられる.またプログラミング言語で書いた計算式(命. コン単体では動作しない.. 令)の動作を対話的に確かめられるインタプリタ型言語で あれば理解の助けになるとともに,可視化ツール用のイン. . インタプリタ型言語 の設計方針. タフェースをソフトウェアで実装することも容易と考え. /.0 が数 (12),/0 が数 (12) 程度とメモリの. られる.そこで, 言語と互換性のあるインタプリ. 制約が大きいマイコン上で動作するインタプリタ型言語. タ型言語 と, と通信して変数や入出力. では,実行可能なプログラムの大きさも限られる.そのた. ピンの変化を容易に観察,操作できるターミナルソフト. め規模の大きいプログラムを作成しようとしたときに,ス. $ を作成したので報告する.. ムーズにコンパイラ型言語へ移行できることが望ましい.. 以下,現在のマイコン向け開発環境について概観する.. そのためには,インタプリタ型言語が動作するマイコンを. そして と $ の設計指針と実装に. ターゲットとするコンパイラ型言語開発環境の入手が容易. ついて紹介し,最後に議論とまとめを述べる.. で,二つの言語間で文法やライブラリ の互換性がある. マイコン用開発環境の比較と設計方針. とよい.また市販の開発環境の中には付属するライブラリ. マイコン用開発環境の比較. を用いた他の言語処理系の作成が禁じられているものもあ るが,そのような制約の少ない開発環境であればインタプ. 表 % に初心者に向くと考えられるマイコン向け開発環. リタ型言語のライブラリの充実が容易である.. 境として,グラフィカルプログラミング環境,統合開発. そこで の開発に当たっては マイコン. 環境をもつコンパイラ型かインタプリタ型の 処. ボードを対象とし, 言語と互換性を持たせること. 理系,(合計. )を取り上げて比較を示す.表か. にする. マイコンボードは既に 万個以上が出. らは 処理系が . と多数を占めている.これは. 荷されており,初心者向けとしても人気があり,開発環境. が初心者にも分かりやすいと解釈されたためと考. #" の入手も容易である.また 言語の. えられる.しかし, が急速に普及したことからも,. コンパイラは 3'' をベースにしており,付属のライブラリ. の文法が初心者にも易しく, . 言語の文法が. は
(25) ! や !))
(26) ! などのライセンスで提供されてい. 難しいとはいえない.また,コンパイラ型言語が &. と. る.そのため上記のような制約が少ない.そこで . なっている.この理由はメモリの限られたマイコンにおい. の開発には 言語 . .
(27)
(28)
(29) . を用いる. .
(30) Vol.2012-UBI-34 No.8 2012/5/17. 情報処理学会研究報告
(31) . 図. が起動時に出すメッセージ. 言語は 言語と文法の互換性を持つが. 図. . . をシリアルターミナルから使っている様子. 可視化ツール
(32) . 次のような点で異なる.プログラムの規模が小さいことか. と通信し変数の値等を可視化するツール ;. ら, ではプログラムの先頭から順次実行し,関数. $ を作成した.開発には 0'), 5) <. の定義をサポートしない.変数については宣言を不要とす. ")) " を用いている.図 に可視化ツール. る代わりに,あらかじめ用意された変数名を使うものとす. $ の実行中の様子を示す.図左上が ;. る.演算はすべて符号付き * ビット整数とする.文字列. $ のメインウィンドウで,シリアルターミナ. は取り扱わない.. ルとしての機能と変数,入出力ピンの表形式での表示機能. インタプリタ型言語 . を持つ.また頻繁に入力するコマンドをマウス操作で入力. の概要. 出力ピンの変化をグラフで表示する.マウスオーバで値と. 出来るボタンを用意している.図の右上のウィンドウは入. マイコンボード 4 にインタプリタ型. 時刻を読むことも出来る.図左下のウィンドウはプログラ. 言語 を実装した. 4 には 製の. ムエディタである.プログラムの実行中には実行中の行. 5/ アーキテクチャ $3 & マイコン フラッシュ. を赤で表示する.図右下のウィンドウでピンを操作出来. /.0 (12) /0 (12) ""/.0 (12) が搭. る.マウスでピンの機能(デジタル入出力,アナログ入力,. 載され, *067 のクロックで動作する. がサポー. 80 出力,ラジコンサーボ出力)を選択し,ラジオボタ. トする変数名や制御文,定数などの一覧を表 - に示す.関. ン,スライダーで値を操作し,回路の動作などを確かめら. 数名と動作は 言語に準じ,デジタル入出力,アナ. れる.またマウス操作と等価になるプログラムの文を表示. ログ入力,80 出力,ラジコンサーボ出力,トーン出力. する.. などが可能であるが, 言語と違い多態性をもたな. このような可視化ツールを用意するために定めたデバッ. い.後述するデバッグインタフェースを含め, の. グ用のプロトコルを表 に示す.プログラムの実行文の. バイナリの大きさが約 (12),実行可能なプログラムの. 範囲をのぞき,$ の要求により . サイズが *12) である.. が応答をする.各要求 応答を $ または. は非同期シリアル . -9(1) を通したユーザ. が送る際には ,,プロトコル番号,データの順. インタフェースを持つ. の初期化が終わると図. に送り可変長である., によりターミナルから入力され. のようにメッセージと .: のプロンプトを出す..: のプ. るシェルの操作と区別している.チェックサムなどの誤り. ロンプトが表示されているときにユーザインタフェース. 検出・訂正は行っていない.$ ( プ. (シェル)が受け付けるコマンドを表 に示す.式を入力. ロセッサ 9*
(33) 67 コアの 使用)から ) 周期で要. するとすぐに結果を返すので対話的に,関数の実行結果な. 求を出し,* の変数と つのデジタルポート,* つのアナ. どを確かめられる 図 .図 では,いくつかの式を評価. ログ入力を可視化できている.. させ, 上にある ピンにつながった !"# を 秒 周期で点滅させるプログラムを入力後,実行している.プ ログラム実行は通常の実行の他,ステップ実行,9- 秒に. によるプログラムの実行速度 によるプログラムの実行速度を確かめるため,. 文の実行があり,実行中に実行文の表示もできる.プロ. 図 % のプログラムでデジタル出力ピンを無限ループで 6 !. グラムは /0 上に置き実行されるが,マイコン内蔵の不. と変化させてオシロスコープで観察した.図 % の場合と . 揮発性の ""/.0 へ保存し起動時に読み込み,実行も可. 行目と % 行目の間へ加乗除の計算と時間待ち関数を入れた. 能である.つまりプログラミングが終了すれば,マイコン. 場合について観察結果を表 に示す.表から 言. 単体で動作する.. 語をコンパイルしたバイナリの実行速度に対し,. .
(34)
(35)
(36) . .
(37) Vol.2012-UBI-34 No.8 2012/5/17. 情報処理学会研究報告
(38) . 表. のシェルが受け付けるコマンド. コマンド. 説明. 式. 式を入力すると計算結果を表示する. プログラムを実行する.実行中に命令を表示し,一命令実行毎に 秒の間をあける. 起動時に に記憶されたプログラムを実行する. プログラムを実行する.実行する命令を表示する. <行番号> プログラムリストの<行番号>の行を置き換える.置き換える行は コマンドの続いて入力する. ! プログラムリストを表示する.先頭に行番号を表示する. 起動時に に記憶されたプログラムを実行しない. を入力すると,プログラムの入力待ちになる.プログラムの最後に を入れるとコマンド待ちに戻る. プログラムを実行する.
(39) 現在のプログラムを に記憶する. プログラムをステップ実行する.一命令実行毎にプログラムの実行を中断し入力待ちとなる.. 図. . " ! のウィンドウ.左上のウィンドウが起動時に表示されるシリアルター ミナルと変数,入出力ピンモニタである.右上のウィンドウは入出力ピンの変化をグラ フで表示するウィンドウである.左下のウィンドウはプログラム用のテキストエディタ で,プログラム実行中は,実行している行が赤で示される.右下のウィンドウはピンの 操作ウィンドウである.ピンを. # $ で操作し,回路の動作などを確かめられる.また操. 作をプログラムの文として表示する.. .
(40)
(41)
(42) . .
(43) Vol.2012-UBI-34 No.8 2012/5/17. 情報処理学会研究報告
(44) . " ! から への要求と応答 %. 表 要求 応答 番号. & &' &( & &. バージョン. で !"# のダイナミック点灯以外は容易に実現出来る.ま. 入出力ピンの値. た,人の操作であったり,環境光の明るさや環境音の大き. ). プログラム実行時に実行位置を送る 応答なし,以降. プログラム実行中に実行文の範囲を送る* &+ 起動時からの経過時間 ) 単位* &' ピンの入出力設定 )応答なし* &'' デジタル出力 )応答なし* &', - 出力 )応答なし* &'. ラジコンサーボ出力 )応答なし* &'( ラジコンサーボ出力の設定 )応答なし*.
(45)
(46)
(47)
(48)
(49) . 図. 表. . . 生成や,可聴音の生成,!"# のダイナミック点灯は難しい. しかし,80 出力やトーン出力の関数を用意しているの. 変数値 プログラムリスト. による !"# やモータの調光,速度調整を目的とした 80. さの緩やかな変化への反応を実現するような,数 67 以 下の制御周期で十分な用途には問題がないと考えられる. ところで $ による動作の可視化デモを 関西の技術系のイベント等で展示をしたところ,初心者の 方にもベテランの方にも可視化について好意的な意見をい ただいた.とくに初心者の方からは最近苦労した経験から か「わかりやすい」との声が多かった.インタプリタ言語 であることについては,ベテランの方から & ビットパソコ ンの を思いだし,懐かしいという声があった.ま た 言語からも $ の可視化を使い たいという要望があり対応している.. まとめ. デジタル出力ピンによる実行速度の測定に使ったプログラム. )測定部分のみ*.!- 関数は ' つ目の引数のピンに , つ目の引数を出力する. では
(50) !! を省く. 図. ( のプログラムで観察されたデジタル出力ピンの /%0 とな. る時間の観察結果. 1 ' " ! なし /2.3 /24 /24∼54 02.3 024' 024'∼3, 6 1' /2(4 /24' /24'∼3 02.3 /24' /24'∼3, 6 . /2(5 /24' /24'∼3 02.3 024' 024'∼3, 6 ' /2(( /24' /244∼3 02.3 024' 024'∼3, !)'* /2' /23. /23∼'. 02.3 024' 024'∼3, !)'* /2'5 /2'5∼,. 024' 024'∼3, !)'* /2'' ' /2'' ' 024' 024'∼3, '5∼''' で揺らぐ. 本論文ではマイコンを使った製作の初心者へ向けて,イン タプリタ言語 と動作の可視化ツール $;. の作成について設計方針を述べ,実装と動作速度を 紹介した.今後は,これらを使った作例や手引きなどを充 実させていきたい. 参考文献 ". &. で,変数等の可視化に $ を使用した場合. のプログラムの実行速度からは,ソフトウェア. .
(51)
(52)
(53) . *2). 詳細 33&%3. , 0 5 * + . :*
(54) 0+ 詳細 '
(55) 0+ :*2) 2 8 ,+ 詳 細. 7 8 . 9. (
(56)
(57) 5. . ,,,
(58)
(59) 5 ' $.: ;
(60) +5 %. (
(61)
(62) 5. . :(
(63)
(64) 2 .
(65). 2;, . 詳細. ,,,
(66)
(67) 5 ' 	: ;
(68) +5 $. :()> (!. ! 3 詳細 ,,, 5 /)2
(69) +:*)?/3@ 詳細 <
(70) =. . ,,, +
(71) 5A B C +0B< ,C B&C B& . : 0*2). 0
(72) 0 0. (. ;. (). 詳細. ,,, 0 ! ! +< ,$%. 0' + . / ! ! = '+. :()*2). (. ?. 詳細.
(73) '+ ". D /
(74) E. /. + 0. . +0. * 2
(75) < . . : 2 (!. ! = ! ! . + . のオーバヘッドは最大で -) 程度であると分かる..
(76) 議論. : . 6. 出力が 6 である時間が変わらない.時間待ち関数の引数. では待ち時間が短い場合に誤差が大きい.一方. / 0 1
(77) . #3&" 3+ +3 4 ,+ . での実行速度は. - ほどであるとわかる.また主とし. の単位は ) であるが,呼び出し等のオーバヘッドにより. . ,,,& ' .. #. てプログラムの解釈に時間がかかっており,加算と除算で. : 詳細 : 詳細 ! 文部科学省:中学校学習指導要領解説技術・家庭編 平成 # 年 $ 月 ##% ' :() ( * + 詳細 . . < .
(78) . .
(79)
(80)
(81) . <
(82) # & 636. ##. &. . (
(83) E;
(84). < . :( * 詳 細. ) E. ,,, 0 '
(85) . .
(86) . . ) *) * $9 : ),''','5* 7(8.
(87)
(88)
(89) 表. ; $9,(=>4(#, . ハードウェア. 言語 )9%911ベース* :<$9. . あり. なし. コンパイラ. )9 上*. なし. インタプリタ. なし. コンパイラ. )中間言語*. なし. なし. なし. なし. なし. コンパイラ. コンパイラ. コンパイラ. コンパイラ. )中間言語*. コンパイラ. コンパイラ. )マイコン上*. インタプリタ. あり. あり. インタプリタ. )マイコン上*. 対話的実行. 言語処理. ). あり 表形式. *. デバッガによる. デバッガによる. シミュレータ上で可. なし. なし. なし. なし. なし. )実行中断後 可* あり )表・グラフ* )$9A 等ではなし*. )実行中断後 可*. なし. 実行文の可視化. 入出力・変数値・. 無償. @(33∼. 容量制限版は無償. 容量制限版は無償. 無償. 無償. 無償. 無償. @(3∼. 無償. 無償. 開発環境の費用. 変数. 表 言語のサポートする変数名,制御文,定数等の一覧 F の ,4 個('4 型) 制御文 +? ! ? +? B;! ? ? 定数 0 -? /$#/? $G "? " "? ? +! 演算子 1? ? H? %? I? J? ? K? JJ? ? ? 6? ? 6? 66? L 6? ? 数値 ' 進数,'4 進数,, 進数('4 のみ) 関数 ? ! ? !- ? !? ! ? !- ? &? !!? ? " ? ? ?
(90) M; ?
(91) MB ? ?
(92) M;?
(93) MB の M には から '' の数値が入る. グラフィカル言語. :<$9 :<$9 :<$9. < 言語. :<$9. !!& !! . モジュール. グラフィカル言語. :<$9. :<$9. 言語. 初心者に向くといわれるマイコン(マイコンモジュール)用の開発環境の比較. !!& !! ? $9A ほか !!& :<$9 <. . $9A $9A )専用ファームウェアの )
(94) * 738 入った ; $9 マイコン* :9 E ),* ! E マイコン :<$9 + $9 )(* 7''8 ; $9 マイコン $9:<$9 ).* 7',8 ; $9 マイコン <; )'(* 7'.8 : 7'(8 )マイコンボード単体で動作せず 9 が必要* )互換ボードあり*. :<$9 < - B )
(95) ,,* 7C8 !! %< "! <+B )
(96) '.* 758 $D) '* 7'8. ',:! ),,* 748. :<$9 )
(97) .* 78. 名称 バージョン 備考. 7 8. 情報処理学会研究報告
(98) . Vol.2012-UBI-34 No.8 2012/5/17. .
(99)
図
関連したドキュメント
全国の宿泊旅行実施者を抽出することに加え、性・年代別の宿泊旅行実施率を知るために実施した。
で実施されるプロジェクトを除き、スコープ対象外とすることを発表した。また、同様に WWF が主導し運営される Gold
3.仕事(業務量)の繁閑に対応するため
学生は、関連する様々な課題に対してグローバルな視点から考え、実行可能な対策を立案・実践できる専門力と総合
第3章で示した 2050 年東京の将来像を実現するために、都民・事業者・民間団体・行政な
小・中学校における環境教育を通して、子供 たちに省エネなど環境に配慮した行動の実践 をさせることにより、CO 2
小学校における環境教育の中で、子供たちに家庭 における省エネなど環境に配慮した行動の実践を させることにより、CO 2
を育成することを使命としており、その実現に向けて、すべての学生が卒業時に学部の区別なく共通に