Vol.2012-UBI-34 No.8
2012/5/17

情報処理学会研究報告    

マイコン上で対話的な開発を実現する
インタプリタ型言語
光永 法明 概要：本論文では，マイコンを利用した製作の初心者へ向けて，マイコン上で動作し対話的にプログラミングができるインタプリタ言語   と，プログラム動作と入出力を可視化するツール    を作成したので，その設計方針と実装結果を紹介し議論する．
キーワード： ，インタプリタ，可視化，プログラミング言語，  











        

                                                                                    

 はじめに合った回路の設計と実装，開発に利用するプログラミング

近年，マイコン（マイクロコンピュータ マイクロコンされる．比較的初心者にも取り扱いやすいといわれるマイトローラ）が安価になる一方で処理速度や記憶容量といっコン向けの  言語処理系である     の た性能が向上し，応用範囲が広がっている．また実世界指   モジュールや各社のマイコン向け  コン

向インタフェースへの関心の高まりとともに，

パイラ

言語とライブラリ  についての知識と活用が必要と などでは，典型的な利用方法の場合

  といったアーティストやデザイナー向けにプにはマイコンや周辺回路の初期化や操作について記述量がロトタイプ作成用に開発されたボードと開発環境が広く知少なくなるように工夫されており，ライブラリのリンクをられるようになり，マイコンを利用する層も広がりを見せ意識させない．

つつある．また   年度から中学校の技術・家庭科ではよりも汎用性や拡張性などが重視される傾向があり，サン実世界とつながったコンピュータのプログラム作成の指導

プルプログラムのみでライブラリが用意されない場合や，が必須となる  ．したがって，マイコンを使った製品や作用意されてもライブラリのリンクに明示的な指定が必要な品製作に関心が高まるとともに，初心者にも分かりやすい場合が多い．そのため難しいという印象を持たれることが開発環境がより重要となる．

多いが， 言語（ やマイコンを利用した製品や作品を制作するには，目的に 言語の処理系では記述量の少なさ言語をベースとする）では初期化，操作やライブラリのリンクについて，多くの知識を必要としないよう工夫がされている．

大阪教育大学­      

        

また多くのマイコンには，あらかじめキャラクタ液晶や

Vol.2012-UBI-34 No.8
2012/5/17

情報処理学会研究報告   

可変抵抗，!"# 等を実装した基板と，サンプルプログラてはメモリの利用効率が重要となり，また動作速度の要求ムをセットにした学習キット（トレーニングセット）が用にも応えようとしているためである．
入出力・変数値・実行文（命令）の可視化に注目すると意されている．学習キットで学んだあとで，キットの回路をベースに目的の回路を制作することが想定されており，

'() * と ' '+ をのぞくと初心者向けの可視化支

サンプルプログラムの流用について制限が少ない場合も多援がされていない．*

い．さらに，マイコン（あるいはマイコンボード）と親和る可視化の支援はなく，いわゆる , デバッグ（シリア性の高い電気的・機械的なインタフェースをもつセンサ・ルポート利用）もしくは，出力ピンの操作と回路計やオシの開発環境では，開発環境によアクチュエータなどのモジュールも多く市販されており，ロスコープの組み合わせが必要となっている．また 

サンプルプログラムが用意されているものも多い．の開発環境ではシミュレータやデバッガの利用が必要であ

このように理解・利用しやすい単位のソフトウェアやハードウェアのブロックを多く用意し，設計・製作を容易り，可視化について初心者に向けて十分に配慮されている
開発環境は と多くない．にする様々な手法が提案・実現・市販されている．一方で '  )' %    - はインタプリタ

各ブロックの利用方法を理解し，適切に利用することが不型の  言語を実装しており，対話的な計算（実行）や可欠であることは変わらない．ソフトウェア，ハードウェ実行の中断が可能となっている．一方で統合開発環境は持ア共に理解には，実際に実装をし動作を確かめることがたず，シリアルターミナルによりマイコンとユーザが対話早道である．動作を確認するために，ソフトウェアではデして開発をするため，可視化のツールを持たない．
ところで & 歳から * 歳を対象に設計されているバッガ，ハードウェアでは回路計やオシロスコープといった可視化ツールが用いられる．しかし，それらのツールを' '+

 ではグラフィカルプログラミング言語を採利用するには，基本的なプログラミング言語，マイコン，用している．開発環境では，アイコンをクリックするだけ回路動作の理解が必要である面があり，またツール操作のでアイコンの命令が動作し，対話的に命令の動作を把握で習得や実際の操作にも時間が必要なことから，使用が有効きる．また実行中の命令が分かるように表示に工夫がされな場面でも初心者には使われない傾向がある．ている．このような対話的操作や可視化は年齢を問わずしたがってソフトウェアの基本的な操作ができれば使用有効であると考えられる．一方で ' '+ ではマイコンはできる，可視化ツールを用意すれば初心者の助けになると

 . のために用いられており，開発したプログラムはマイ考えられる．またプログラミング言語で書いた計算式（命コン単体では動作しない．

