特集（大学における教育）♦♦♦♦♦♦特集♦♦♦♦♦♦

フィジカルコンピューティング・学生演習への導入

倉田 昌典1

はじめに

1

フィジカルコンピューティングと呼ばれる新しいムーブメントがあります．ひとことで言えば，電子工作にプログラミングを加え，面白いものを作り出そうということです．電子工作物をマイコン制御するわけです．
九州工業大学情報工学部では，このフィジカルコンピューティングに注目し，学生演習として取り入れました．ソフトウェアやハードウェアの基礎教育を行うカリキュラムは，以前から充実していたものの，「データ構造とアルゴリズム」，「トランジスタの特性」といった具合です．それがどう役立って携帯電話やデジタルカメラを動かしているのか，イメージするにはギャップが大きく，学んだことの意義を学生が実感しにくい状況でした．機器制御のプログラミングと電子回路の実装を組み合わせ，実際に動作するシステムづくりを体験するフィジカルコンピューティング演習が，そんな状況の改善に役立つと期待しています．

フィジカルコンピューティング2

従来のコンピュータアプリケーションは，たいていの場合，ディスプレイに文字や絵を表示して，マウスやキーボードから操作するということが前提であり制約でした．一方，フィジカルコンピューティ
ングでは，さまざまなセンサーを入力に用いたり，出力にランプやモーターを使ったりすることで，従来の枠を超える新しいアプリケーションを作り出します．たとえば，任天堂 Wii リモコンを手に持って振り，その手元で音が鳴り振動することで，以前にはなかったテレビゲームの遊び方が生まれました．
コンピュータの入出力に，光，音，加速，重力，磁気，圧力，温度，動きといった要素を積極的に取り入れ，新しいやり方で人間の身体と相互作用するアプリケーションをつくること，それがフィジカルコンピューティングです．
「フィジカル」という語には，「身体」の意味がこめられています．

2.1

フィジカルコンピューティング入門

フィジカルコンピューティングを行うには，センサー等の電子部品を，プログラムから制御する必要があります．電子部品をどうやってつなぐのか，プログラムをどう書いて動かすのか，LED を点滅させる例で説明します．
図 1 が，LED を点滅させるシステムを作っているところです．Arduino(アルドゥイーノ) という名前のマイコンボードに，電線でブレッドボードがつながり，ブレッドボード上に LED を接続するための電子回路が作ってあります．

1

九州工業大学 大学院情報工学研究院 技術補佐員 kurata@scorpio33.cse.kyutech.ac.jp

3

九州工業大学 情報科学センター
広報 第 22 号 2010.3

特集（大学における教育）
ブレッドボードは，その穴に，電子部品の端子であるワイヤを抜き差しすることで，電子回路を組むことができるようになっています．ハンダづけしなくてよいので，やり直しも簡単です．プログラムを試行錯誤しながら作るのに似た手軽さで，電子回路を実装できます．

Arduinoブレッドボード

図 1: LED を点滅させるシステムを作る

図 2: 開発環境アプリの画面

LED を点滅させるプログラムは， Arduino マイコンボードで動きます． Arduino は，USB ケーブルでパソコンともつながっていて，パソコン上の Arduino 用開発環境アプリを使い，点滅プログラムを作成します．図 2 が，パソコン上で動いている開発環境アプリの画面です．LED 点滅プログラムが見えています．このプログラムをパソコンのキーボードから入力し，ボタンをクリックすると，入力したプログラムがマイコン用機械語コードに変換され， Arduino へ転送されます．転送された機械語コードは，
九州工業大学 情報科学センター
広報 第 22 号 2010.3

