• 検索結果がありません。

iArduino:マイコン上で対話的な開発を実現するインタプリタ型言語

N/A
N/A
Protected

Academic year: 2021

シェア "iArduino:マイコン上で対話的な開発を実現するインタプリタ型言語"

Copied!
6
0
0

読み込み中.... (全文を見る)

全文

(1)Vol.2012-UBI-34 No.8 2012/5/17. 情報処理学会研究報告     

(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  ' &#9: ; 

(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)

図 が起動時に出すメッセージ  言語は  言語と文法の互換性を持つが 次のような点で異なる.プログラムの規模が小さいことか ら,  ではプログラムの先頭から順次実行し,関数 の定義をサポートしない.変数については宣言を不要とす る代わりに,あらかじめ用意された変数名を使うものとす る.演算はすべて符号付き * ビット整数とする.文字列 は取り扱わない.  インタプリタ型言語  の概要  マイコンボード  4 にインタプリタ型 言語  を実装した.  4 には  製の  5/ アーキテクチャ  $3&amp;
表 のシェルが受け付けるコマンド コマンド 説明  プログラムを実行する.実行中に命令を表示し,一命令実行毎に  秒の間をあける.    起動時に   に記憶されたプログラムを実行する.    プログラムを実行する.実行する命令を表示する.  <行番号> プログラムリストの<行番号>の行を置き換える.置き換える行は  コマンドの続いて入力する. ! プログラムリストを表示する.先頭に行番号を表示する. 起動時に   に記憶されたプログラムを実行しない.   を入力すると,プログラムの入力待ちになる.プログラ
表   &#34;! から への要求と応答 番号 要求 % 応答 &amp; バージョン &amp;' 変数値 &amp;( 入出力ピンの値 &amp; プログラムリスト &amp; プログラム実行時に実行位置を送る ) 応答なし,以降 プログラム実行中に実行文の範囲を送る * &amp;+ 起動時からの経過時間 ) 単位 * &amp;' ピンの入出力設定 ) 応答なし * &amp;'' デジタル出力 ) 応答なし * &amp;', - 出力 ) 応答なし * &amp;'

参照

関連したドキュメント

全国の宿泊旅行実施者を抽出することに加え、性・年代別の宿泊旅行実施率を知るために実施した。

で実施されるプロジェクトを除き、スコープ対象外とすることを発表した。また、同様に WWF が主導し運営される Gold

3.仕事(業務量)の繁閑に対応するため

学生は、関連する様々な課題に対してグローバルな視点から考え、実行可能な対策を立案・実践できる専門力と総合

第3章で示した 2050 年東京の将来像を実現するために、都民・事業者・民間団体・行政な

小・中学校における環境教育を通して、子供 たちに省エネなど環境に配慮した行動の実践 をさせることにより、CO 2

小学校における環境教育の中で、子供たちに家庭 における省エネなど環境に配慮した行動の実践を させることにより、CO 2

を育成することを使命としており、その実現に向けて、すべての学生が卒業時に学部の区別なく共通に