Raspberry Piとは何か


写真(クリックして拡大)のRaspberry Pi 2B(大きさ85.6mm x 56.5 mm)とは、イギリスのRaspberryPi Foundationが学校教育用に開発した700Mhz動作のARMプロセッサ(System-On-a-Chip:SoC)+1GB RAMを搭載した小型のコンピュータだ 。 計算速度は2014年の典型的パソコンに比べると1/10〜1/20の速さだが、一昔前の高性能コンピュータに匹敵する性能だ。 ラズパイraspiと呼ばれることが多い。 各種のモデルがあるが、写真のraspi2Bが最新モデルだ。
通販などでRaspberry Pi2 modelBは5000円程度で購入することができる。 モニタやキーボードなどは付属していない。 ただし、ネットワーク経由で操作するか、HDMIコネクタ(必要ならVGA/HDMI変換)を介して適当なモニタおよびUSB接続のキーボードやマウスを接続すれば、通常のコンピュータと全く同等に利用することができる。 ディスク装置として裏側に装着されるmicroSDカード(8GB以上)を使う。 電源としてMicroUSBから給電するが、電源はバッテリでも動作するので応用範囲は非常に広範に渡っている。
OSはDOWNLOADSから各種のOSをダウンロードしてインストールできる。 Linux系のRaspbianが広く普及しているが、MicrosoftもWindows 10 IoT Core for Raspberry Pi 2の提供を始めている。
何故、Raspiが興味深いのか
Raspiが興味深いのは、主に次の4つの理由を上げることができるのだが、これらがお互いに補完しあって分かちがたく結びついている。
- プログラミングを学ぶ環境として優れている。
- ソフトウエアの追加やネットワーク接続などコンピュータ管理ができるようになる
- 自分のアイデアでさまざまな工作が安価にできる。
- コンピュータシステムを実地で理解することができる。
CPUとハードウエア構成

左図は、現在のCPUの説明にしばしば用いられてきたものだ。
コンピュータの中核に位置しているのはCPU(中央演算装置:Central Proseccing Unit)である。 今日では半導体技術の進歩により、CPUをマイクロチップに実装されたプロセッサの意味でMPUというもこともある。 さらに、RaspiのCPUのように、CPUを動かすために必要な機器も追加してチップ上に載せたSoC(System on a Chip)という形で製造されていることも多い。
CPUはコンピュータを動作させるプログラムをそのメモリに読み込んで、データにさまざまな演算を施して動作するプログラム内蔵式コンピュータ・アーキテクチャ(しばしばノイマン型アーキテクチャ)に従って作らえている。 プログラムを取り替えるだけで、さまざまな動作を行うことができる万能Turing機械だということができる(初期のコンピュータは、動作目的ごとに特別な結線をその都度行う必要があった)。
コンピュータのデジタルデータは、CPU内部あるいはCPU外部のさまざまな部品とデータバスと呼ぶデータ交換用の経路を通じてアクセスされ、CPUで演算される。

左図は、CPUを1つの部品として含むコンピュータアーキテクチャを説明する図だ。 CPU計算やプログラムロードなど計算に利用するデータを格納しておくための記憶装置(メモリ)、コンピュータにデータを入力するための入力装置およびCPUで処理されたデータを出力する出力装置からコンピュータは構成されている。 ディスク装置やネットワーク装置のようにデータの入出力(I/O: Input Output)に関わるデバイスも少なくない。
左図では、コンピュータでやり取りされるデータの経路がデータバスになっているというCPU内部と同じ構造がここにも見られることに注意してほしい。
情報システム

情報システムを運用するためには、それぞれの部署との間で各種の情報をやり取りするコンピュータ群同士はネットワーク化されている必要がある。 注目すべきことは、情報システム・アーキテクチャはCPUやコンピュータ・アーキテクチャと同じ構造を持っていることである。
システムのサイズに依らず。スケールを変えてみたときでも同様な構造があるという階層性(hierarchy)は、CPUやコンピュータおよびそれを多数の要素として構成される情報システムに共通する基本的構造である。 考えているシステムサイズでは、そこからスケールアウトしてしまう部品や装置または機能の内部をマスクしてしまう。 これは、マスクされたブ部品や機能についての中身がブラックボックス化され、そのアクセス方法さえ知っていればよいということであり、また同時に、システムサイズが巨大になれば考慮しなくてはならない要素が出現するということでもある(たとえば、クラウドコンピュータが後者の例である)。
ソフトウエア・アーキテクチャ

