...

フィジカルコンピューティングのための スマートフォンを用

by user

on
Category: Documents
3

views

Report

Comments

Transcript

フィジカルコンピューティングのための スマートフォンを用
平成 23 年度
修士学位論文
フィジカルコンピューティングのための
スマートフォンを用いた開発環境の提案
A Smartphone-based Programming Environment
for a Physical Computing Platform
1145081
上村 祐加
指導教員
高田 喜朗
2012 年 3 月 1 日
高知工科大学大学院 工学研究科 基盤工学専攻
情報システム工学コース
要 旨
フィジカルコンピューティングのための
スマートフォンを用いた開発環境の提案
上村 祐加
マイクロコントローラとプログラム開発環境のセットを使って簡単に電子工作を行う,
「フィジカルコンピューティング」という活動が近年人気を集めている.その目的は電子工
学,情報工学の教育から,デザインやアート教育としてまで様々である.しかし,現在の
フィジカルコンピューティング用ツールキットでは,プログラムの開発,修正や動作確認の
たびに PC を起動する必要があり,わずらわしさがあると言える.一方,高機能携帯電話端
末であるスマートフォンが今日広く普及し,それに採用されているタッチ操作は直感的で理
解しやすいとされている.そこで本研究では,スマートフォン上で動作する,より直感的で
操作しやすいユーザインターフェースを持つフィジカルコンピューティングのためのプログ
ラム開発環境を提案する.提案システムは,スマートフォンでプログラムできることによ
り,PC および PC 上で開発環境を起動する手間を軽減している.また,タイル型ビジュア
ルプログラミング方式を採用することで,プログラムの記述や意味の理解をしやすくしてい
る.そして,スマートフォン上での指による操作に適するよう,タイルの大きさや命令の粒
度等を工夫している.上記の設計方針に基づいて,スマートフォンとして Android 携帯端
末,フィジカルコンピューティング用ツールキットとして Arduino を用いて試作システム
を実装した.試作システムを用いて行った評価実験により,提案システムは,Arduino 付属
の開発環境では 1 時間以上かかったプログラムの作成を数分程度に短縮できること,ごく簡
単な説明だけでプログラムを作成できることなどを確認した.
キーワード
フィジカルコンピューティング, 開発環境, Android, ビジュアルプログラミ
–i–
ング
– ii –
Abstract
A Smartphone-based Programming Environment
for a Physical Computing Platform
Yuka KAMIMURA
Physical computing means creating electronic devices easily and rapidly using a
set of a micro-controller and a program development environment, and it has become
popular in recent years. The purpose of physical computing is various; for example,
education of electronics and information engineering and design and art education.
However, the current physical computing platform require their users to start personal
computers (PCs) in the development and modification of program. On the other hand,
smart-phones are widely used today. Therefore in this study, we propose a smartphonebased programming environment for a physical computing platform that has an easy
and intuitive user interface with a touch screen. The proposed environment adopts a
tile-based visual programming scheme, which makes a program easier to construct and
understand even for a user unfamiliar with programming. Moreover, the granularity of
each statement and the size of each tile are designed to fit the touch screen-based user
interface. In this paper, we describe the outline of the proposed environment as well as
a prototype system that has been implemented on an Android-based smartphone and
Arduino, a physical computing toolkit. Evaluation experiments using the prototype
system were conducted. Whereas the Arduino IDE required the subjects to take more
than one hour for creating a simple program, the proposed system required only a few
minutes. Moreover, the subjects only needed a very short instruction for using the
– iii –
proposed system.
key words
physical computing, programming environment, Android, visual pro-
gramming
– iv –
目次
第1章
序論
1
第2章
背景知識
5
2.1
Arduino IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
2.2
MoCoPro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
2.3
Scratch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
提案システム
9
3.1
提案システムのインタフェース . . . . . . . . . . . . . . . . . . . . . . .
9
3.2
提案システムの構築環境 . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
3.3
利用者の操作方法
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
3.4
実装方針 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
第3章
3.4.1
3.5
第4章
4.1
4.2
第5章
5.1
ローレベルコマンドの説明 . . . . . . . . . . . . . . . . . . . . . .
14
データの流れ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
評価
19
実験 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
4.1.1
実験内容 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
4.1.2
実験結果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
記述済みプログラムの可読性の評価 . . . . . . . . . . . . . . . . . . . . .
22
4.2.1
実験内容 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
4.2.2
アンケート結果と考察 . . . . . . . . . . . . . . . . . . . . . . . . .
22
結論
23
結論 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
–v–
目次
5.2
今後の課題 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
5.2.1
プログラム表示の省面積化 . . . . . . . . . . . . . . . . . . . . . .
23
5.2.2
タブレット型端末での実装と比較 . . . . . . . . . . . . . . . . . . .
24
5.2.3
異なる年齢層に対する操作容易性の評価 . . . . . . . . . . . . . . .
25
謝辞
27
参考文献
29
付録 A
提案システムの説明書
31
付録 B
可読性評価のアンケート用紙
33
– vi –
図目次
1.1
フィジカルコンピューティング用ツールキット . . . . . . . . . . . . . . . .
1
2.1
ArduinoIDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
2.2
ソフトウェアキーボード . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
2.3
MoCoPro のプログラミング画面 . . . . . . . . . . . . . . . . . . . . . . .
7
2.4
Scratch のプログラミング画面 . . . . . . . . . . . . . . . . . . . . . . . .
8
3.1
タイル型ビジュアルプログラミング . . . . . . . . . . . . . . . . . . . . . .
10
3.2
メニュー画面
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
3.3
命令一覧画面
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
3.4
コマンドセット . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
3.5
ローレベルコマンドへの変換 . . . . . . . . . . . . . . . . . . . . . . . . .
15
3.6
本システムのデータの流れ . . . . . . . . . . . . . . . . . . . . . . . . . .
17
4.1
実験環境 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
4.2
ArduinoIDE での開始画面 . . . . . . . . . . . . . . . . . . . . . . . . . .
20
4.3
プログラミング時間の比較 . . . . . . . . . . . . . . . . . . . . . . . . . .
21
5.1
命令タイルのみのインタフェース . . . . . . . . . . . . . . . . . . . . . . .
24
A.1 提案システムの説明書 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31
B.1 アンケート記入用紙 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
– vii –
表目次
3.1
接続可能なデバイスと接続先ピン . . . . . . . . . . . . . . . . . . . . . . .
11
4.1
アンケート結果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
– ix –
第1章
序論
マイクロコントローラとプログラム開発環境のセットを使って簡単に電子工作を行う,
「フィジカルコンピューティング」[1, 2] という活動が近年人気を集めている.その目的は電
子工学,情報工学の教育から,デザインやアート教育 [1] としてまで様々である.
Arduino[3](図 1.1 左)や mbed[4](図 1.1 右)といったフィジカルコンピューティング
用ツールキット(マイクロコントローラとソフトウェア開発環境のセット)が提供されてお
り,これらを使うことで比較的容易にフィジカルコンピューティング環境を得ることがで
きる.Arduino はマイクロコントローラ AVR と周辺回路および外部インタフェースを基板
上に実装したハードウェアと,それを制御するソフトウェアの開発環境(IDE)からなる.
mbed も同様に,マイクロコントローラを中心とするハードウェアと,ソフトウェア開発環
境からなる.
現在のフィジカルコンピューティング用ツールキットは,PC 上でプログラム開発を行う
必要がある.そのため,開発やデバッグを行う際はそのたびに PC を立ち上げて,プログラ
ミングを行う必要がある.
一方,高機能携帯電話端末であるスマートフォンが今日広く普及し,それに採用されてい
図 1.1 フィジカルコンピューティング用ツールキット
–1–
第 1 章 序論
るタッチ操作は直感的で理解しやすいとされている.携帯性に優れ,外出する際も持ち運
び,常に電源が入っている状態であることが多い.スマートフォンでフィジカルコンピュー
ティング用プログラムの開発を行えるようになると,開発やデバッグ,プログラムの変更の
際に PC を立ち上げる必要がなく,手元にあるスマートフォンのみで気軽にプログラミング
や動作確認を行うことが可能となる.また,ユーザがアイディアを思いついた時点で時間や
場所に関係なく気軽にプログラミングを行うことができる.しかし,現状ではスマートフォ
ン上でのフィジカルコンピューティング用開発環境は存在しない.
本研究の目的は,ユーザが PC を必要とすることなくフィジカルコンピューティングを開
発することができる環境を提案することである.プログラムの記述をスマートフォン上で行
えるようにすることにより,PC を起動して,総合開発環境を立ち上げるという動作が必要
ではなくなる.また,場所や時間を選ばず,ユーザがフィジカルコンピューティングに関す
るアイディアを思いついたときに,プログラムを作成できるようにすることや,デバッグや
プログラムの変更を手元で行えるようにすることを可能にする.
PC 上でフィジカルコンピューティング用プログラムを開発する際は,C 言語などのテキ
スト形式のプログラミング言語を用いてプログラムを記述する.このような言語は,高い自
由度を持っているため,様々な処理を行うプログラムを記述することが可能である.しか
し,スマートフォン上で記述するには,画面が小さいことや入力インタフェースが貧弱であ
ることが問題となるため適していない.そこで提案システムでは,ビジュアルプログラミン
グ言語を採用する.ビジュアルプログラミング言語とは,図形やアイコンを操作することに
よりプログラムを記述する手法であり,テキスト形式と比較してプログラムの構造をユーザ
が認識しやすくなる [7].本研究においては,単に図形やアイコンでプログラムを表現する
だけでなく,フィジカルコンピューティングを行うために必要となるプログラムの知識を少
なくすることや,可読性の向上により,効率よくプログラムの管理を行えるようにするため
の簡易なプログラムの記述形式を考える必要がある.そして,ビジュアルプログラムの要素
となる図形を操作するためのインタフェースを工夫することにより,スマートフォンの画面
の小ささや入力インタフェースの貧弱さを軽減するインタフェースの構築を目指す.
–2–
上記の設計方針に基づいて,スマートフォンとして Android 携帯端末,フィジカルコン
ピューティング用ツールキットとして Arduino を用いて試作システムを実装した.試作シ
ステムを用いて行った評価実験により,提案システムは,Arduino 付属の開発環境では 1 時
間以上かかったプログラムの作成を数分程度に短縮できること,ごく簡単な説明だけでプロ
グラムを作成できることなどを確認した.
本稿の以降の構成は以下の通りである.2 章では,既存の開発環境の問題点を述べた後,
関連研究に触れ,入力インタフェースの検討を行う.3 章では,提案システムの入力インタ
フェースについて述べ,その後提案システムの利用方法を述べ動作について説明を行う.そ
して,内部実装がどのような構成になっているかについて述べる.4 章では提案システムの
評価について被験者をとり実験した内容と結果を述べる.5 章ではまとめと今後の課題につ
いて述べる.
–3–
第2章
背景知識
本章では,既存のフィジカルコンピューティング用開発環境について紹介し,ビジュアル
プログラミングの必要性を説明した後,ビジュアルプログラミングの例を示し,提案システ
ムに最適なインタフェースを検討する.
2.1
Arduino IDE
フィジカルコンピューティング用開発環境として,Arduino の開発環境である Arduino
IDE(図 2.1)がある.これは C++に似たプログラム言語で開発を行う.記述言語が高い自
由度を持っているため,様々な処理を行うプログラムを記述することができる.
スマートフォン上でフィジカルコンピューティング用プログラムの開発を行うために,
Arduino IDE をスマートフォンへ移植することが考えられる.しかし,スマートフォンに
搭載されているソフトウェアキーボード(図 2.2)では画面が小さいため打鍵しづらいとい
う問題点がある.また,プログラム記述の補完機能が Arduino IDE にはなく,スマート
フォンでのプログラミングに適した開発環境とは言えない.そのため,提案システムではテ
キスト形式のプログラミング言語ではなくビジュアルプログラミング言語を採用する.
2.2
MoCoPro
スマートフォン上でのプログラミングの支援についての研究として,西本らの MoCoPro
(Mobile Context Programming)[6] が挙げられる.近年,携帯端末に搭載された様々なセ
ンサからユーザのコンテキスト情報を取得し,そのコンテキストに合わせた動作を携帯端末
–5–
第2章
背景知識
図 2.1 ArduinoIDE
に行わせることが可能になってきている.しかし,コンテキスト依存プログラムはユーザに
より多種多様な要求があるため,エンドユーザが自分自身で記述できることが必要となる.
MoCoPro はタッチパネルを搭載した携帯端末上で,ユーザがコンテキスト依存プログラム
を記述するためのビジュアルプログラミング環境である.
図 2.3 は MoCoPro で作成した「本屋の付近にいるときは,ブザーとともに,買いたい物
のリストを表示する」というプログラムの一部である.
MoCoPro では各命令は正方形のアイコンで表現するが,アイコンの意味を知らない場合,
画面を見ただけではそれをどのような動作を行うプログラムか分からない.プログラムの可
読性を高めるために,提案システムではアイコンではなく,命令が書かれたタイルを組み合
わせることにより,プログラムを記述することができるようにする.
–6–
2.3 Scratch
図 2.2
ソフトウェアキーボード
図 2.3 MoCoPro のプログラミング画面
2.3
Scratch
命令をタイルで表現しているビジュアルプログラミングの例として,Scratch[5](図 2.4)
が挙げられる.これは,MIT Media Lab の Lifelong Kindergarten Group が開発中の子供
向け教育用プログラミング環境である.レゴブロックのようなタイルを積み重ねることで,
スプライト (画像オブジェクト) を動かすスクリプトを書く.
しかし,Scratch は PC の画面で操作することを目的にユーザインタフェースがデザイン
されており,これをそのままスマートフォンに適応すると,各タイルやその上の文字が小さ
–7–
第2章
背景知識
図 2.4 Scratch のプログラミング画面
くなり,指で操作しづらい,文字が読みにくいなどの問題が発生すると考えられる.スマー
トフォンでの操作に適したものとするため,各命令は Scratch のように文章で表すのではな
く,「前進」などの単語で表せる命令のみ用意し,指で操作しやすい大きさのタイルで表現
する.命令はフィジカルコンピューティング用のプログラミング環境であることを考慮して
設計し,「前進」等の命令とその命令を何秒継続するかという修飾タイルを組み合わせるよ
うにする.
本研究の目的は,ユーザが PC を必要とすることなくフィジカルコンピューティングを開
発することができる環境を提案することである.プログラムの記述をスマートフォン上で行
えるようにすることにより,PC を起動して,総合開発環境を立ち上げるという動作が必要
ではなくなる.また,場所や時間を選ばず,ユーザがフィジカルコンピューティングに関す
るアイディアを思いついたときに,プログラムを作成できるようにすることや,デバッグや
プログラムの変更を手元で反映できるようにすることを可能にする.
–8–
第3章
提案システム
本章では,提案システムのインタフェース,提案システムの構築環境について述べ,操作
方法例を紹介しながら提案システムの動作を説明する.その後,具体的な実装内容について
説明を述べる.
3.1
提案システムのインタフェース
2 章で解説したことから,提案システムのインタフェースとしてビジュアルプログラミン
グ言語を採用し,命令要素の表現は単語を用いたタイル型(図 3.1)を採用する.また,命令
要素を矢印で接続するデータフロー言語を採用し,プログラムの流れが分かるようにする.
これにより,ソフトウェアキーボードで命令文を打つ必要がなくなり,指によるタップ,
ドラッグアンドドロップ操作でプログラムを作成することができる.また,プログラムの流
れも矢印により示されることからプログラムの可読性を高めることができる.
3.2
提案システムの構築環境
本研究では,上記のプログラミング環境を構築するために Arduino と Android ADK
(Android Open Accessory Development Kit) [8] の組み合わせを利用する.Arduino は,
入手が容易でかつ半田付けを必要とせず使えて便利なため,最もよく普及しているフィジカ
ルコンピューティング用ツールキットである.Android ADK は,スマートフォンからフィ
ジカルコンピューティング用マイクロコントローラやデバイスを制御する(あるいは逆にマ
イクロコントローラからスマートフォンを制御する)機能を提供するミドルウェアである.
–9–
第 3 章 提案システム
図 3.1 タイル型ビジュアルプログラミング
Android ADK を活用したフィジカルコンピューティングの例が活発に提案されるなど(3
節を参照),スマートフォンを利用してフィジカルコンピューティングを実践する際の標準
的存在になりつつある.本研究では,Arduino を制御対象デバイスとし,Android ADK を
Arduino との通信を行う基盤として利用して,提案プログラミング環境の構築を行う.
また,本システムは Arduino に対してそれぞれのデバイスが表 3.1 のように接続される
ことを期待している.使用できるデバイスと接続端子を限定しているが,ラジコンカーの操
作や,音や文字を表現できるなど十分汎用的な範囲で限定している.デバイスを限定するこ
とで,十分な命令タイルを用意することが可能となる.例えば,モータドライバであれば
「正回転」「停止」などの命令タイル,光センサであれば「値を取得」などの命令タイルを用
意している.一部の応用,例えば以下で述べるラジコンカーについては,より抽象度の高い
タイルを用意している.
以降の説明では,Arduino をラジコンカーに接続し,ラジコンカーのモータドライバを制
御することでその動きを操作するようなプログラムの作成を例として用いる.
– 10 –
3.3 利用者の操作方法
表 3.1
接続可能なデバイスと接続先ピン
デバイス名
個数
デバイス側端子 : Arduino 側ピン
光センサ
3
アノード : A0, A1, A2
ジャイロセンサ (KXM52-1050)
2
OUT1 : A3, A5, OUT2 : A4, A6
加速度センサ (K-04912)
2
OutX : A7, A10, OutY : A8, A11, OutZ : A9, A12
モータドライバ (MC33887)
2
D2 : 2, 3, IN1:22, 24, IN2 : 23, 25
LED
3
アノード : 4, 5, 6
スピーカ (SPT08)
2
7, 8
キャラクタ LCD
1
D4 : 26, D5 : 27, D6 : 28, D7 : 29, E : 30, RS : 31
3.3
利用者の操作方法
事前準備として,Android 端末に提案システムをインストールする.また,Arduino と
PC を一度接続し,提案システムで Arduino を制御するためのプログラムを Arduino に送
信する.PC を用いるのはこの 1 回のみである.以降,ラジコンカーを制御するプログラム
を作成する段階では,PC を用いずに Android 端末と Arduino のみでプログラミングとデ
バッグを行う.
事前準備以降の利用方法は以下の通りである.
1. Android 端末と Arduino を USB 接続を行う,もしくは Android 端末上で,Android
用アプリケーションである提案システムをアプリケーション一覧画面から選択すること
により,本システムが起動する.起動すると,「スタート」という命令タイルのみが配
置された画面が表示される.
2. 命令を追加するために,Android 端末のメニューボタンを押し,表示されたメニューか
ら「追加」をタップする(図 3.2).
– 11 –
第 3 章 提案システム
図 3.2
メニュー画面
3. 「追加」をタップすると表示される命令一覧から,好きな命令を選択し組み合わせてい
くことにより,プログラムを作成する.(図 3.3)
図 3.3
命令一覧画面
4. 命令間の遷移は矢印によって表示される.命令タイルを追加しただけではどの命令にも
– 12 –
3.4 実装方針
接続されていないため,置いているだけの命令タイルは実行されない.
そのため,追加した命令タイルへ接続したい命令タイルを 2 秒ほどタップし続け,ド
ラッグアンドドロップモードにし,追加した命令タイルへドロップすることにより,接
続され命令の流れができる.(図 3.1)ドラッグアンドドロップモードに入り,ドロップ
を行った命令タイルが接続元となり,ドロップされた命令タイルが接続先となる.
5. プログラムが完成したら,メニューボタンを押してメニューを表示させ,
「実行」を選択
する.これによりプログラムが実行され,ラジコンカーがそのプログラムに従って動作
する.また,メニューから「保存」を選択することで,作成したプログラムを Android
端末中に保存することができる.
プログラム対象がラジコンカーの場合,予め用意されている「前進」「右回転」「停止」な
どの命令タイルを使ってプログラミングを行う.また,表 3.1 に示した各デバイス用のタイ
ル集合が用意されており,メニューボタンから別のデバイス用(例えば LED 用)のタイル
集合を選択することで,ラジコンカー以外の機器についてもプログラミングを行える.例え
ば Arduino に光センサを接続し,センサ入力に応じて動作を変えるようプログラムするこ
とで,ライントレーサ(走行面に描かれた線をなぞるロボット)等を作成することができる.
提案システムは,上記の「前進」等の命令タイルのほかに,命令を何秒間行うかを指定す
る機能や,条件分岐や繰り返しを記述する機能ももつ.数を数えること等に使うために,整
数型の変数を使うことができる.変数の値は変数への代入を行う命令タイルを使って設定す
る.また,センサから取得した値を格納することにも変数を用いる.
3.4
実装方針
本システムは,Android アプリケーションとして,Java を用いて実装する.
本システムには 3 種類のコマンドセットが存在する (図 3.4).1 つ目はユーザが画面上
で操作した結果をそのまま保持する命令タイル,2 つ目は命令タイルをより細かい基本的
な命令列に変換したローレベルコマンド,3 つ目は一部のローレベルコマンドの実行中に
– 13 –
第 3 章 提案システム
図 3.4 コマンドセット
Android から Arduino へ送られるハードウェアコマンドである.
命令タイルはユーザが画面上で操作できる命令が書かれたタイルのことである.「前進」
などの文字列と,矢印で接続された命令タイルの情報を保持している.
ローレベルコマンドとして,現時点の試作システムでは「NOP,END,SEND,GET,
IF,WAIT,EXPR」の 7 種類を実装している.命令タイルをローレベルコマンドへ変換す
る例を図 3.5 に示す.これを Android 端末上で動作するインタプリタが解釈し,必要に応
じて Arduino との通信を行う.例えば「前進」「後退」などの命令タイルには SEND コマ
ンドが対応しており,予め決められた動作シーケンスを実行するハードウェアコマンドを
Arduino へ送信する.カウンタを 1 だけ増やすという命令には EXPR コマンド,センサの
値の取得には GET コマンドが対応する.
ハードウェアコマンドは実際に Arduino へ送られるコマンドのことである.このコマン
ドは USB を通じて Android 端末から Arduino へ送られ,Arduino 側で解釈される.この
コマンドはバイナリ形式で,Android 端末側でローレベルコマンドを実行中に必要に応じて
送られる.一部のコマンドでは Android 端末側はコマンドを送信した後,Arduino からの
返答を一定時間待つ.
3.4.1
ローレベルコマンドの説明
それぞれのローレベルコマンドがどのような動作を行うか説明する.
• NOP
何も実行しないコマンドである.このコマンドが呼び出されると即座に次のコマンドに
– 14 –
3.4 実装方針
図 3.5
ローレベルコマンドへの変換
進む.
• END
プログラムの終わりを表すコマンドである.実行が END に達するとプログラムは停止
し,本システムは次のプログラムを受け付けられる状態になる.END コマンドは,そ
れ自身を無限に反復するものとして扱う.これにより,プログラムの停止要求がすぐに
処理されなかった場合でも意図しないコードが実行されることを防ぐ.
• SEND
設定された前進,後退などの命令を Arduino へ送信するコマンドである.実行が SEND
コマンドに達すると,Arduino に対してあらかじめ指定された処理に対応するメッセー
ジが送られる.
• GET
センサから値を取得し,指定された変数へ代入するコマンドである.実行が GET コマ
ンドに達すると,指定したセンサ (ジャイロや環境光センサなど) の値を取得指定され
た変数に代入する.
• IF
条件分岐を行うコマンドである.左辺値,比較演算子,右辺値を指定するとそれに応じ
た比較を行い,その結果が真だった場合と偽だった場合で異なるコマンドに遷移する.
左辺値および右辺値には変数名または整数値が指定出来る.比較演算子には「に等し
– 15 –
第 3 章 提案システム
い」
「に等しくない」
「大きい」
「小さい」
「より大きい」
「より小さい」の 5 種類が使用可
能である.
• WAIT
指定時間の間,実行を待機するコマンドである.実行が WAIT コマンドに達するとプ
ログラムは指定された時間停止してから次のコマンドに遷移する.時間の指定には変数
名または整数値が使用可能である.
• EXPR
算術演算を行い,結果を指定された変数へ代入するコマンドである.左辺値,算術演算
子,右辺値を指定するとそれに応じた演算を行い,指定された変数へ結果を代入する.
算術演算子には加減乗除と論理演算子が利用できる.
3.5
データの流れ
実際に本システムを使用して,10 秒間前進した後,5 秒間後退するプログラムを作成した
場合のデータの流れを図 3.6 に示す.
まず,Android 端末にアプリケーションとしてインストールした本システムを立ち上げ
る.その後,Android 端末と Arduino を USB ケーブルで接続すると,Android ADK によ
り本システムと Arduino との接続が成立される.
次に,ユーザは本システムを使い,プログラミングを行う.ユーザはメニュー (図 3.3) か
ら追加したい命令タイルをタップする.本システムにより,選択された命令タイルが画面に
表示される.ユーザは画面上でタイルを操作することによりプログラミングを行う.
プログラミングを完了し,「実行」というボタンを押すと,命令タイルがローレベルコマ
ンドへ変換される.例えば,「前進」などの命令タイルは SEND コマンドにより,ハード
ウェアコマンドに変換後に Arduino へ送られ,左右のモータを正方向へ回転させる動作とな
る.また,命令を何秒間実行するかを指定する修飾タイルは WAIT コマンドに変換される.
WAIT コマンドでは,ハードウェアコマンドが Arduino へ送られることはなく,Android
– 16 –
3.5 データの流れ
図 3.6 本システムのデータの流れ
端末上で Java の Thread.sleep 関数が実行される.これにより,後退や終了などの次の命令
を Arduino へ送る時間の調節を行い,
「何秒間実行する」という動作を実現する.
一番最後の命令タイルまで遷移し,命令が Arduino へ送られると,最後に END コマンド
が実行されプログラムの終了となる.そして,本アプリケーションで再度プログラミングが
可能なように,操作の受付を再開する.
– 17 –
第4章
評価
本章では,本システムと ArduinoIDE でプログラミングに費やす時間と,記述済みのプロ
グラムの可読性の評価を行う実験の内容とその実験結果を述べる.プログラミング時間を比
較することで,提案システムがユーザに対して手軽にフィジカルコンピューティングを行え
る開発環境を提供していることが言える.また,可読性の評価によりプログラムのメンテナ
ンスが行いやすいことが言える.
4.1
4.1.1
実験
実験内容
実験として,プログラミングを日常的に行わない 20–25 歳の被験者 6 名に提案システム
および ArduinoIDE を用いて,モータドライバの動作をプログラミングし,ラジコンカーを
10 秒前進,10 秒後退させるプログラムを作成してもらった.被験者は本学フロンティア工
学コースおよびマネジメント学部の学生である.以降,それぞれ被験者 A–F と呼ぶ.ラジ
コンカーとモータドライバと接続するなどのハードウェアの構築(図 4.1)は,あらかじめ
こちらが用意し被験者はプログラミングのみを行うものとする.
ArduinoIDE については参考書籍 1 冊 [9] を提供するとともに,インターネット上の情報
を自由に参照してよいものとした.ArduinoIDE の初期画面には,モータドライバのピンア
サインを記述した状態を初期状態(図 4.2)とし,この状態からプログラミングを開始して
もらうこととした.提案システムについては説明資料(A4 用紙 1 枚)のみ提供した.6 名
の被験者のうち A,C,E は先に ArduinoIDE,次に提案システムを使用した.B,D,F は
– 19 –
第 4 章 評価
図 4.1
実験環境
図 4.2 ArduinoIDE での開始画面
逆の順で使用した.また,プログラム作成時間に 1 時間 30 分以上かかった場合はその時点
で実験を打ち切った.
4.1.2
実験結果
図 4.3 に実験での被験者のプログラミング時間を示す.C–F が ArduinoIDE を用いた場
合のプログラミング作成時間が 1 時間 30 分になっているのは,その時点で実験を打ち切っ
– 20 –
4.1 実験
図 4.3 プログラミング時間の比較
たためである.
実験の結果,ArduinoIDE では完成するまで被験者 A では 45 分,被験者 B では 2 時間
程度かかった.主に ArduinoIDE での記述法の調査や,コンパイルは通るが意図通りの動
作をしなかったためにデバッグを行うこと等に時間を費やしていた.提案システムでは 1–2
分程度でプログラムを完成させることができた.被験者の感想として,提案システムの方が
事前知識がなくても使いやすい,表記が単語のため画面を見ただけでどのような動作が行わ
れるかがわかりやすいなどのコメントを得た.また,一方では,命令タイルを追加するため
にメニューボタンを押すことと命令の順序を決定するためにドラッグアンドドロップをする
ことが手間がかかり面倒である,というコメントを得た.
以上により,プログラミング時間やコメントから実験では,提案システムはユーザにとっ
て ArduinoIDE より容易にプログラミングが行えること,また,提案システムは事前の説明
をほとんど要さず直感的にプログラミングが可能であることが言えた.
– 21 –
第 4 章 評価
4.2
4.2.1
記述済みプログラムの可読性の評価
実験内容
ラジコンカーを前進,後退させるプログラムを ArduinoIDE と提案システムで書いたも
のを見せ,どちらが理解しやすいか,と実際にどちらでプログラムを作成してみたいかにつ
いてアンケート形式で回答してもらう.上記の実験の被験者 6 名とそれ以外の回答者 4 名の
合計 10 名にアンケートをとった.
4.2.2
アンケート結果と考察
アンケート結果を表 4.1 に示す.アンケート結果として「どちらがわかりやすか」という
設問では,実験の被験者 6 名,それ以外の回答者 2 名の合計 8 名が提案システムを選択し
た.また,
「どちらでプログラミングしてみたいか」という設問では,実験の被験者 4 名,そ
れ以外の回答者 2 名の合計 6 名が提案システムを選択した.
この結果から提案システムはプログラムの可読性では ArduinoIDE より分かりやすいと
いうことが言えた.しかし,「どちらでプログラミングをしてみたいですか」の設問ではほ
ぼ半数に意見が分かれた.ArduinoIDE を選択した回答者のコメントとして,テキスト形式
のプログラミングに挑戦してみたいと思ったため,ArduinoIDE の方がどのようにモータド
ライバを動かしているか理解でき電子工作の勉強となるため,などのコメントを得た.これ
らのコメントから,提案システムはフィジカルコンピューティングに興味を持ち,電子工作
やプログラムの勉強を行うきっかけとして利用できるのではないかと考える.
表 4.1 アンケート結果
設問
提案システム
ArduinoIDE
どちらがわかりやすいですか
8
2
どちらでプログラミングしたいですか
6
4
– 22 –
第5章
結論
5.1
結論
本研究では,スマートフォン上で動作し,画面上でタイルを組み合わせることで簡単に
フィジカルコンピューティング用のプログラミングができる環境を提案し,試作システムを
実装した.
実験およびアンケート結果により,提案システムはプログラミングを日常的に行わない利
用者にとって ArduinoIDE より容易にプログラミングが行えること,また,事前の説明をほ
とんど要さず直感的にプログラミングが可能であることが言えた.
5.2
今後の課題
本研究の今後の課題として,以下があげられる.
• プログラム表示の省面積化
• タブレット型端末での実装と比較
• 異なる年齢層に対する操作容易性の評価
5.2.1
プログラム表示の省面積化
提案システムでは命令タイルをドラッグアンドドロップすることで矢印で接続し,命令の
流れを示していた(図 3.1)
.命令タイルの総数が 5 個程度なら問題はないが,それ以上にな
ると命令タイル同士を接続するための操作回数が多くなり,プログラミングが煩雑化するこ
– 23 –
第 5 章 結論
図 5.1
命令タイルのみのインタフェース
と,また画面が縦方向に伸びていくためプログラムの可読性が低下する問題がおこる.
プログラムの表示面積を小さくする方法として命令タイルのみを表示し,上から逐次実行
形式とするインタフェース(図 5.1)が考えられる.このインタフェースでは,繰り返し処
理や条件文の場合は開始時と終了時に命令タイルと設定する必要がある.このように命令タ
イルの種類が増えるため,繰り返し処理や条件文を多用する場合は命令タイルの追加操作が
増え,操作の煩雑さは増加すると考える.一方,繰り返し処理や条件文を多用しないプログ
ラムの場合は,矢印のスペースが消え,画面上で確認できる命令タイル数が増えるため可読
性が向上し,こちらのインタフェースが優れていると考える.今後,被験者を使いどちらの
インタフェースが優れているか評価する必要がある.
5.2.2
タブレット型端末での実装と比較
研究ではスマートフォンでのプログラミングに着目した. 一方で,スマートフォンより画
面が広く,同じような携帯性を持つタブレット型端末も存在する.提案システムではスマー
トフォンのインタフェースに特化したインタフェースを構築したが,タブレット型端末では
より広い画面を用いることができるために,配置できるボタンの一覧を画面上に常に表示す
– 24 –
5.2 今後の課題
ることが可能であり,提案システムで問題となっていた命令タイルを追加する際にメニュー
ボタンをタップして,そのメニュー一覧から選択するという操作の煩雑さを解消できるので
はないかと考える.
5.2.3
異なる年齢層に対する操作容易性の評価
本実験では,被験者として年齢 21-25 歳の男女 6 名が参加した.だが,フィジカルコン
ピューティングの対象はこの年齢層に限らず,10 代の年少者や 60 代の高齢者の方も含まれ
ている.
本研究の実験では 20 代の被験者のみで実施し,年少者や高齢者が 20 代の人と同じように
操作ができるかは検証していない.年齢層に関わらず容易にプログラミングできることを示
すために,10 代の年少者や 60 代の高齢者など幅広い年齢層の被験者による評価実験を行う
必要がある.
– 25 –
謝辞
本研究を進めるにあたり,御指導,御鞭撻を賜りました主指導教員である情報システム工
学コース高田 喜朗 准教授に心より深く感謝致します. また,副査として貴重な御助言を頂
きました情報システム工学コースの岩田 誠 教授ならびに酒居 敬一 講師に心より感謝致し
ます.様々な御助言,御指導を賜った情報システム工学コース教員,秘書の皆様方に心より
感謝致します.
知能機械システム工学コース修士 2 年の松林 尚理氏にはプログラム作成時に,また,フ
ロンティア工学コース修士 2 年の幸地 勇明氏にはハードウェア作成時に多大な御指導, ご助
言をいただき, 心より感謝いたします. そして,フロンティア工学コース修士 2 年の冨士田
まき氏には被験者を集める際に御協力していただき,厚く感謝いたします.
本研究の被験者実験に参加してくださった方々には貴重な時間を割いていただき, 厚く感
謝いたします.
最後に, 今日までの学生生活を身近で支えてくださった同期の学友の皆様と高知工科大学
の教職員の皆様, そして, 本学で勉強する機会を与えてくれただけでなく, 精神面, 経済面で
常に私を支え続けてくれた両親に深く感謝いたします.
– 27 –
参考文献
[1] 小林茂, “フィジカルコンピューティング概論,” 情報処理, vol.52, no.8, pp.914–917,
Jul. 2011.
[2] D. O’Sullivan and T. Igoe, Physical Computing: Sensing and Controlling the Physical World with Computers, Thomson Course Technology, 2004.
[3] Arduino Software, “Arduino,” http://www.arduino.cc/, 参照 Dec. 27, 2011.
[4] ARM Holdings, “Rapid Prototyping for Microcontrollers,” http://mbed.org/, 参照
Feb. 7, 2012.
[5] “Scratch,” http://Scratch.mit.edu/, 参照 Dec. 27, 2011.
[6] 西本裕貴, 志築文太郎, 田中二郎, “携帯端末上でコンテキスト依存プログラムを記述す
るためのビジュアルプログラミング環境,” 第 16 回インタラクティブシステムとソフト
ウェアに関するワークショップ (WISS) 論文集, pp.183–184, 2008.
[7] M. M. Burnett and M. J. Baker, “A classi cation system for visual programming
languages,” Journal of Visual Languages and Computing, Vol.5, No.3, pp.287–300,
1994.
[8] “Android Open Accessory Development Kit,” http://developer.android.com/guide/topics/usb/adk.html, 参照 Dec. 27, 2011.
[9] Massimo Banzim,船田 巧 訳,“Arduino をはじめよう,” オライリージャパン,2009.
– 29 –
付録 A
提案システムの説明書
本研究の実験の際に提案システムの操作方法を記述した用紙を図 A.1 に示す.
図 A.1
提案システムの説明書
– 31 –
付録 B
可読性評価のアンケート用紙
可動性の評価を行う際に使用したアンケート用紙を図 B.1 に示す.
図 B.1 アンケート記入用紙
– 33 –
Fly UP