フィジカルコンピューティング開発論(PC開発論)と応用演習(PC)はセットになっています。PC開発論で説明したことを、応用演習で実験します(ただし、そうでない回もあります)。PC開発論と応用演習の講義資料は、相互に使用することがあります。
フィジカルコンピューティングとは
フィジカルコンピューティングとは何か、ということから始めましょう。”Physical Computing“という言葉は、Tom Igoe(トム アイゴ)によって最初に使われたと思われます。New York University で彼が担当する講義のサイト(https://itp.nyu.edu/physcomp/)には以下のような説明があります。
“Physical Computing is an approach to computer-human interaction design that starts by considering how humans express themselves physically. Computer interface design instruction often takes the computer hardware for given ― namely, that there is a keyboard, a screen, speakers, and a mouse or trackpad or touchscreen ― and concentrates on teaching the software necessary to design within those boundaries. In physical computing, we take the human body and its capabilities as the starting point, and attempt to design interfaces, both software and hardware, that can sense and respond to what humans can physically do.”
この講義では、フィジカルコンピューティングを以下のように定義します。
「フィジカルコンピューティングとは、人間と物理世界とのインタラクションがあるようなコンピュータ処理を、人間の身体的特徴にもとづき実現することである。 New York 大学(Tom Igoe)の教育プログラムの名前が語源。広範な概念を含み、組み込みシステム、デジタルアート、教育、思想などに関係する。」
上記の定義にもあるように、フィジカルコンピューティングは、組み込みシステムと呼ばれるシステムと関係があります。技術的な側面から見た場合には、組み込みシステムそのものであるとも言えます。フィジカルコンピューティングは以下のような要素から構成されると考えます。
組み込みシステムの技術
ユーザインターフェイスの技術
芸術・感性
ユーザインターフェイスの技術とは、使いやすいユーザインターフェイスとはどのようなものかを、様々な側面から考察し体系化した技術です。例えばWebで言えば、メニューやボタンの形や色、配置などに関する技術です。芸術・感性が入っているいることに違和感を持つかもしれません。しかし、スマートフォンの開発にはそのデザインが決定的な意味を持ちます。また、フィジカルコンピューティングの守備範囲には、デジタルアートと呼ばれるような分野も含まれます。
この講義で扱う内容は、少し上記のフィジカルコンピューティングの定義をはみ出しているように思います。「人間と物理世界とのインタラクションがあるようなコンピュータ処理」ではないものも扱うからです。その辺は、あまり深く考えないようにします。
ネットワーク情報学部は、工学部ではありません。私たちは、組み込みシステム技術の基礎となる電子電気や物理学、制御理論といったことを専門とするわけではないのです。よって、これらの基礎的な知識・技術に関してはできる限り簡素に、最低限の事柄のみを扱うことにします。その代わり、我々は、発想する力を最重要事項として扱います。
講義の目的
この講義の目的は、発想する力を養うことです。そしてそれは、勝手な妄想ではなく、確かな技術と手法に基づかなければなりません。その基礎として、幾つかのサブゴールを設定します。
マイコンとデバイスを使った簡単な電子回路を理解する。
マインドマップを使って、アイディアを他人に説明する。
自由な発想で作品を構想する。
Pythonを使って数百行規模のプログラムを作成する。
他人の作品を評価し、優れている点、改善できる点を議論する。
これらのサブゴールを達成していき、最終的には社会に価値をもたらすシステムやサービスを発想する力を獲得することが最終的な目的です。
組み込みシステム
組み込みシステム(embedded systems)とは、機器に組み込まれるコンピュータシステムのことです。具体的な例を挙げると、家電製品やスマートフォン、車載機器等になります。コンピュータが組み込まれた機器自体を、組み込みシステムと呼ぶこともあります。つまり、家電製品は、組み込みシステムです。
組み込みシステムの市場は非常に大きく、また成長しています。中でも自動車は、本格的に組み込みシステムとなりつつあります。現在、自動車のエンジンは、ほぼ全てコンピュータによって制御されています。これは、排ガスをより少なくし、効率よくエネルギーを取り出すためです。また、プリクラッシュセイフティという考え方に基づき、自動車が衝突しそうな危ない状況に陥った時、運転者に警告をしたり、自動的にブレーキをかけたりすることができるようになりました。これらも全て、コンピュータによる処理です。完全自動運転が実現するのも夢ではないかもしれません。
マイコン
この講義では、ARMという会社が設計したマイコンを使用します。マイコンとは、マイクロコントローラの略で、コンピュータの一形態です。パソコンにおけるCPUのようなものですが、メインメモリやネットワーク機能などが、コンピュータの心臓部と一体になっています。マイコンは、エアコンや電子レンジといった家電製品や、自動車のエンジンやブレーキを制御する車載機器、スマートフォン等に利用されています。用途により、車載用マイコンや家電用マイコンのような区別があり、多種多様です。
ARM社は、自社で製造を行わない、いわゆるファブレス(工場を持たないという意味)のマイコンメーカーです。設計だけを行って、そのライセンスを色々な会社に売っています。ARM社はイギリスの会社ですが、2016年の夏にソフトバンクに買収されたことで話題になりました(これは本当に大変なことですよ!)。マイコンの世界は複雑で、例えば、AppleがiPhoneに搭載しているAシリーズというマイコンを例に説明すると、A12はARMをベースにAppleが拡張をして、それをTSMC(台湾)という会社が製造していると言われています(Appleは詳細を発表しないので)。TSMCはARMとは正反対で、設計はしないけれどもファブレスメーカーの依頼に応じて製造だけを行うメーカーです。
いわゆるパソコンのCPUメーカーは、ほぼインテルだけになりました(一部AMDのCPUも使われています)。一方、マイコンのメーカーは、非常に多くあります。有名なところでは、Qualcomm(アメリカ)、ルネサス(日本、NEC+日立+三菱系統)、Freescale(アメリカ、Motorola系統)、Samsung(韓国)、NXP(オランダ、Phillips Semiconductor系統)、TI(アメリカ)、Atmel(アメリカ)、Infineon(ドイツ、Siemens系統)、STMicroelectronics(フランス+イタリア、Thomson系統)、ブロードコム(アメリカ)などのメーカーがあります。
かつて日本は、半導体の製造で高い世界シェアを持っていました。このような文脈で「半導体」という言葉を使った時には、主にマイコンとメモリ(DRAM及びフラッシュメモリ)を指します。1990年頃には、NECや東芝、日立製作所、富士通、三菱電機などのメーカーが、世界のトップ企業とし存在感を持っていたのです。しかし、現在の半導体市場における日本企業は、ルネサスが車載マイコンで、キオクシア(旧東芝メモリ)がフラッシュメモリで、それぞれ大きなシェアを持っているくらいになってしまいました。
マイコンは、組込みシステムの心臓部なので、どのような機器に組み込まれるかによって、求められる性質が異なります。例えば、炊飯器や低価格の電子レンジのような家電製品の場合には、そんなに大きなメモリや計算能力を求められないので、8bitマイコンや16bitマイコンで十分です。これらのマイコンは、1個50円から100円程度の価格です。1個数百円で売られているUSBメモリにもマイコンは入っていますから、この価格優位性はとても重要なことなのです。一方、スマートフォンの場合には、もう既にパソコン(PC)と同じような性能が求められますから、心臓部には最新の64bitマイコンが使われます。64bitマイコンは、16bitマイコンと比較してはるかに高価です。
この講義では、以下のようなツールを使います。
Raspberry Pi: マイコンボード。マイコンを使いやすくした基板。
https://www.raspberrypi.org
Python: プログラミング言語。
Coggle: 図を使った発想支援のためのツールです。
https://coggle.it
半田ごて
マルチメータ: テスタのことです。
この講義では、貸し出した Raspberry Pi 3 Model B を使います。(人によっては、 Raspberry Pi 3 Model A+ を使います。)
Raspberry Pi
Raspberry Pi は、イギリスに拠点を置く Raspberry Pi Foundation によって開発されているマイコンボードです。ARMベースのマイコンを搭載しています。 Raspberry Pi にはいくつかのタイプがありますが、この授業では Raspberry Pi 3 Model B (または Raspberry Pi 3 Model A+) というタイプを使います。
Python
Raspberry Pi ではいくつかのプログラミング言語を利用可能ですが、この授業ではPythonを使います。Pythonは比較的新しい言語ですが、AIの分野でよく使われるようになり、最近ではWebアプリの開発などにも広く使われるようになってきました。今後も利用範囲は広がっていくと思われます。
Coggle
Coggleはマインドマップのような図を描くためのツールです。アイディアをまとめたり、それを他者に伝えたりする際に使用します。無料のアカウントでは3つまでプライベートな図を作成できます。授業で作成するような図はプライベートではなくパブリックで問題ありません。
Raspberry Pi OS のインストールが、第2回開発論(9/26)までの宿題として課されていると思います。第2回応用演習(9/29)でもOSインストール済みの Raspberry Pi を使って作業を進めていくので、インストール作業を進めておいてください。方法については、以下の開発論のページを参照してください。
今後基本的には、 Raspberry Pi にSSHログインをして開発作業を進めていくことになります。SSHログインをすると、通常のコンピュータのGUIではなく、コマンドベースのCUIでコンピュータを操作していくことになります。すると、フォルダ(ディレクトリ)の作成・移動・中身表示やファイルの作成・コピー・移動・削除といったことも、すべてコマンドを打ち込んで操作していくことになります。
そのため、コマンドについて習熟することが、何の作業をするにおいても近道です。逆に、ずっとコマンドを覚えずにいると、たいへん非効率です。以下の開発論のページを読んで、ひととおりコマンド操作を身に付けましょう。