ソフトウエアにおいても、ハードウエアと同様に、そのアーキテクチャはそのサイズに応じた構成要素を持つ。 左図は、1台のコンピュータにおけるソフトウエア・アーキテクチャを説明したものである。
ソフトウエアにも階層性があり、ソフトウエア階層における上位ソフトウエア層は、下位のソフトウエア層の差異または最下層に位置する機械部品(さまざまなメーカや作り方、使い方がある)であるハードウエアの差異をマスクするという情報システムと同じ状況が生じていることに注意しよう。
ハードウエアを直接覆うソフトウエア層をカーネル(kernel:核)またはOS(Operating System:基礎本ソフト)と呼んでいる。
それには接続される各種のデバイスをコンピュータが認識・制御できるためのデバイスドライバも含まれる。
OSからコンピュータハードウエアを操作するには システム・コールという手段を使うが、今日的水準からすればこれは低レベルのアクセスしか提供しないので、目的とする機能を実現するためにシステムコールを複雑に組み合わせる必要がある。
OS(カーネル)の上位層にはシェル(shell:殻)があり、シェルを通じてユーザはコンピュータを動作させることができる。 この段階のコンピュータ操作はコマンド・レベルである。 コマンド文字列によってコンピュータに動作命令を与え、その結果を文字列として返されるというCUI(Character User Interface)の役割をする。 CUIの時代にはシェルがコンピュータ操作のためのユーザインターフェース=シェルであった。 しかし、GUI(Graphical User Interface)の時代になると、文字ではなくマウスでアイコンをクリックするなどしてコンピュータ操作をする 視覚的(グラフィカル)なユーザインターフェースが必要になる。 たとえば、WindowsはMicrosoft社のGUIである。 MacOS Xは、DarwinというBSD Unix系のDarwinにGUI層としてAquaと呼ぶウィンドウシステムを被せて提供している。 Linux系では、LinuxカーネルにウィンドウシステムとしてX Windowを使っている。
現在のコンピュータはCUI(シャル)やGUI(ウィンドウシステム)の上でアプリケーションソフトウエアが動作する。 アプリケーションは、デバイスを操作するカーネルへの一連の原始的操作をマスクした高機能な操作をAPI (Application Programming Interface)やライブラリまたはモジュールとして用意して、これらの機能を経由してコンピュータ動作を実現している。
プログラミング
プログラム開発環境(Program Development Environment)とは、OS上に提供されたAPIやライブラリ・モジュールとセットになったアプリケーションを作成するためソフトウエアである。 プログラミングとは、一定の書式に従ったルール体系である(プログラム言語)を使ってソースコード(source code)を書くことだ。 ソースコードは、CPUが理解できるようにコンパイル(compile)して機械語に変換されて実行されるか、あるいはソースコードを逐一翻訳しながら実行するインタプリタ(interpretor)あるいは中間言語として実行される。
プログラミング言語 C/C++はコンパイル言語、Javaは中間言語の代表である。 Python、Ruby、Perlはインタープリタ言語の代表である。プログラミングRaspiでは、ほとんどすべてのプログラミング開発環境が用意されている。
コンピュータ工作
工作(make by youself)の機会が失われて久しい。 この情況は近年変わってきている。 現代の工作は、電子工作である。 特にスマートフォン時代になって、高機能な微細な部品が安価に入手可能になってきた。 これらを、自由に組み込んで自分で工作することが、コンピュータ教育、模型工作(ロボット製作を含む)、およびファッションの世界に大きな影響を及ぼしている。 工作は、子どもやマニアのためのものではない。

左の写真は2009年のMacBook Proの裏面カバーを開けた様子である。 今日では、ノートパソコンもスマートフォンも自分で分解修理することなどは限りなく不可能である。 ネジ止めでなく接着剤を多用し、細かい部品を詰め込んだ電子機器の姿である。 その場合、さまざまなデバイスを追加するのは、製品化された機械を限られた接続コネクタ(たとえばUSBポート)などにケーブルを差し込むていどに限られてしまう。
RaspiやArduinoは安価な部品(大抵は1000円前後に納まる)をデータシートにしたがって配線し、それをコントロールするプログラムを書いて利用する工作の可能性を大きく開く。 男女、老若、文科理科の区別なく、工作の世界を楽しむことが、デジタルの最前線だ。