Files
quartz-research-note/content/コードとデザイン 授業設計の覚書.md
松浦 知也 Matsuura Tomoya 06ec5de867
All checks were successful
Build / build (push) Successful in 14m47s
[obsidian] vault backup: 2025-12-26 17:25:45[
2025-12-26 17:25:45 +09:00

133 lines
19 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#writings
※この文章は、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 ComputationSFPCのカリキュラムを参考にした。特に参考にしたのは、スクール設立者の一人であるTaeyoon Choiによるワークショップと、アーティストユニットCW&Tによるハードウェアの授業である[^sfpc2018]。
[^sfpc2018]: 2020年以降、コロナ禍の影響及びSFPCの運営体制変更に伴い現在のSFPCではハードウェアの授業は実施されていない。
本授業の前提として、パーソナル・コンピューターは1980年代以後に爆発的に普及したものの、当初根底の思想として研究されていた個人が自由に入出力を作り変えられるメディアとしての性質を十分に発揮できていないという歴史観がある[@emerson2014]。アプリストアの公証を受けなければインストールが許されなかったり、ユーザーによる内蔵ハードウェアの交換可能な範囲が年々狭くなっていく中で、たとえばArduinoのようなマイクロコントローラーによって自分だけのコンピューターインターフェースを制作することを、現代において**よりパーソナル**なパーソナル・コンピューターを作る行為と呼べるのではないか、といった考えを念頭に最終目標を設定している。
またこの最終目標は、最終課題制作に一定の自由度を与えることも意図している。本授業の最終課題は完全自由制作か、後述する授業内小課題を発展させたもののいずれかを選択できるようにしている。完全自由制作については、自分が履修している他の同時期の授業における課題制作に、授業で学んだ要素が生かされているならばそれを提出しても良いことにしている。これら課題設定の背景にはAMC開設授業の性質上、自分の所属する学科の授業課題に比べて優先度が低く、学期末に課題が集中することで途中離脱することを避ける意図も含んでいる。
また最終課題は作品ではなく、作品制作のために使う道具であったり、日常的に使う生活用品のようなものでも良いことにしている。これは、芸術学科、楽理科や音楽環境創造科の学生のように、必ずしも作品制作を主軸に置かない学生も存在するため、それぞれの目的意識に合わせた制作を行えるような意図である。
## カリキュラム
カリキュラムは全体として、コンピューティングの概念と基礎理論を理解するためのパート、Arduinoのチュートリアルパート、最終課題制作のパートと3つに分かれており、最終課題以外は概ね1コマごとに1WSを実施するような構成になっている。
1. Conditional Design Workshop
2. Victorian Synthesizer/ Tympanic Alley
3. インバーターの製作
4. 2進数カードゲーム浦川通
5. NAND回路と全加算器
6. Arduino基礎
7. 秋葉原に買い物
8. 雑マウス
9. Processingとの連携/ピンポンゲーム
10. サウンド
11. モーター
12. 課題制作打ち合わせ
13. デジタルファブリケーション(手作り電子部品)
14. 課題制作打ち合わせ2
15. 最終課題発表
## 前半
### 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で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とスイッチなどこれまで作ってきたものの延長線で自作できることを実感し、インタフェースというコンピューターと身体を接続する界面が以下に制作物に影響を与えうるかについて理解することである。
自作マウスが完成した後は、そのマウスを使ってブラウザゲームをプレイしたり、Photoshopのような普段使用している制作ソフトを使用してお絵描きをするなどして、普段の操作環境との違いを身体で実感する。例えば上下左右キーをベースにしたマウスでは、原則45度単位での移動しかできないため、描けるグラフィックもそれに沿ったものになる。小課題として、これら制作したマウスで操作した結果ゲームプレイ中の画面録画やPhotoshopで制作した画像などを提出する。
## 簡易PONGゲームの制作
この実習では、ArduinoとProcessingを組み合わせて、簡易的なPongゲームを制作する。
この授業では、直接Arduinoのコードを書く代わりに、Firmataというシリアル通信仲介ライブラリを使用することで、Processing内に直接Arduinoの操作コードを記述する方法を学び、デスクトップアプリケーションとArduinoの組み合わせ方について学ぶ。
また、PONGゲームという最小限のゲームの作り方を通じて、Processingで使われているJavaという言語とArduinoで用いられるC++の違いを知りつつ、両者に共通するオブジェクト指向プログラミングのコンセプトをある程度理解することも一つの目標である。