マイコンを掘立小屋にたとえてみる話

最近電車の中で、「スマートフォンって中身はパソコンなんだよ」「ふーん」「だってpdfも開けるし」みたいな会話を聞きました。間違いではないんですが、パソコンとかマイコンとかコンピューターって言葉、割とあいまいに使っている気がします。今回、ちょっと良いたとえ話を思いついたので書いてみました。(たとえ話は最後にあります)

ここでは、「マイコン: 8/16bit の OS が無いシステム、パソコン: 32/64bit でOSがあるシステム」を想定しています。何かお気づきの方は twitter@kei2s までお願いします。

マイコンとパソコン

コンピューターは、「プログラム」と呼ばれる命令の列を順番に実行する機械です。 元々は数値の計算をする機械として発明されました。 天気予報や銀行の計算など、人間が出来ないような大規模な計算を一瞬でこなせます。 計算結果は、印刷したり画面に表示したりします。

元々のコンピューターは部屋一つくらいある巨大なものでしたが、 時代が進むとどんどん小型に作れるようになってきました。 そうすると、炊飯器やテレビなど、色々な身近な機械に組み込めるようになりました。 コンピューターは電子回路でできていので、計算結果を画面に出す代わりに、 計算結果に応じてヒーターの温度を変えたり、スピーカーのボリュームを変えたりできます。 それまではヒーターは on/off しか制御できなかったのが、温度に応じて きめ細かい制御ができるようになりました。 こういう家電に組み込まれたコンピューターは「マイコン」と呼ばれています。 マイコンは家電の一部になっているので、意識せずに使っている人が多いと思います。

一方、コンピューターは計算の機能を色々広げて、文章を作ったり、動画を再生したり、インターネットで通信したりできるようになりました。こうして進化したコンピューターは、今度はパソコンとして家庭に入ってきました。パソコンはマイコンと違って単独の機械で、立派な画面とキーボードが付いています。

こんな感じで説明すると、何となく「マイコンは簡易コンピューターみたいなやつで、パソコンはもっと色々できるやつ」みたいなイメージはつかめると思います。次からは、具体的にどう違うのか説明してみます。

コンピューターって何?

コンピューターって言葉、知らない人はいないけど、日常生活だとあまり使いません。「最近の車は全部コンピューターで動いてる」とか「将棋でコンピューターが人間と勝負」とかいいます。一方、パソコン(パーソナルコンピューター)って言葉はよく使いますね。コンピューターにも色々ありますが、「足し算や引き算みたいな計算をして、他の機械を動かしたりする頭脳みたいな機械」って部分は共通しています。

中身を見てみると、コンピューターもいくつかの部品に分かれています。計算するところ (CPU)、計算中のデータを置いておくところ (メモリ、RAM)、計算に必要なデータやプログラムを読み込んだり書き込んだりするところ (ROM、ハードディスク、フラッシュメモリ) です。あと、ユーザーの入力を受け付けたり、画面に絵を出したり、他の機械を制御したりするところ (IO) がついています。

パソコンの場合は、これらの部品は別々のチップになって、「これが CPU」とか、「これがメモリ」とか手に持てるようになっています。これに対し、炊飯器みたいな家電に組み込まれているマイコンでは、全部一つの黒い部品に入っています。保存できるデータの量や、計算の速度はいろいろ違いがありますが、基本の仕組みは同じです。

マイコンって何?

さていよいよ本題に入っていきます。マイコンって何でしょうか? マイコンの見かけは、色々な機械に入っている黒い部品です。

パソコンに比べてとても小さいです。あと、キーボードもディスプレイも付いていません。その代わり、マイコンは外部の電気回路とつながっていて、ユーザーが機械のボタン(スイッチとか)を押した入力を取得したり、結果でヒーターをon/offしたりできます。

ちょっと炊飯器の例を出してみます。今の炊飯器は、大抵たくさんのボタンが付いていて、ごはんが炊けるとピーピー音が鳴ります。ヒーターも単に加熱しっぱなしではなくて、量に応じていろいろ調整してくれるので、うまく炊けます。このボタンの裏あたりを見てみると、大抵マイコンが陣取っています。

この炊飯器マイコンにはキーボードもマウスも付いていないけど、その代わりに、マイコンの各ピンにボタンとかヒーターとか温度計とかスピーカーとかがくっついています。

マイコンの中ではプログラムが動いていて、ユーザーがボタンを押したとか、温度が変わったとか、何分経ったとかいうイベントを検知して、ヒーターの温度を変えたり、ピーピー音を鳴らしたりします。

さて、ここでパソコンとマイコンの大きな違いがあります。パソコンだと色々なプログラムが入っていて、ユーザーがマウスで選べます。(ブラウザとかお絵かきソフトとか...) それに対し、伝統的な(OS が無い)マイコンでは、プログラムは一つしか入っていません。たとえてみれば、「炊飯器.exe」というファイルが一つだけあって、電源を入れたら必ずこのプログラムが動いて、電源を切るまで動き続ける感じです。

