差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
lecture:プロトタイピング基礎:2019 [2019/04/16 11:56] – [Paper Prototyping課題(ユーザビリティ評価とペーパープロトタイピング)] baba | lecture:プロトタイピング基礎:2019 [2021/02/28 11:15] (現在) – ↷ 移動操作に合わせてリンクを書き換えました。 66.220.149.16 | ||
---|---|---|---|
行 7: | 行 7: | ||
^ 講義日程 | ^ 講義日程 | ||
- | | 2019/ | + | | 2019/ |
- | | 2019/ | + | | 2019/ |
- | | 2019/ | + | | 2019/ |
- | | 2019/ | + | | 2019/ |
- | | 2019/ | + | | 2019/ |
- | ===== Paper Prototyping課題(ユーザビリティ評価とペーパープロトタイピング) | + | ===== Paper Prototyping ===== |
+ | 参考図書は下記の通り | ||
+ | * D.A. Norman著「誰のためのデザイン? | ||
+ | * Susan Weinschenk著「インタフェースデザインの心理学」 | ||
+ | |||
+ | |||
+ | ==== Paper Prototyping課題(ユーザビリティ評価とペーパープロトタイピング) ==== | ||
授業で学習したペーパープロトタイピングに関して,sevencafe UIを元に,自らデザイン案を提示し,被験者に対して評価を行ってください. | 授業で学習したペーパープロトタイピングに関して,sevencafe UIを元に,自らデザイン案を提示し,被験者に対して評価を行ってください. | ||
- | * [[https:// | + | * [[https:// |
- | * [[https:// | + | * [[https:// |
* [[https:// | * [[https:// | ||
- | ===== ソフトウェアプロトタイピング ===== | + | ===== 機能プロトタイピング ===== |
- | ここではソフトウェアによるプロトタイピングについて学ぶ.今回は具体的にProcessingを利用し,簡単なUIを作成し,その評価を行う. ペーパープロトタイピングと同様の内容を今度はソフトウェアの実装を通じ,どのような箇所がペーパープロトタイピングと比較して有効であるか等のメリットやデメリットを体験することが目的. 実際にシンプルなボタンデザインをソフトウェアにて実装してみるが,それに先立ち「[[http:// | + | ここでは主に,Processing,Arduinoを利用し,ソフトウェアとハードウェアのプロトタイピング入門を体験します. |
- | + | ||
- | Processingを利用して「ボタンを押す」という動作やボタン形状・色に様々な補助的情報を不可してみる.具体的にはマウスが乗っているとき,ボタンを押した時に関して,ユーザにフィードバックを提供し,ユーザビリティやユーザエクスペリエンスを向上させることを意識してみる. | + | |
- | + | ||
- | < | + | |
- | // ボタン画像を表示するプログラム | + | |
- | PImage img_button; | + | |
- | + | ||
- | void setup() | + | |
- | { | + | |
- | size(600, 400); | + | |
- | img_button = loadImage(" | + | |
- | imageMode(CENTER); | + | |
- | } | + | |
- | + | ||
- | void draw() | + | |
- | { | + | |
- | background(50, | + | |
- | + | ||
- | tint(255, 255, 255); | + | |
- | image(img_button, | + | |
- | + | ||
- | </ | + | |
- | + | ||
- | {{: | + | |
- | + | ||
- | < | + | |
- | // 通常は凹状態から,クリックした時のみ凸状態にボタンを変更する | + | |
- | PImage img_button; | + | |
- | + | ||
- | void setup() | + | |
- | { | + | |
- | size(600, 400); | + | |
- | img_button = loadImage(" | + | |
- | imageMode(CENTER); | + | |
- | } | + | |
- | + | ||
- | void draw() | + | |
- | { | + | |
- | background(50, | + | |
- | + | ||
- | if(width/2 - img_button.width/ | + | |
- | height/2 - img_button.height/ | + | |
- | mousePressed == true ) { | + | |
- | | + | |
- | image(img_button, | + | |
- | } | + | |
- | | + | |
- | tint(0, 0, 0); | + | |
- | image(img_button, | + | |
- | } | + | |
- | + | ||
- | tint(100, 100, 100); | + | |
- | image(img_button, | + | |
- | } | + | |
- | </ | + | |
- | + | ||
- | ==== セブンカフェUIをつくる ==== | + | |
- | Paper Prototypingの回ではセブンカフェUIを題材に実際に紙面上にUIを構成し,簡単なユーザアンケートを行ってみました. 今回はソフトウェアプロトタイピングを利用し,ユーザビリティ評価だけでなく動作感も体験可能なプロトタイプを作成してみます. まずはプログラムファイルをProcessing上にコピー&ペーストし,6点の画像ファイルもProcessing作業フォルダにコピーして実行してみましょう. | + | |
- | + | ||
- | < | + | |
- | // セブンカフェUIをソフトウェア画面上で配置する | + | |
- | PImage img_hot_regular; | + | |
- | PImage img_hot_large; | + | |
- | PImage img_cold_regular; | + | |
- | PImage img_cold_large; | + | |
- | PImage img_info_hot; | + | |
- | PImage img_info_cold; | + | |
- | + | ||
- | void setup() | + | |
- | { | + | |
- | size(1000, | + | |
- | img_hot_regular = loadImage(" | + | |
- | img_cold_regular = loadImage(" | + | |
- | img_hot_large = loadImage(" | + | |
- | img_cold_large = loadImage(" | + | |
- | img_info_hot = loadImage(" | + | |
- | img_info_cold = loadImage(" | + | |
- | imageMode(CENTER); | + | |
- | } | + | |
- | + | ||
- | void draw() | + | |
- | { | + | |
- | background(100, | + | |
- | + | ||
- | tint(0, 0, 0, 255); | + | |
- | image(img_hot_regular, | + | |
- | image(img_hot_large, | + | |
- | image(img_cold_regular, | + | |
- | image(img_cold_large, | + | |
- | + | ||
- | image(img_info_hot, | + | |
- | image(img_info_cold, | + | |
- | } | + | |
- | </ | + | |
- | * {{ :images.zip |}} | + | |
- | + | ||
- | + | ||
- | < | + | |
- | // | + | |
- | + | ||
- | PImage img_hot_regular; | + | |
- | PImage img_hot_large; | + | |
- | PImage img_cold_regular; | + | |
- | PImage img_cold_large; | + | |
- | PImage img_info_hot; | + | |
- | PImage img_info_cold; | + | |
- | + | ||
- | int x_hot_regular = 400; | + | |
- | int y_hot_regular = 200; | + | |
- | int x_hot_large = 600; | + | |
- | int y_hot_large = 200; | + | |
- | + | ||
- | int x_cold_regular = 400; | + | |
- | int y_cold_regular = 450; | + | |
- | int x_cold_large = 600; | + | |
- | int y_cold_large = 450; | + | |
- | + | ||
- | int x_info_hot = 500; | + | |
- | int y_info_hot = 100; | + | |
- | int x_info_cold = 500; | + | |
- | int y_info_cold = 350; | + | |
- | + | ||
- | void setup() | + | |
- | { | + | |
- | size(1000, 600); | + | |
- | img_hot_regular = loadImage(" | + | |
- | img_cold_regular = loadImage(" | + | |
- | img_hot_large = loadImage(" | + | |
- | img_cold_large = loadImage(" | + | |
- | img_info_hot = loadImage(" | + | |
- | img_info_cold = loadImage(" | + | |
- | imageMode(CENTER); | + | |
- | } | + | |
- | + | ||
- | void draw() | + | |
- | { | + | |
- | background(10, | + | |
- | + | ||
- | + | ||
- | if (x_hot_regular - img_hot_regular.width/ | + | |
- | y_hot_regular - img_hot_regular.height/ | + | |
- | mousePressed == true ) { | + | |
- | tint(250, 130, 140, 255); | + | |
- | } | + | |
- | else{ | + | |
- | tint(255, 255, 255, 255); | + | |
- | } | + | |
- | image(img_hot_regular, | + | |
- | + | ||
- | tint(255, 255, 255, 255); | + | |
- | image(img_hot_large, | + | |
- | image(img_cold_regular, | + | |
- | image(img_cold_large, | + | |
- | + | ||
- | image(img_info_hot, | + | |
- | image(img_info_cold, | + | |
- | + | ||
- | + | ||
- | } | + | |
- | + | ||
- | </ | + | |
- | + | ||
- | ===== ハードウェアプロトタイピング | + | |
- | ここではArduinoを利用して電子工作入門を兼ねて,ハードウェアプロトタイピングを体験します. | + | |
- | ==== Arduinoの準備 ==== | + | |
- | ==== LEDを点滅させる ==== | + | |
- | <code c blink.ino> | + | |
- | void setup() | + | |
- | { | + | |
- | pinMode(13, OUTPUT); | + | |
- | } | + | |
- | void loop() | + | |
- | { | + | |
- | digitalWrite(13, | + | |
- | delay(1000); | + | |
- | digitalWrite(13, | + | |
- | delay(1000); | + | |
- | </ | + | |
- | + | ||
- | + | ||
- | ==== 音を鳴らす ==== | + | |
- | PINのHIGH/ | + | |
- | つないでみましょう. | + | |
- | <code c speaker01.ino> | + | |
- | void setup() | + | |
- | { | + | |
- | pinMode(10, OUTPUT); | + | |
- | } | + | |
- | void loop() | + | |
- | { | + | |
- | digitalWrite(10, | + | |
- | delay(10); | + | |
- | digitalWirte(10, | + | |
- | delay(10); | + | |
- | } | + | |
- | </ | + | |
- | 上記のコードを理解して,特定の周波数を鳴らすにはどうしたらよいか考えてみる.なお,Arduinoにはtoneという関数が用意されているので, | + | |
- | 下記の関数を利用して簡単に任意の周波数を鳴らすことができます((http:// | + | |
- | *構文 | + | |
- | * tone(pin, frequency) | + | |
- | * tone(pin, frequency, duration) | + | |
- | * パラメータ | + | |
- | * pin: トーンを出力するピン | + | |
- | * frequency: 周波数(Hz) | + | |
- | * duration: 出力する時間をミリ秒で指定できます(オプション) | + | |
- | + | ||
- | + | ||
- | + | ||
- | === 周波数と音程の関係 === | + | |
- | 鍵盤の12音階と周波数の関係はすでに下記の方程式によって定義されています. | + | |
- | 440[Hz]を基準とした場合,12平均律では音程は2のべき乗で計算される. | + | |
- | $$ | + | |
- | f = 440 \times 2^{(\frac{n-69}{12})} | + | |
- | $$ | + | |
- | + | ||
- | 上記を利用して,$n$ を求めると $$ n = 12 \times \frac{ \log{e}{f} - \log{e}{440} }{\log{e}{2}} + 69 $$ になることを計算して | + | |
- | 確かめましょう. | + | |
- | 上記式をarduino上で関数として記述することで,ノート番号を渡すとその音高を鳴らすプログラムを作成してみましょう.なお自然対数eのlogはArduinoでは log(double value) として計算ができます((https:// | + | |
- | ==== センサの値を読み取る ==== | + | |
- | CDSという,光の当たり方によって抵抗値が変化する素子を利用して,その変化量をArduinoで読み取ってみます. | + | |
- | ==== サーボモータを動かす ==== | + | |
- | ==== シリアルLEDを使う ==== | + | |
- | * [[arduino: | + | |
- | + | ||
- | ====== 最終課題 ====== | + | |
- | 二人一組のペアを組んで,課題を実施します. | + | |
- | * <wrap em> 課題概要:お互いにデザイン指示書を作成し,お互いがその指示書をもとに時計ソフトウェアを作成する.</ | + | |
- | * プログラムの雛形:https:// | + | |
- | * デザイン指示書(サンプル){{: | + | |
- | この課題は | + | ==== Processing ==== |
- | * 7月9日(月)17: | + | 各自の環境にProcessingをダウンロードし,動作を確認しておいてください.授業では主に |
- | * 8月2日(木)17:00 迄にソフトウェア及びデザイン指示書を提出+アンケート | + | * [[lecture: |
+ | のページを参照しながら進めます.プログラミングに関する入門的知識を学習しつつ,Processingを利用したプログラミングスケッチを体験していきます. | ||
- | の2つあります.最初の提出を忘れないように注意してください. | + | ===== 時計盤面をソフトウェアでプロトタイピング ===== |
- | + | 実際にスケッチからプロトタイピングをしてみます. | |
- | ==== 7月9日(月)17: | + | |
- | 7月10日の授業最終日ではデザイン指示書を発表してもらうので,そのために予めデータを提出してもらいます. | + | |
- | 提出物及び提出形式 | + | - 盤面デザインをスケッチし,デザイン指示書を作成する.デザイン指示書としては下記サンプルを参照してください. |
- | * 提出物:デザイン指示書(見本:{{: | + | - {{: |
- | * 提出方法:縦横いずれかが1, | + | - 制作したデザイン指示書をもとにProcessingで制作する |
- | * 提出リンク:kibacoの「最終課題その1」に提出してください. | + | - プログラムの雛形:{{ :lecture:プロトタイピング基礎: |
- | ===== 8月2日(木)17: | + | 時計プロトタイピングの課題はkibacoに詳細な説明があります。 |
- | 平成30年7月9日に提出した設計指示書をそのままペアとなった学生に渡して,ソフトウェア開発を依頼してください.同様にペアとなった相手から | + | |
- | デザイン指示書をもらい,プログラム作成を開始してください.デザイン指示書で不明な点があれば,その都度ペアとなっている相手に連絡をとり, | + | |
- | どのようにすべきかを指示を仰いでください.プログラマー側が指示書に書いてないことを勝手に制作してはいけません.デザイン指示書に情報が不足して | + | |
- | いた等の理由で,当初の指示書に追記・修正が必要となった場合,必ずデザイン指示書を修正して,再度ペアとなった相手に提出してください.なお, | + | |
- | デザイン指示書を修正するたびに,デザイン指示書v.1.png,デザイン指示書v.2.pngという具合に全てのバージョン情報をファイル名に付与し,まとめて | + | |
- | おきます. | + | |
- | ==== 提出物 | + | ==== Arduino |
- | 提出物は下記の通りです. | + | 授業前までに必ずインストールと動作確認(ソフトウェアが立ち上がるか)を必ず済ませておいてください。 |
- | * Processing プログラム本体(kibacoとデザイン指示書を出したペアの相手にも送ります) | + | * https://www.arduino.cc/en/Main/Software |
- | * 相手から送られてきたデザイン指示書(修正・追記等でVersionの違いがある場合は,上記で記述した通り,デザイン指示書v.1.pngという具合にVersion情報をファイル名に付与してください.) | + | |
- | * 自分が作成したデザイン指示書(修正・追記等でVersionの違いがある場合は,上記で記述した通り,デザイン指示書v.1.pngという具合にVersion情報をファイル名に付与してください.) | + | |
- | * アンケート | + | |
- | * デザイン指示書及び,制作されたプログラムに関するアンケートをとります.こちらはkibacoでの提出ではなく,馬場が用意するGoogleのアンケートフォームによってペアとなった相手の評価を提出してもらいます.相手のデザイン指示書ややり取りに関する評価項目と,相手が提出したプログラムがどの程度意図通りであったかを評価するアンケートになっています. | + | |
- | * [[https://docs.google.com/forms/d/e/ | + | |
- | <WRAP center round important 60%> | + | ===== 音を鳴らす ===== |
- | アンケートも最終課題同様に8月2日17: | + | LEDでの基礎知識をもとに今度はスピーカを制御してみます。詳しくは下記ページで学習します。 |
- | </ | + | * [[arduino:出力基礎:音を鳴らす|音を鳴らす]] |
- | ==== 提出方法 | + | |
- | 下記の1,2,3をzipファイルに圧縮してkibacoに提出します.具体的には制作したプログラムがテンプレートのままのCloclTemplateだとした場合,提出されるファイル構成は次のものになります. | + | |
- | * スクリーンショット 2018-07-10 11.33.43.png{{:lecture:pasted: | + | |
- | * 実際にzipに圧縮したサンプル(サンプルの為,デザイン指示書のpngファイルの画像はダミーです):{{ : | + | |
- | === 1. プログラム本体 === | + | |
- | Processingで作成したプログラムの本体のことです.例えばこちらから提供しているClockTemplateの修正し,プログラムを制作した場合,下に閉める階層構造のClockTemplateフォルダのことです. | + | |
- | < | + | |
- | ClockTemplate | + | |
- | ├── ClockTemplate.pde | + | |
- | └── data | + | |
- | └── HelveticaNeue-UltraLight.otf | + | |
- | </ | + | |
- | ===2. 相手から送られてきたデザイン指示書=== | + | ===== センサの値をPCに送る ===== |
- | 相手からのデザイン指示書というフォルダにファイルを保存してください.デザイン指示書の画像ファイルには,デザイン指示書という名前をつけ,追記修正が生じた場合はVersionごとに保存してください.例えば実際にやり取りを行い,3度の修正があった場合,次のようなファイル構成になります. | + | CDS及び、静電容量センサ回路を作成して、センサからの値をArduino及びProcessingにて表示することを行います。CDSに関しては授業内で解説します。静電容量センサについては [[arduino: |
- | * スクリーンショット 2018-07-10 11.27.38.png{{: | + | ===== touchDesigner ===== |
+ | 2019年度最後の授業では touchDesigner の導入・入門を行い、課題提出をしてもらいます。授業の中ではtouchDesignerの基本的な操作方法から解説をした後、音に合わせて変化するコンピュータグラフィックスをいくつかプロトタイプしてみます。touchDesignerのインストールが必要なので、 | ||
+ | * touchDesignerのインストール(ダウンロードリンク:https:// | ||
+ | * アカウント作成(https://www.derivative.ca/ | ||
+ | * 作成したアカウントでtouchDesignerソフトウェアのアクティベーション | ||
- | ===3. 自分が作成したデザイン指示書=== | + | を必ず授業開始前までに済ませてください。 |
- | 自分からのデザイン指示書というフォルダにファイルを保存してください.デザイン指示書の画像ファイル名には,デザイン指示書という名前をつけ,追記修正が生じた場合はVersionごとに保存してください.例えば実際にやり取りを行い,3度修正があった場合,次のようなファイル構成になります. | + | |
- | * スクリーンショット 2018-07-10 11.30.46.png{{: | + | ==== Particleの作成 ==== |
+ | Particleの作成は下記リンクを参照してください。 | ||
+ | * [[touchdesigner:particle:02.炎|炎を表現する]] | ||