令）の動作を対話的に確かめられるインタプリタ型言語であれば理解の助けになるとともに，可視化ツール用のイン

インタプリタ型言語 の設計方針

タフェースをソフトウェアで実装することも容易と考え/.0 が数 (12)，/0 が数 (12) 程度とメモリのられる．そこで， 言語と互換性のあるインタプリ制約が大きいマイコン上で動作するインタプリタ型言語

タ型言語  と， と通信して変数や入出力

では，実行可能なプログラムの大きさも限られる．そのた

ピンの変化を容易に観察，操作できるターミナルソフト

め規模の大きいプログラムを作成しようとしたときに，ス $  を作成したので報告する．

ムーズにコンパイラ型言語へ移行できることが望ましい．

以下，現在のマイコン向け開発環境について概観する．

そのためには，インタプリタ型言語が動作するマイコンをそして  と $  の設計指針と実装にターゲットとするコンパイラ型言語開発環境の入手が容易ついて紹介し，最後に議論とまとめを述べる．

で，二つの言語間で文法やライブラリ  の互換性がある

 マイコン用開発環境の比較と設計方針とよい．また市販の開発環境の中には付属するライブラリ マイコン用開発環境の比較るが，そのような制約の少ない開発環境であればインタプ

表 % に初心者に向くと考えられるマイコン向け開発環

リタ型言語のライブラリの充実が容易である．

を用いた他の言語処理系の作成が禁じられているものもあ

境として，グラフィカルプログラミング環境，統合開発

そこで  の開発に当たっては  マイコン環境をもつコンパイラ型かインタプリタ型の  処

ボードを対象とし， 言語と互換性を持たせること理系，（合計）を取り上げて比較を示す．表かにする． マイコンボードは既に  万個以上が出と多数を占めている．これは荷されており，初心者向けとしても人気があり，開発環境

らは  処理系が  が初心者にも分かりやすいと解釈されたためと考 #" の入手も容易である．また  言語のえられる．しかし， が急速に普及したことからも，コンパイラは 3'' をベースにしており，付属のライブラリ の文法が初心者にも易しく， は言語の文法が難しいとはいえない．また，コンパイラ型言語が &となっている．この理由はメモリの限られたマイコンにおい­         ! や !))

! などのライセンスで提供されている．そのため上記のような制約が少ない．そこで の開発には  言語   を用いる．
Vol.2012-UBI-34 No.8
2012/5/17

情報処理学会研究報告   

図   が起動時に出すメッセージ図  言語は  言語と文法の互換性を持つが   をシリアルターミナルから使っている様子

可視化ツール  

次のような点で異なる．プログラムの規模が小さいことか と通信し変数の値等を可視化するツール ;ら， ではプログラムの先頭から順次実行し，関数$  を作成した．開発には 0'), 5)  <の定義をサポートしない．変数については宣言を不要とす  ")) " を用いている．図  に可視化ツールる代わりに，あらかじめ用意された変数名を使うものとす$  の実行中の様子を示す．図左上が ;る．演算はすべて符号付き * ビット整数とする．文字列$  のメインウィンドウで，シリアルターミナは取り扱わない．

ルとしての機能と変数，入出力ピンの表形式での表示機能 インタプリタ型言語  を持つ．また頻繁に入力するコマンドをマウス操作で入力

 

出力ピンの変化をグラフで表示する．マウスオーバで値と出来るボタンを用意している．図の右上のウィンドウは入の概要 マイコンボード  4 にインタプリタ型

時刻を読むことも出来る．図左下のウィンドウはプログラ

言語  を実装した． 4 には  製のムエディタである．プログラムの実行中には実行中の行

5/ アーキテクチャ $3 & マイコン フラッシュを赤で表示する．図右下のウィンドウでピンを操作出来/.0 (12) /0 (12) ""/.0 (12) が搭

る．マウスでピンの機能（デジタル入出力，アナログ入力，載され， *067 のクロックで動作する． がサポー

80 出力，ラジコンサーボ出力）を選択し，ラジオボタトする変数名や制御文，定数などの一覧を表 - に示す．関ン，スライダーで値を操作し，回路の動作などを確かめら

数名と動作は  言語に準じ，デジタル入出力，アナれる．またマウス操作と等価になるプログラムの文を表示

ログ入力，80 出力，ラジコンサーボ出力，トーン出力する．などが可能であるが， 言語と違い多態性をもたなこのような可視化ツールを用意するために定めたデバッ