4特集（大学における教育）
すぐに動作を開始し，Arduino 上に用意された入出力端子の電気信号を制御します．その信号が，端子を経由してつながっているブレッドボード上の電子回路を動かし，LED が点滅します．Arduino へ転送されるプログラムは，不揮発メモリー上に書き込まれるので，一度転送してしまえば，パソコンとつながっていなくても動作します．ただし電源は必要です．
それでは図 2 のプログラム内容を見てみましょう．C 言語に似ています．C 言語が main() 関数をきっかけに動くのに対し，Arduino のプログラムは，setup() と loop() の 2 つの関数をきっかけに動作します．setup() 関数が，プログラム実行開始時に 1 度だけ呼び出され，その後，loop() 関数が，何度も繰り返して呼び出されるしくみになっています．まず，setup() 関数では，pinMode(ledPin, OUTPUT);を実行しています．pinMode() 関数は，Arduino 上の入出力端子の利用方法を設定する組み込み関数で，ここでは 13 番端子を出力端子にしています．電子回路を組んだとき，LED を 13 番端子に接続したわけです．次に，loop() 関数にて，digitalWrite(ledPin, HIGH);delay(1000);
digitalWrite(ledPin, LOW);
delay(1000);を実行します．digitalWrite() 関数は，出力用と設定した端子に，HIGH なら 5V，LOW なら 0V を出力させる組み込み関数です．端子が 5V なら LED が点灯し，0V で消灯するよう電子回路を作れば，digitalWrite() 関数で LED の点灯を制御できます．delay() 関数は時間待ちを行う組み込み関数で，1000 というパラメータを与えると 1 秒間の待ちとなります．したがって，loop() 関数が呼び出されると，LED 点灯を 1 秒間継続した後 LED を消灯，消灯後 1 秒待つという動作になります． loop() 関数
は何度も繰り返し呼び出されるので，結局，LED が 1 秒ごとに点灯と消灯を繰り返します．
LED 点滅は出力の例ですが，同じようなやり方で，入力もあつかえます．たとえば，センサー出力を電子回路で 0〜5V の信号に変換し，その信号を Arduino の入力端子につなぎます．プログラムでanalogRead() 関数を使えば，その信号を 0〜1023 というデータとして取得できます．
このようにセンサーや LED などの入出力をプログラム制御することで，フィジカルコンピューティング，すなわち，人間と相互作用するアプリケーションづくりが，可能となります．

2.2

フィジカルコンピューティングの手軽さ

フィジカルコンピューティングでは，フィジカルコンピューティング用に設計されたマイコンボードを使用することが一般的です．そのようなマイコンボードの代表例のひとつが，先に紹介した Arduinoです．他にも Gainer などがあり，フィジカルコンピューティングの標準的なプラットフォームとなっています．これらのマイコンボードは数千円程度で，国内でも容易に入手できます．
マイコンボードには，センサー等の部品をつなぐための複数の入出力端子があらかじめ用意されていますから，フィジカルコンピューティングでは，その入出力端子につながる電子回路を作ることと，つないだ電子回路を制御するためのプログラムを作成するだけで良いのです．そのプログラムを作成するために用いる開発環境アプリも，インターネットから無償でダウンロードできます．開発環境アプリをパソコンへインストールし，USB ケーブルでマイコンボードを接続すれば，すぐに取りかかれるのです．

5

九州工業大学 情報科学センター
広報 第 22 号 2010.3

特集（大学における教育）
コンピュータにセンサー等の入出力部品をつないで制御させるシステムは，以前から「組み込みシステム」という名前で存在していました．しかし，Arduino のような標準的なマイコンボードがなかったために，Arduino やその開発環境そのものに相当する部分も同時に作ってやる必要がありました．LEDを点滅させるだけの単純なシステムを作るにも，ゼロから始めるなら，複数の専門家による数週間以上の時間と労力を要したのです．Arduino のような標準的なプラットフォームの登場が，フィジカルコンピューティングの手軽さを実現し，ムーブメントをもたらしました．

2.3

フィジカルコンピューティングというムーブメント

フィジカルコンピューティングについて簡単に説明してきました．しかし，フィジカルコンピューティ
ングというムーブメントは，これまでに触れていない事項も含め，いろいろな側面を含みます．以下，フィジカルコンピューティングの特徴を，いろいろな切り口から列挙することで，まとめてみます．

• コンピュータの入出力にセンサーやモーターなどを用い，人間や環境と相互作用する，すなわちインタラクティブなシステムを作る．
• 安価な標準的マイコンボードと，それに対応した無料の統合開発環境を利用できるので，多くの専門知識や経済的負担を必要とすることなく，すぐに始められる．入出力の電子回路と，それを制御するプログラムを作成すればよい．統合開発環境は，Windows, MacOS, Linux 用など用意されている．
• 実際に動作するシステムを簡単に構築できるため，アイディアをすぐ形にして確かめられる．形にすることで新たな発想や改良が生まれ，それをまた形にする．プロトタイピングによる素早い繰り返しが，創造活動を加速する．
• 新たなマンマシンインタフェース開発，インタラクションデザインのための道具となる．マイコ
ン制御や電子回路初学者のためのとっかかりとなる．インタラクティブな作品の創造に集中したいデザイナーやアーティストのための道具となる．
• 標準マイコンボードやその統合開発環境からなるプラットフォームを，多くの者が共通して利用する．それにより，入出力の電子回路の組み方や，プログラミングテクニックなどのノウハウを，そのまま利用できる形で，利用者間において共有できる．本などの出版物，インターネット，セミナーなどが，共有のための媒体となる．
• それら媒体では，ノウハウだけでなく，さまざまなフィジカルコンピューティング作品群が紹介される．他人の作品に触発され着想した新たなアイディアを発表すると，それがまた別の他人へ影響してゆく．媒体を介して，創造の輪が広がる．
• 標準マイコンボードの設計図や，マイコンチップへ搭載する初期ファームウェア (統合開発環境との連携に必須) は，オープンソースソフトウェアに準ずるライセンスで公開されており，標準マイコンボード互換のハードウェアを自作できる．これにより，作り上げたシステムの小型化や量産が可能である．互換だから統合開発環境をそのまま使える．
• パソコンから，マイコンボードに接続した入出力の電子回路を制御することも可能である．パソ
コンの持つグラフィック表示，サウンド，インターネットなどの機能を，システムに取り入れることができる．