(伝統的)マイコンの限界

マイコンは家電やちょっとした機器の制御にとても便利で、1970年代くらいから生活のさまざまなところに入ってきました。ちょっと例を挙げてみます。

マイコンのおかげで、たとえば炊飯器やエアコンだと、それまでの on/off だけに比べてきめ細かな制御ができるようになりました。ところが、2000年代になって、だんだんとマイコンだけでは限界を感じる場面が出てきました。たとえば...

これらの機能は、おもにパソコンとデータをやり取りしたり、パソコンみたいな使い勝手を実現するためのものです。 パソコンではこれらの機能はいくつものモジュールやプログラムの組み合わせで実現されています。 しかし、マイコンのプログラムは一つだけなので、こういった機能を無理やり詰め込むのはなかなか大変です。 しかもパソコンの進化は早いので、頑張って機能を実現できたと思ったら、また新しい機能を追加するはめになってしまったりします。

組み込み Linux って何?

電源を入れたら確実に動くマイコンは魅力だけど、機能をどんどん足すのがしんどくなってきた… そんな状況を解決するために、最近では組み込み Linux というシステムが使われるようになってきました。これは、パソコンと同じようなシステムを退化させて、超小型化してマイコンみたいにして使うものです。見かけはマイコンと同じように見えますが、キーボードと画面をつなげばちゃんとパソコンみたいな画面が映ります。

たとえば炊飯器を進化させて、「外出先から炊飯予約ができるインターネット炊飯器」みたいなものを作ることになったとします。この場合、これまでのマイコンボードを組み込み Linux ボードに置き換えると、インターネット関連の機能は簡単に実装することができます。さらに、作ったレシピをログしてスマートフォンに転送... とか、いろいろアイディアはふくらみます。(ということにしておきます)

実装は簡単になったけど、実は炊飯器に組み込まれてしまったパソコンもどき君はあまり満足ではないかもしれません。このボードは、元々はパソコンのポテンシャルがあるのです。キーボードやマウスもつながるし、ゲームみたいなかっこいいグラフィックも出せるし、動画も音楽も再生できます。だけど、誰も炊飯器に動画再生機能は求めていないので、大人しく米を炊いて生きていくことになります。

とはいえ、必ずしも悪いことばかりではありません。パソコンやスマートフォンは 3 年もすれば旧型ですが、炊飯器は10年くらいは平気で働けます。彼(女)なりに生きがいを見出していることでしょう。

組み込み Linux で不便なこと

さて、伝統的マイコンが組み込み Linux になってめでたし... かと思いきや、組み込み Linux にも色々と不便なところがあります。ちょっと挙げてみます。

まず、規模の違いがすさまじいです。マイコンが KB のオーダーで住むところ、 Linux の方は基本 MB (1000倍) です。これは、マイコンでは 1 つしかプログラムが動いていないところ、組み込み Linux では多数の色々な権限の違うプログラムが動いていることによります。(Windows のパソコンも同じです)

さらに、プログラムを実行するとき、マイコンではほとんど自分のプログラムで資源を占有できたところ、組み込み Linux では邪魔されまくります。さらに、組み込み Linux では、ハードウェアの制御は OS (Linux) にお願いしないといけません。さっきの炊飯器プログラムでいうと、ヒーターの制御やボタンイベントの取得は、OS 部分に専用のドライバを書かないといけません。

マイコンは掘立小屋、組み込みLinux はかつての高級マンション

(ようやく書きたかったたとえ話にたどり着きました。)
ここまでの中身をまとめてみると、

この様子を見てみると、マイコンは自分で建てた掘っ立て小屋、Linux はコンシェルジュ付き高級マンションに例えると分かりやすいかなって思いました。マイコンは自分で建てるからやりたい放題です。壁に穴開けてもいいし、増築してもいいし... でも床暖房とか入れるの大変そうですね。一方、Linux はとても快適で、安定性も抜群の高級マンションです。でも、玄関は共用なので勝手に色塗ったら怒られてしまいます。

じゃあ組み込み Linux は... というと、Linux マンションの管理人を巻き込んで、気に入らない隣人を立ち退かせたり、違法増築を繰り返した謎建築物、みたいになるんでしょうか。実際組み込み Linux では、色々と都合に合わせて改造を繰り返した結果、元の Linux とはずいぶん離れたものになってしまっている場合も多いようです...

掘立小屋のマイコン暮らしがどうしても忘れられない人は、マンションの中に土だの丸太だのを持ち込んで、中に掘立小屋を作っちゃったりするようです。これを仮想マシン(VM)とかエミュレーターって言います。(悪乗りしました)