い．後述するデバッグインタフェースを含め， のグ用のプロトコルを表  に示す．プログラムの実行文のバイナリの大きさが約 (12)，実行可能なプログラムの範囲をのぞき，$  の要求により 

サイズが *12) である．

が応答をする．各要求 応答を $  または は非同期シリアル -9(1) を通したユーザ が送る際には ,，プロトコル番号，データの順インタフェースを持つ． の初期化が終わると図に送り可変長である．, によりターミナルから入力されのようにメッセージと .: のプロンプトを出す．.: のプるシェルの操作と区別している．チェックサムなどの誤りロンプトが表示されているときにユーザインタフェース検出・訂正は行っていない．$ （ プ（シェル）が受け付けるコマンドを表に示す．式を入力

ロセッサ 9* 67 コアの  使用）から ) 周期で要するとすぐに結果を返すので対話的に，関数の実行結果な求を出し，* の変数と  つのデジタルポート，* つのアナどを確かめられる 図 ．図  では，いくつかの式を評価

ログ入力を可視化できている．

させ， 上にある  ピンにつながった !"# を秒周期で点滅させるプログラムを入力後，実行している．プ
ログラム実行は通常の実行の他，ステップ実行，9- 秒に

によるプログラムの実行速度 によるプログラムの実行速度を確かめるため，文の実行があり，実行中に実行文の表示もできる．プロ

図 % のプログラムでデジタル出力ピンを無限ループで 6 !

グラムは /0 上に置き実行されるが，マイコン内蔵の不と変化させてオシロスコープで観察した．図 % の場合と 揮発性の ""/.0 へ保存し起動時に読み込み，実行も可行目と % 行目の間へ加乗除の計算と時間待ち関数を入れた能である．つまりプログラミングが終了すれば，マイコン場合について観察結果を表  に示す．表から  言単体で動作する．

語をコンパイルしたバイナリの実行速度に対し，­ 

        

Vol.2012-UBI-34 No.8
2012/5/17

情報処理学会研究報告   表   のシェルが受け付けるコマンド

コマンド

説明式

式を入力すると計算結果を表示する 
プログラムを実行する．実行中に命令を表示し，一命令実行毎に  秒の間をあける．
    起動時に   に記憶されたプログラムを実行する．
 
プログラムを実行する．実行する命令を表示する．
 ＜行番号＞ プログラムリストの＜行番号＞の行を置き換える．置き換える行は  コマンドの続いて入力する．
!
プログラムリストを表示する．先頭に行番号を表示する．
    起動時に   に記憶されたプログラムを実行しない．
 を入力すると，プログラムの入力待ちになる．プログラムの最後に  を入れるとコマンド待ちに戻る．
プログラムを実行する．

現在のプログラムを   に記憶する．
 
プログラムをステップ実行する．一命令実行毎にプログラムの実行を中断し入力待ちとなる．

図  "  ! のウィンドウ．左上のウィンドウが起動時に表示されるシリアルター
ミナルと変数，入出力ピンモニタである．右上のウィンドウは入出力ピンの変化をグラフで表示するウィンドウである．左下のウィンドウはプログラム用のテキストエディタで，プログラム実行中は，実行している行が赤で示される．右下のウィンドウはピンの操作ウィンドウである．ピンを# $ で操作し，回路の動作などを確かめられる．また操作をプログラムの文として表示する．

­ 

        Vol.2012-UBI-34 No.8
2012/5/17

情報処理学会研究報告     "  ! から    への要求と応答%

表 
要求 応答
番号による !"# やモータの調光，速度調整を目的とした 80

バージョン

しかし，80 出力やトーン出力の関数を用意しているの

&
&'
&(&&

変数値で !"# のダイナミック点灯以外は容易に実現出来る．ま入出力ピンの値
プログラムリスト

た，人の操作であったり，環境光の明るさや環境音の大き)プログラム実行時に実行位置を送る 応答なし，以降プログラム実行中に実行文の範囲を送る*
&+    起動時からの経過時間 ) 単位*
&' ピンの入出力設定 )応答なし*
&'' デジタル出力 )応答なし*
&', - 出力 )応答なし*
&'. ラジコンサーボ出力 )応答なし*
&'( ラジコンサーボ出力の設定 )応答なし*          
図 

表 

生成や，可聴音の生成，!"# のダイナミック点灯は難しい．

さの緩やかな変化への反応を実現するような，数 67 以下の制御周期で十分な用途には問題がないと考えられる．
ところで $  による動作の可視化デモを関西の技術系のイベント等で展示をしたところ，初心者の方にもベテランの方にも可視化について好意的な意見をいただいた．とくに初心者の方からは最近苦労した経験からか「わかりやすい」との声が多かった．インタプリタ言語であることについては，ベテランの方から & ビットパソコンの  を思いだし，懐かしいという声があった．また  言語からも $  の可視化を使いたいという要望があり対応している．

 まとめ