九州工業大学 情報科学センター
広報 第 22 号 2010.3

6

特集（大学における教育）

図 3: さまざまな入門書，ネット上の情報や YouTube 動画

2.4

フィジカルコンピューティングの応用例ここまでの説明で，フィジカルコンピューティングとは，簡単な電子工作とマイコンプログラミングのことなのだなといった印象を持たれたのではないでしょうか？ しかし，フィジカルコンピューティ
ングが，コンピュータの入出力に，光，音，加速，重力，磁気，圧力，温度，動きといった要素を積極的に取り入れ，新しいやり方で人間の身体と相互作用するアプリケーションをつくることだったことを思い出して下さい．フィジカルコンピューティングが，斬新なアプリケーションにつながることをご理解いただくため， Apple の iPhone アプリを２つ紹介してみようと思います．
iPhone はそのコンパクトな筐体に，フルカラーディスプレイ，タッチパネル，カメラ，スピーカー，マイク，加速度センサー，磁気センサー，GPS を備えています．これらセンサー類を積極的に利用したアプリケーションは，フィジカルコンピューティングの応用例と言えるでしょう．

星座盤

iPhone を夜空にかざすと，iPhone の向こうに実際に見えるであろう星々が，iPhone のディスプレイに表示されます．有名な星の名前や星座も図示されるので，それをガイドに，実際の夜空を観察することができます．あなたが iPhone を動かし，向きや角度を変えると，ディスプレイの表示内容が，あなたの動きに追従します．
これを可能としているのがセンサーです．GPS で，地球上のあなたの位置と，現在の日時がわかります．地磁気や重力をセンサーが感知することで， iPhone が夜空のどの方向に向けられているか判別します．このように得た情報から，ディスプレイに表示すべき内容がわかります．

7

九州工業大学 情報科学センター
広報 第 22 号 2010.3

