なぜ Raspberry Pi?

QR22

QR22

なぜ、今 Raspberry Pi なのか、という質問をいろいろな方から受けますので、明日の木いちごの会を前に、ツイートしてみたいと思います。

自分的には、現時点では以下の3つの視点から「今が旬なのだ」と言えると思っています。

視点1:価格、視点2:タイミング(時期)、視点3:新しいパラダイム

視点1:価格

CPUに加え、USB, 有線LAN, HDMI, GPIO などのI/Oを搭載して35ドルという価格は圧倒的。arduino, mbed, GR-SAKURA などでこの構成を組んだら35ドルには収まりません。

この価格なら、気軽に買えます。知人や学生さんにも気軽に勧められます。安いだけでなく、ものすごくお買い得感があり、それがこれをどんなふうに料理しようという創作意欲を刺激します。

もちろん、本体以外に、最低でもLANケーブルと電源アダプタが必要ですが、LANケーブルは持っている人が多いでしょうし、電源アダプタは携帯電話用のものとかを流用できるでしょう。

視点2:タイミング

RPi の積極的導入に対し、2つの真逆の見解があるようです。1つは、なぜLinuxにする必要があるのか今まのCPUで十分ではないのかといういわば「時期尚早」派。もう1つは、ずっと前からこんなことできるじゃんという「気づくの遅すぎ」派。

自分はどちらかといえば「気づくの遅すぎ」派に同意します。自分(たちのグループが)小型の組み込み用機材にUNIX系を入れてI/Oを最初に操作したのは、今から23年前の1991年のことです。

1991年7月の 第17回JUS(日本UNIXユーザ会) UNIXシンポジウムにて、Everything can be IP-reachable という論文を発表しています。

論文 Everything can be IP-reachable はここからたどれます。bit.ly/VuNJEt ただし、tiff 形式だったりするので、ビューアを選ばないと開けなかったり2ページ目以降が開けないかも。

組込機にUNIXを載せてI/Oを弄る試みは新しくはありません。自分も OpenBlocks, armadillo, chumby などを使ってきました。騒ぐんだったら、BeableBoard が出たタイミングだったのではといわれそう。

自分的には arduino 文化の成熟が大きく関わっています。arduino とそのシールド群が展開したフィジカルコンピューティングのインパクトは強烈でした。本来ハードウェア屋でない自分の電子工作スイッチが久しぶりにオンになりました。

そして、arduinoを使い込むにつれ、8bit CPUゆえの苦しさ、OSがないことの不便さを感じるようにも。特にネットワークまわりは大変で、IPv6 をしゃべる arduino を用た機材は、世界的に見ても未だにごく少数です。

電子工作が一過性ではないブームになり、ネットワーク業界では IoT (Internet of Things) が注目され、IPv6 の展開が引き続き行われているというのに、ここで電子工作人(びと)が IPv6 に進出しないのは悲しい。

arduino の限界を見極め、本家も32bit版を出し、国内でも GR-SAKURA が開発されましたが、これって、大昔に初代の PC-9801が出た直後と似ています。初代のPC-9801は、ROM BASICを使う設定でした。

当時の 8bit CPU とその周辺環境からするとOSの搭載は難しくCP/Mがありましたが、ROM BASICが全盛でした。16bitパソコンにもBASICを乗せ互換性を保つのは重要ですが、16bitパソコンには新OSが必要でした。

16bitパソコンがBASICやCP/M86でなく、MS-DOS を受け入れ発展したように、32bitの小型CPUボードも、従来のライブラリの互換品を延長するのではなく、新しい何かを受け入れるのだと思っています。

視点3:パラダイムシフト

UNIX系OSを搭載できる RPi の登場はまさにそうなるべきタイミングでそうなったように思います。32bitCPUボードはOSを必要としていました。UNIX系OSは実時間性が不安かもですが、最善の選択肢のひとつです。

マルチタスクであるUNIXでは、プロセス間通信を普通に考えますから、プログラムの作り方が従来とは変わります。LEDを動的駆動する場合、従来はタイマ割り込みで桁駆動しましたが、UNIXでなら違うスタイルが可能です。

LEDを動的駆動する単機能の daemon を用意し、LEDにデータを表示したいプロセスはこの daemon とプロセス間通信してデータ表示を依頼します。デバイスの駆動と情報の生成をプロセスレベルで分離できます。

時刻に応じて機能を変化させるといったことも UNIXであれば cron を使って無問題でできますが、こういうことは8bit組込ボードではそもそも不要か無意味でした。これからは盛んになるでしょう。

そもそも、これまではプログラムをクロス開発し、ターゲットに書き込むというのが当たり前でした。RPi では、自分自身で自分自身の開発ができます。定期的にレポジトリからソースをとってきて自動的に新しい環境を再構築するなんてワクワクです。

ある目的のためのソフトウェアをさまざまな方法で開発できる多様性も大きな変化。shell script, perl, ruby, pythonなどのスクリプト系、各種コンパイラ、開発言語も多様なら編集もデバッグも多様。多様性は重要!

ここから先は、単一のプログラム vs マルチタスクOS の比較論になっちゃうので、そろそろやめますが、UNIX系OSが動くCPUボードがとても安価に使えるようになったので、新しい発想で開発ができます〜と言いたかったわけです。

多様な考え方の存在は何より大切ですから、明日の木いちごの会で、みなさんの意見を聞かせてくださいね。