デジタル出力ピンによる実行速度の測定に使ったプログラム)測定部分のみ*．!- 関数は ' つ目の引数のピンに ,つ目の引数を出力する．   では !!   を省く．
図( のプログラムで観察されたデジタル出力ピンの /%0 となる時間の観察結果   1
  '      "  !
なし/2.3 /24/24〜54
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'/244〜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〜''' で揺らぐ

本論文ではマイコンを使った製作の初心者へ向けて，インタプリタ言語  と動作の可視化ツール $;  の作成について設計方針を述べ，実装と動作速度を紹介した．今後は，これらを使った作例や手引きなどを充実させていきたい．
参考文献

"

& では待ち時間が短い場合に誤差が大きい．一方で，変数等の可視化に $  を使用した場合：  *2) 詳細  33&%3+3

7 8 9( 5：* 0+ 詳細 ' 0+ ：*2) 2  8 ,+   詳 細( 5

5：(,,, $

4 ,+,,, %

 , 0   5  * + 

 ' $.: ;   +5

2 5

詳細2;,   ' &#9: ;   +5：()> (!詳細 ,,,  5  /)2   +：*)?/3@  詳細<      =! 3,,,+

 C +0B<00 0,,,

：  5A B,C B&CB&0*2)(;()

 !  !

+<,$%

：()*2) (?0 

詳細

0' + 


"

/ !  ! = '+

'+D / E/+ 0：

2  (!  +<   詳細 +0

 

* 2 < ! = ! !

     < # & 636. ##

 議論

&

 のプログラムの実行速度からは，ソフトウェア
 

6のオーバヘッドは最大で -) 程度であると分かる．

­1

出力が 6 である時間が変わらない．時間待ち関数の引数の単位は ) であるが，呼び出し等のオーバヘッドにより/ 0#3&" 3+- ほどであるとわかる．また主としてプログラムの解釈に時間がかかっており，加算と除算で,,,&  ' .#での実行速度は：  詳細   ：  詳細 !  
文部科学省：中学校学習指導要領解説技術・家庭編 平成# 年 $ 月 ##%
 ' ：() (  * +  詳細            (E;<  ),,,  0 ：( *  詳 細 E ' ­ )*) *$9  : ),''','5* 7(8        なし

コンパイラインタプリタグラフィカル言語)

あり 表形式*デバッガによるデバッガによるシミュレータ上で可なし

なし

なしなしなし)実行中断後   可*あり )表・グラフ*)$9A 等ではなし*)実行中断後   可*なし

実行文の可視化

入出力・変数値・

無償@(33〜

容量制限版は無償

容量制限版は無償

無償

無償

無償

無償

@(3〜無償無償

開発環境の費用変数

表     言語のサポートする変数名，制御文，定数等の一覧
F の ,4 個（'4    型）
制御文
+? ! ? +? B;! ?  ?  
定数0 -? /$#/? $G "? " "?  ? +!演算子
1? ? H? %? I? J? ? K? JJ? ? ? 6? ? 6? 66? L 6? ? 数値
' 進数，'4 進数，, 進数（'4    のみ）関数
 ?  ! ?  !- ?  !? ! ? !- ? &? !!?  ? " ?  ?   ?   M; ?   MB ?  ?     M;?   MB の M には  から '' の数値が入るありなし)9 上*なし

なし

なし

なし

なし

なし

コンパイラ)中間言語*

コンパイラ

コンパイラ

コンパイラ)中間言語*

コンパイラコンパイラ)マイコン上*あり

あり

対話的実行

コンパイラ   言語)9%911ベース*:<$9  )マイコン上*

インタプリタインタプリタ

言語処理:<$9:<$9:<$9< 言語:<$9グラフィカル言語:<$9:<$9言語!!&  !! モジュール

$9A   
$9A )専用ファームウェアの)  * 738
入った ; $9 マイコン*:9 E ),*  ! E マイコン:<$9  + $9 )(* 7''8; $9 マイコン
$9:<$9  ).* 7',8; $9 マイコン<; )'(* 7'.8: 7'(8)マイコンボード単体で動作せず 9 が必要*)互換ボードあり*:<$9 < - B ) ,,* 7C8
 !! %< "! <+B) '.* 758
   $D)  '* 7'8

!!&  !! ?
$9A ほか!!& :<$9 <;
$9,(=>4(#,  

ハードウェア

初心者に向くといわれるマイコン（マイコンモジュール）用の開発環境の比較

',:! ),,* 748

表       :<$9 )  .* 78

名称 バージョン 備考

7 8

情報処理学会研究報告

Vol.2012-UBI-34 No.8
2012/5/17

