自分の思いのままにプログラムを動かし,その結果を「光る」「動く」などの形で実際に体験する――そんなことができると,とっても楽しいと思いませんか?この特集では,読者の皆さんを電子工作の世界にご案内します。

 みなさんはいつもどのようなプログラミング言語を使っていますか? JavaやC#のようなオブジェクト指向言語,RubyやPHP,Perl,Pythonなどの軽量言語(動的型付け言語),あるいはCやVisual Basicだったりするはずです。これらの言語をこれから学ぶという方もいるでしょう。

 このようにプログラミング言語は様々ですが,これらの言語で作ったプログラムを汎用的なコンピュータで動作させるというのは,ほぼ共通しています。ここでいう汎用的なコンピュータとは,パソコンやサーバーなどのことです。

 では,すべてのプログラムは汎用的なコンピュータで動いているのでしょうか。違いますね。ちょっと身の回りを見渡すだけでも,数多くのコンピュータが存在することがわかります。デジタル・カメラ,携帯電話,自動車,携帯音楽プレーヤ,DVDレコーダー,さらにエアコンや電子ジャー炊飯器なども,多くの場合はプロセサを内蔵したコンピュータです。こうした特定用途の機器に組み込まれたコンピュータも当然,プログラムで動作します。このようなプログラムを作成することを,一般に組み込みプログラミングと呼びます。

 「何だ。自分とは関係ないな」あるいは「いきなり,ややこしい話になりそうだな」と思われるかもしれません。確かに組み込みプログラミングは,皆さんがふだん手がけているプログラミングとは,流儀がすいぶん違います。しかも本格的にやろうとすると,電気回路や電子部品の知識が必要で,ハンダごてを使わなければなりません。それは大変ですね。

 一方で,この世界にはいつものプログラミングでは味わえない楽しさや面白さがあるのも確かです。そこで今回は,できるだけ手間のかからないやり方を選びつつ,皆さんを新たなプログラミングの世界にご紹介します。それが「電子工作プログラミング」です。

 このPart1では,電子工作プログラミングの基本的な手順を説明するとともに,電子工作の特徴を生かした作品例をご紹介します。Part2以降では,無償の開発環境を利用して,実際に電子工作プログラミングを体感していただきたいと思います。

すぐ動き,全体が見通せる

 電子工作プログラミングとは,安価な電子部品を組み合わせて,それぞれの部品を制御するプログラムを作ることをいいます。例えば,スイッチやセンサーなどの部品からの信号に応じて,LED(Light Emitting Diode:発光ダイオード)やブザー,モーターを動作させるプログラムを作る,といった具合です。

 一般のプログラミングと比べたときの,電子工作プログラミングならではの魅力って,いったい何でしょうか。大きく3点挙げられます(図1)。

図1●パソコンで動作するプログラムと比べたときの,電子工作のメリット
図1●パソコンで動作するプログラムと比べたときの,電子工作のメリット
[画像のクリックで拡大表示]

 一つ目は,機器に電源を入れるとすぐにプログラムが動作し,しかも低消費電力である点です。これは,身近に感じるちょっとした不便なことを解決する道具を作るときに大きなメリットとなります。後で紹介する卓上時計は,この特徴を生かした作品の一例です。卓上時計の作者である濱原和明さんは,電子工作の初心者に対するアドバイスとして,「身の回りで役に立つもの,日常的なものを作ることを目指してみてはどうか。自分の生活にきっと役立たせることができるはず」と話します。

 二つ目は,パソコン上で動作するプログラムでは制御が難しい部品を簡単に使える点です。後で紹介する作品例では,LEDやフォト・トランジスタ(光の強さに応じて流す電流を変化させるトランジスタ。光センサーに使う),モーターなどといった部品を利用しています。パソコンのプログラムでこれらの部品を操作するのは難しいのですが,電子工作なら比較的容易にできます。

 三つ目は,全体像を把握しやすい点です。電子工作でカギとなる部品は「マイコン*1」です。これは,マイクロプロセサに主記憶やフラッシュROM,各種 I/O制御回路などを集積し,一つのチップとしたものです。マイコンは,パソコンが搭載しているプロセサに比べると小規模で機能が少ないので,すぐに使い方を覚えられます。

 このマイコンの使い方を覚えると,コンピュータ・ハードウエアの動作原理まで学ぶことができます。後で紹介する「カラーフロッグ」の作者の小寺匠さんは,「電子工作ならすべてが見通せる。電気の流れさえも追うことができる」と語ります。

 電子工作プログラミングのイメージが,少しずつわいてきたましたか? 続いて,プログラムをどのように作るかに話を進めましょう。