※この文章は、AMC JOURNAL(東京藝術大学芸術情報センター紀要)2025への掲載を目的として執筆する草稿である。
Abstract
本稿は、2023年度から2025にかけて実施されたAMC開設授業「コードとデザイン」(前期金曜4・5限)の授業設計および実施記録である。本授業は、美術・音楽を専門とする学生を対象とした電子工作とプログラミングの知識習得を中心とした演習授業である。本授業ではその知識習得過程自体をパーソナル・パーソナルコンピューティング:誰もがコンピューターをただ使うだけでなく、自分(たち)のための計算機を自らの手で作れる技術環境づくりのひとつと位置づけ、電子計算機の原理や歴史的発展にも時間を割いている。 本稿では、その授業設計の背景や、カリキュラムの具体的な内容を記述した上で、改善しうる点について述べる。
はじめに
本稿では、2023年度から2025年度にかけて筆者が担当したAMC開設授業「コードとデザイン」の授業設計とその反省について記述する。
本稿の第一の目的は、近しい領域における授業の実施を検討している教員への参照点を示すことだ。本授業の設計でも大きな参考とした”Code as Creative Medium”においても触れられているように、デザイナーやアーティストがプログラミングやコンピューティングを学ぶためのリソースはあっても、それを教える人のための指針やドキュメントはそう多くない。教員の時間は有限であり、授業初年度は様々な業務の合間を縫って毎週のように次の授業のスライドやWSの準備をしなくてはならない。そうした中で、15回の授業をどのように設計し、どのような反省点があったかを記録するだけでも、今後の教育者のための何かのの参照点となることを期待する。
背景
2022年度以前から芸術情報センターで「コードとデザイン」はデザイン科共催授業を基にして継続的に実施されてきた。内容としてはArduinoの使用方法やレーザーカッターを用いた造形のような、アーティストとして役に立つプログラミング、電子工作、デジタルファブリケーションの知識の習得を目指すものであった。2022年度後半に、それ以前授業を担当していたデザイン科の鈴木太朗教授との相談の上、基本的な目的は維持したうえで新たにゼロから授業を設計することになった。
授業設計上の制約としては、まずあらかじめ決まっている時間の長さ(90分×2コマx15回)がある。また、他のAMC開設授業の中には映像表現、音楽等を取り扱う授業はあるものの、電子工作のようなハードウェア要素の強い授業は他にないため、全体のバランスとしてハードウェアの取り扱いを中心に据える必要もある。
さらに特徴的な制約としては、想定される対象履修者の幅広さがある。芸術情報センターには直接学生が所属せず、美術、音楽、映像問わず全学科の学生が任意で芸術情報センター開設授業を履修できる。学部1年生から大学院博士課程まで履修する可能性がある。それゆえ全くプログラミングをしたこともない学生、Arduinoだけは軽く触ったことのある人、既にモーターなどを使用した工作の経験まである人など、前提知識には例年大きなばらつきがある。
授業設計の指針
本授業全体の副題として「パーソナル・パーソナルコンピューターをつくる」と設定した。
授業を設計するにあたって意識的に行ったことの一つが、全てをゼロから作るわけではなく、既存の授業資料やワークショップを積極的に活用することであった。特に、前半の授業は筆者が2018年に参加したニューヨークのアーティスト・ラン・スクールであるSchool for Poetic Computation(SFPC)のカリキュラムを参考にした。特に参考にしたのは、スクール設立者の一人であるTaeyoon Choiによるワークショップと、アーティストユニットCW&Tによるハードウェアの授業である1。
本授業の前提として、パーソナル・コンピューターは1980年代以後に爆発的に普及したものの、当初根底の思想として研究されていた個人が自由に入出力を作り変えられるメディアとしての性質を十分に発揮できていないという歴史観がある[@emerson2014]。アプリストアの公証を受けなければインストールが許されなかったり、ユーザーによる内蔵ハードウェアの交換可能な範囲が年々狭くなっていく中で、たとえばArduinoのようなマイクロコントローラーによって自分だけのコンピューターインターフェースを制作することを、現代においてよりパーソナルなパーソナル・コンピューターを作る行為と呼べるのではないか、といった考えを念頭に最終目標を設定している。
またこの最終目標は、最終課題制作に一定の自由度を与えることも意図している。本授業の最終課題は完全自由制作か、後述する授業内小課題を発展させたもののいずれかを選択できるようにしている。完全自由制作については、自分が履修している他の同時期の授業における課題制作に、授業で学んだ要素が生かされているならばそれを提出しても良いことにしている。これら課題設定の背景にはAMC開設授業の性質上、自分の所属する学科の授業課題に比べて優先度が低く、学期末に課題が集中することで途中離脱することを避ける意図も含んでいる。
また最終課題は作品ではなく、作品制作のために使う道具であったり、日常的に使う生活用品のようなものでも良いことにしている。これは、芸術学科、楽理科や音楽環境創造科の学生のように、必ずしも作品制作を主軸に置かない学生も存在するため、それぞれの目的意識に合わせた制作を行えるような意図である。
カリキュラム
カリキュラムは全体として、コンピューティングの概念と基礎理論を理解するためのパート、Arduinoのチュートリアルパート、最終課題制作のパートと3つに分かれており、最終課題以外は概ね1コマごとに1WSを実施するような構成になっている。
- Conditional Design Workshop
- 電子工作脱入門:Electromechanical Oscillator
- インバーターの製作
- 2進数カードゲーム
- NAND回路と全加算器
- Arduino基礎
- 秋葉原に買い物
- 雑マウスの制作
- Processingとの連携/PONGゲーム
- サウンド
- モーター
- 課題制作打ち合わせ
- デジタルファブリケーション(手作り電子部品)
- 課題制作打ち合わせ2
- 最終課題発表
前半
Conditional Design
初回は、Conditional Design Workshopを実施する。この回は、授業の履修抽選前の段階であるが、授業内容の紹介も兼ねたワークショップの実施という形にした。Conditional Designは、デザイナーのLuna Maurer, Jonathan Puckey, Roel Wouters、アーティストのEdo Paulusらによって考案された、単純なルールに基づいて複数人でグラフィックを生成するワークショップである。単純なルールとは、例えば、「ペンを一度も離さず、他の人の線と交差しないようになるべく長い曲線を描く」、「どこかの線分の中央から垂直に直線を伸ばす→線分のいずれかの端同士を直線で繋ぐ、を繰り返す」といったものである。
ここでは、授業のタイトルである「コードとデザイン」における、デザインがどのような領域を指すのかについて考えることを目的としている。単純なルールから複雑なグラフィックが生まれる過程を通じて、参加者はアルゴリズムやプログラミングといった概念が必ずしもコンピューターに依存するものではないことに気づく。また、同時にデザインという領域が、グラフィックやプロダクトといったものから、人同士の関係性を構築したり、社会に問いを提示するものへと発展してきた歴史についても触れる。
[WSの写真]
電子工作脱入門:Electromechanical Oscillator
2回目では、電子工作の基礎として、スピーカーと9V電池、アルミホイル、配線のみで音を鳴らす構造を作る。このWSは、イギリスの音楽家John Bowersによる「The Victorian Synthesizer」というワークショップと、サウンドアーティストPaul Demarinisの「Tympanic Alley」という作品を基にしている。スピーカーと9V電池を通電させると、通電の瞬間スピーカーに電流が流れダイアフラムが持ち上がる。ダイアフラムの付近に、例えばアルミホイルで膜を貼り、電線がアルミホイル=ダイアフラムに触れることで通電するような構造を作ると、ダイアフラムの振動そのもので電線を弾き飛ばし、通電がカットされる。通電が止むと配線は元の接触状態に戻り、再び通電が起き音が鳴り・・・という繰り返しで持続的な音が発生する。
この授業では、電源から配線が負荷に繋がりループを形成すると電流が流れるという電気回路の基礎概念を学ぶ。また、参加者はスピーカーという、電気的なインダクタンスに加えて物理的なコンプライアンス(≒電気回路におけるキャパシタンス成分)などが引き起こす時間遅れとフィードバックが振動現象を引き起こし、コンピューターの基礎を成す要素のひとつであるクロックがどのようにして動作するかを直感的に理解する。
[WSの写真]
Handmade Computer(3,5回)
第3、5回目を通じて、参加者は紙の上に銅箔テープで形成した回路の上に基礎的な論理回路をトランジスタを用いて構成する。このワークショップは、元々のSFPCの授業内で作っていたものになる。第3回は、入力を単に反転するだけのインバーターを実装し、第5回では2つの入力が共に0のとき1を出力するNAND回路を実装する。トランジスタによるロジック回路の構成には、通常のトランジスタを用いたTTLロジックと、FETを用いるCMOSロジックの2種類が検討できる。
配線の注意点として、銅箔テープの裏面は粘着剤のため導電性がない。そのため、テープ同士を接続する際は、接点の角を小さく折り返した上で重ね、可能な限りハンダづけもすることを推奨する。もしくは材料の価格は上がるが裏面に導電粘着剤を用いているテープを使用する。また銅箔テープへのハンダ付は、あらかじめユニバーサル基板と比べてハンダの濡れ性が悪いため、可能であればフラックスを必要な数用意することを推奨する。
[NAND回路をTTLとFETのものそれぞれ、実物の写真]
回路構成について、本授業では2024年度まではTTL、2025年度はCMOSで行った。TTLで行うと、トランジスタの個数が少なくて済む一方、ベース抵抗などの部品点数が増える。CMOSロジックの場合、部品点数自体は少なくなる一方で、手で半田付け可能なPMOSトランジスタの入手性が悪い問題がある。本授業では価格と入手性、半田付けのしやすさを考慮して、2SK4017(NMOS)、MTP4835(PMOS)の2種類を使用した。
バイナリーカードゲーム
第4回では、浦川通によるバイナリーカードゲームを用いたWSを行う。バイナリーカードゲームは、トランプのような52枚のカードの中に、白か黒2種類のカード26枚ずつが入っているものである。参加者は、前半過去の参加者が提案したこのカードを用いるゲームを遊び、後半では自分たちでオリジナルのゲームを考案し発表する。
ここでの目的は、ゲームのルールを通じて2種類のカードの列を二進数(=白を0、黒を1)と見立てて、二進数の計算の仕組みについて理解を深めることにある。このワークショップがインバーターの作成と、加算回路の間に挟まれることによって、単純なブーリアン同士のルール設定がより大きな数の計算に発展可能なことを直感的に理解することを目指す。
また参加者は同時に、自分たちでゲームのルールを考える過程を通じて、ゲームの進行、勝敗、終了条件の設定の中で、のちのプログラミングにおける論理的思考を養うこともできる。
ゲームを考案する中でのヒントとして、既存のカードゲームのルールを2進数で置き換えてみるのが学生たちにとってはわかりやすかったようである。例えばインディアンポーカーやスピードといったゲームを二進数バージョンで考えてみるといったゲームが生まれた。
このバイナリーカードゲームは、それ自体が浦川がSFPCに参加していた時の授業で行われた、二進数を理解するために二進数を教える道具やキットを作ってみる、という授業の課題を発展させたものでもある。つまり、カードゲーム自体が本授業の最終課題における小課題を発展させる(=実際にフィジカルなカードゲーム型の道具を作る)という実例にもなっている。実際、最終課題の中にはこの回の内容を発展させた教育キットやすごろくのようなものを作った学生も存在する。
前半のまとめ
後半:実用的電子工作
Arduinoの基礎
後半の初回では、芸術家・デザイナー向けのマイクロコントローラー環境Arduinoの入門を行う。本授業では、大学で用意したArduino、ブレッドボード、ACアダプタ、ジャンパワイヤセット、FET、LED、抵抗、タクトスイッチ、赤外線距離センサー、12cmファン等をまとめたオリジナルのキットを使用する(これは、以前のコードとデザインから使われていたものである)。
学生はこの回で初めてテキストベースのプログラミング環境に触れるので、改行やスペースの扱い、行末のセミコロン、全角と半角などプログラミングの基礎的な知識についても注意して教える必要がある。
教える内容としては例えば、赤外線反射式のアナログ距離センサーを用いて、アナログ入力をシリアルプロッタに出力する例から初め、それをFETのスイッチングを経由して、PWMでファンのスピード制御に変換する例までを2コマで学ぶ。
秋葉原遠足
Arduinoの基礎的な使い方を学んだ後、次の実習では秋葉原を探索し、電子部品屋を巡り実際に使えそうなセンサーやアクチュエータなどのパーツを購入してみる。
ここでは代表的な電子部品店を紹介し、学生は秋葉原まで移動後、小グループに分かれ自分たちで店を巡る(大人数で一度に押しかけて店の迷惑にならないように注意する)。
この授業では上野と秋葉原という地理的に近しい場所にあるにも関わらず、文化的にはあまり接点のない2つの街の歴史的経緯についても事前に解説する。明治時代から文化の中心地として開拓されてきた上野と、戦後ヤミ市の整理によって高架下に集まった電気・電子部品屋という異なる由来を理解することで、東京藝術大学という場所で電子工作を用いた作品制作を行う意味について思索を広げてもらう。
雑なマウスを作る
この実習では、ArduinoでHID(マウスやキーボード)をエミュレートし、簡易的なマウスやキーボードを実装するものである。
参加者は、Handmade Computerでも用いた画用紙と銅箔テープを材料に、簡易的なタッチセンサーを制作し、マウスを上下左右に動かすボタン/左右クリックボタン、あるいはキーボードの任意のキーにアサインする。
ここでの制作方法は、使っているArduinoの種類により2種類の方法に分かれる。
Arduino Leonardoか、Arduino Uno R4を使う場合、Arduino自体をUSBキーボードとして認識させられるエミュレート機能がHIDライブラリを用いることができる。この場合、銅箔テープのスイッチは、アナログ入力の各ピンをINPUT_PULLUPの設定にした上で、GNDとショートさせることでスイッチオンオフの判定を行う。
Arduino Uno R3以前のAVRベースのものを使用する場合、HIDエミュレート機能が無いため、別途pythonのPyAutoGuiライブラリを使用して制作した、シリアル通信をマウス・キーボード操作に変換するスクリプトを配布して、Arduinoからはシリアル信号を送ることで制御を行う。R3の方が構成が煩雑になるが、代わりにメリットも2つ存在する。1つ目は、ADCTouchというAVRマイコン依存の機能を使用することで、アナログ入力端子に挿した電線を静電式タッチセンサとして利用できるようになるライブラリが使用できることである。GND端子との接触を考えなくて良くなるので、より配線を簡易的に構成できる。2つ目は、Pythonでマウス操作を行うため、ウィンドウの特定の位置にマウスカーソルを移動させるような、絶対位置操作が行えることである。
本授業では2022年度はR3、2023年度以降はR4を用いたので以上の方法を使い分けた。
この実習での狙いは、普段自分たちが使っているコンピューターの入力のインターフェースもArduinoとスイッチなどこれまで作ってきたものの延長線で自作できることを実感し、インタフェースというコンピューターと身体を接続する界面が以下に制作物に影響を与えうるかについて理解することである。授業内では、1952のDATARで使用された最初のトラックボールや、ダグラス・エンゲルバートによる最初期のマウスなどインターフェースの歴史についても触れる。
自作マウスが完成した後は、そのマウスを使ってブラウザゲームをプレイしたり、Photoshopのような普段使用している制作ソフトを使用してお絵描きをするなどして、普段の操作環境との違いを身体で実感する。例えば上下左右キーをベースにしたマウスでは、原則45度単位での移動しかできないため、描けるグラフィックもそれに沿ったものになる。小課題として、これら制作したマウスで操作した結果(ゲームプレイ中の画面録画やPhotoshopで制作した画像など)を提出する。
簡易PONGゲームの制作
この実習では、ArduinoとProcessingを組み合わせて、簡易的なPongゲームを制作する。
この授業では、直接Arduinoのコードを書く代わりに、Firmataというシリアル通信仲介ライブラリを使用することで、Processing内に直接Arduinoの操作コードを記述する方法を学び、デスクトップアプリケーションとArduinoの組み合わせ方について学ぶ。また、PONGゲームという最小限のゲームの作り方を通じて、Processingで使われているJavaという言語とArduinoで用いられるC++の違いを知りつつ、両者に共通するオブジェクト指向プログラミングのコンセプトをある程度理解することも一つの目標である。
授業内では、Tennis for Two、MITのSpacewar!、Atari PONGなどの電子計算機を遊びに用いた実例を交えつつ、ビデオゲームという遊びのためのコンピューターへと発展していく歴史も紹介する。
Processingだけで一人用PONGゲームを制作した後、Arduinoを経由してバーの操作を可変抵抗にしたり、ゲーム開始/やり直しのボタンをタクトスイッチに変えて遊ぶことで、インターフェースの違いが生む体験の差を身体で実感する。
音声・モーターのプログラミング
第10回、11回目の授業の中では、学生から需要の高いトピックに応える目的で、Arduinoでの音声プログラミングやモーターの制御方法について教えている。この部分は、初回授業でアンケートを取るなどして毎年少しづつ内容を調整している。
音声プログラミングでは、音を電気信号として扱う基本的な概念の説明ののち、Arduino標準のtone関数を用いた音声出力について学び、Arduino向け音声合成ライブラリMozziを使った基本的な信号処理についても触れる。Mozziは使用しているArduinoのバージョンによって使用できるピンの番号や数が変化するため注意が必要となる。
モーター制御では、小型のファンをFETを用いPWMで速度制御する例を通じて基本的な制御方法を学ぶほか、小型サーボモーターSG90の操作を通じて、ArduinoのServoライブラリで任意の角度への回転を行う方法も学ぶ。例年ある程度重量のあるものを動かす需要が高いため、トルクの概念とモーターの選定方法を簡単に解説するほか、回転運動から直動への変換など機構設計の基礎についても軽く触れる。
デジタルファブリケーション
この回は、センサーやアクチュエーターをデジタルファブリケーションの技術を用いて自作することで、入出力の造形的自由度を高めることを目的とする。
この授業の元となっているのは、MIT Media LabでHannah Perner-Wilsonが行なっていたKit of No Partsというプロジェクトである。例えば、スピーカーは渦巻状の電極に磁石を近づけることで簡易的に形成することができるが、この電極は例えば導電糸で布に縫い付けたり、銅箔テープをカッティングプロッタで加工したり、エッチングや鋳造など、複数の方法で造形することができる。実際に授業内では、レーザーカッターで加工したアクリル部品と、カーボンベースの導電塗料、銅箔テープなどを組み合わせて簡易的な可変抵抗を制作する。限られた授業時間内の中ではあるが、レーザーカッターやカッティングプロッターなど、デジタルデータを用いて物理的な造形を行う装置の基本的な使い方についても習得できるのが望ましい。
最終課題制作に向けた相談
最終課題制作に向けた相談を主とする回は、展示準備と講評の回を除いて2回設けてある。これらの回では、15分程度の区切りで教員と助手それぞれにオフィスアワーの時間を事前に予約できるようにしておき(予約が埋まっていなければ当日その場で相談も可)、それ以外の時間は自主的な制作時間にするのを基本とする。
電子工作を用いる制作には、部品調達の時間が必要となること、また大型の作品は教室で作業ができないこともあるため、事前に申請を行った上で授業終了時にその日の作業内容について報告することで、教室外での作業も許可するようにした。
また、電子工作については部品の選定後トライアンドエラーの結果新たな部品調達が必要となることもままあるため、1回目の課題制作相談の前に、プロジェクトシートの記入を事前課題として設けている。これは、作品概要、スケッチ、展示に必要な大きさ、必要な材料と部品リスト、制作スケジュールを記述したものである。
このプロジェクトシートは、制作進行のガイドとして使用するほか、教員が展示のレイアウトや機材の貸し出しなどのプランを練るのに使用する目的も兼ねており、また制作を進めるたびにその進捗も記入し、また最終課題発表後には展示の様子の写真や制作の感想なども記入し最終課題提出の証拠としての提出も課している。結果として、作品制作全体のドキュメントとして学生自身が後から見返す、また他の制作でも同様のプロジェクトマネジメントのテンプレートとして使用できることを想定している。
課題講評と評価基準
授業全体の評価基準として、事前にシラバスで共有されている通り、出席率を30%、小課題点を30%、最終課題点を40%として評価する。
小課題の評価は基本的には提出の有無のみ(期限を過ぎての提出は70%)で評価する。
最終課題の評価は、前述の通り課題の
Footnotes
-
2020年以降、コロナ禍の影響及びSFPCの運営体制変更に伴い現在のSFPCではハードウェアの授業は実施されていない。 ↩