特集（大学における教育）[[[

図 4: 星座盤と目覚まし時計

目覚まし時計iPhone を枕元において寝ると，朝，設定したアラームが鳴ります．ユニークなのは，あなたが浅い眠りのときを狙って鳴らすので，目覚めが快適である点です．人間には深い眠りと浅い眠りがあり，深いときに起こされると目覚めが悪く，浅いときなら気持ちよく起きられるそうです．枕元におかれた iPhoneは，眠りの深さをモニターし，設定時刻 30 分前以降に浅い眠りを検出すると，アラームを鳴らします．
浅い眠りを検出できない場合でも，設定時刻になったら鳴りだしますから，遅刻はしないですむようになっています．
iPhone は加速度センサーを使い，寝具をとおして伝わる寝返りなどの体の動きをモニターしています．深い眠りでは動きがなく，浅い眠りのときに動きが多くなるという人間の性質を利用します．

3

学生演習への導入

情報工学部では， 2009 年度後期から，フィジカルコンピューティング演習を導入しました．まずは，機械情報工学科の学部 1 年生を対象に，「機械情報プロジェクト I」という科目で実施しています．1 年前期の科目「プログラミング」にて C 言語を学んでいるので，あとは電子回路の組み方がわかれば，フィジカルコンピューティングに取り組めます．
演習にあたり，図 5 の資材を学生ひとりひとりに配布します．この資材は学生個人の所有物となるので，興味を持った学生は，本演習終了後にもフィジカルコンピューティングを継続することができます．

3.1

演習カリキュラム

1 年生向けフィジカルコンピューティング演習は，連続した 2 コマの合計 3 時間を１回とする，全７回の構成となっています．
第 1–3 回 講義
統合開発環境を使ってのプログラムの作り方，電子回路の組み方，動作のさせ方を，講義形式で教える．講義の中で学生は，自分の Arduino を実際に動かす．講義の最後，課題が学生に与えられる．

九州工業大学 情報科学センター
広報 第 22 号 2010.3

8

特集（大学における教育）

図 5: 学生に配布される資材例

第 4–5 回 課題
個々の学生が与えられた課題に取り組む．難易度が異なる複数の課題 (後述) の中から，各学生は 2〜3 個程度を選択．先生や TA らが課題に取り組む学生を見守り指導し，学生からの質問に対応する．
第 6 回 課題発表
学生ひとりずつ，自分が取り組んだ課題について，デモンストレーションを含んだプレゼンテーションを行う．先生による試問がある．
第 7 回 レポート作成
学生各自，自分が取り組んだ課題についてレポートを作成，提出する．

3.2

演習課題

学生が取り組む課題は，次のようなシステムを作成せよというものです．フィジカルコンピューティ
ング最初のステップとなる演習なので，フィジカルコンピューティングのための，入出力部品の使い方，プログラムからの利用方法を学ぶという性格になっています．

• 消灯状態の LED が次第に明るくなり，2 秒かけて最大輝度に達する．1 秒間は最大輝度のまま点灯する．その後，次第に暗くなり，4 秒かけて消灯状態になる．
• 7 セグメント LED を 2 つ使ってカウンタを作成する．このカウンタは，00,01,02, と 1 秒ごとにカウントアップしていき，59 までいくと次に 00 に戻る．つまり，デジタル時計の「秒」の部分となる．
• 8 × 8 の LED マトリックスを使って自分の名字のイニシャル (たとえば，倉田なら K) を出力する．さらに可能であれば，名字と名前を 1 秒ごとに切り替えて出力する．
• 光センサーを使い，暗くなると LED が点灯し，明るくなると LED が消灯する．
• 圧電素子をスピーカーとして使い，「ド」「レ」「ミ」の 3 音を 1 秒ずつ出力する．
• 圧電素子をスピーカーとして使い，電子オルゴールを作る．
9

九州工業大学 情報科学センター
広報 第 22 号 2010.3

特集（大学における教育）
これらの課題例に加えて，学生が自分の理解や興味をもとに発案した，より複雑で高度なシステムに取り組むことは，おおいに歓迎しています．

3.3

学生の作品課題に取り組んだ学生の発表では，学生の考え出した次のようなユニークなシステムが見られました．
学生がフィジカルコンピューティングに興味を持ち楽しむことで生まれた「作品」群です．

• 木の形に色とりどりの LED が並べられ，夜に輝くクリスマスツリー• LED マトリックスに文字列が流れて表示される電光掲示板• 明るさに応じて音程が変化する，テルミン的な楽器• 電子オルゴールに選曲機能も加えたジュークボックス• ドップラー効果を演算して再現した，そばを通過する救急車のサイレン

図 6: 課題に取り組む

3.4

図 7: 課題を発表

所感と今後

この演習は，実際に動くシステムを作りあげるという点，与えられた課題を単に解決するだけではな
く自分で創意工夫する余地がある点で，学生もやりがいを感じることができたようです．先に紹介したような高度なシステムを作った学生も出てきました．しかし一方，それほどむずかしくない課題の達成にてこずる学生もいました．理解度，達成度の差は大きいと感じます．前者の学生に，より高度な課題を与えて素質を伸ばし，後者の学生をていねいにフォローアップするしくみを用意しようと思います．
フィジカルコンピューティングに関する情報はネット上にも多く，そのような情報を参考にして，つまりマネをして，演習課題に取り組んだケースは少なくなかったようです．あるいは，試行錯誤が容易な点に依存し，いろいろ試しているうちに動くようになったというケースも多かったでしょう．いずれのケースも，作ったシステムは動作しているものの，学生本人は中身を十分に理解できていません．マ
ネや試行錯誤は悪くないのですが，すべてを把握し意図どおりに動かすことが基本でなければなりません．これをどう学生に教えればよいのか，今後の課題です．
紹介した学生演習は，機械工学科 1 年生を対象としたものでした．近いうちに，情報工学部他学科にも導入し，学年が進むにつれ，より高度なフィジカルコンピューティングに挑戦してゆくカリキュラムを組んでゆく予定です．
九州工業大学 情報科学センター
広報 第 22 号 2010.3

10

特集（大学における教育）

4

おわりに

フィジカルコンピューティングでは，人間や環境の変化に対し，光る，鳴る，動くといった反応を返してくれるシステムを作ります．このようなインタラクションは，人間の興味を強く引きつけるようです．教育においては，学生のモチベーションを刺激し，演習の効果を高めることにつながります．広報
活動においては，九州工業大学へ興味を持っていただくための有力な宣伝材料になると期待できます．
さらには，九州工業大学入学を志す者にとって魅力的に映る教育コンテンツの柱のひとつとなる可能性があります．このような将来性を持つフィジカルコンピューティングへの取り組みを，今後も発展させたいと考えています．

謝辞
本原稿を書くにあたり，フィジカルコンピューティング学生演習への参観許可をいただくなど，フィジカルコンピューティング WG および機械情報工学科の先生方にお世話になりました．感謝いたします．

11

九州工業大学 情報科学センター
広報 第 22 号 2010.3