差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン 次のリビジョン両方とも次のリビジョン | ||
lecture:プロトタイピング基礎:2019 [2019/04/16 11:56] – [Paper Prototyping課題(ユーザビリティ評価とペーパープロトタイピング)] baba | lecture:プロトタイピング基礎:2019 [2019/04/26 05:23] – [Paper Prototyping課題(ユーザビリティ評価とペーパープロトタイピング)] baba | ||
---|---|---|---|
行 12: | 行 12: | ||
| 2019/ | | 2019/ | ||
| 2019/ | | 2019/ | ||
- | ===== Paper Prototyping課題(ユーザビリティ評価とペーパープロトタイピング) ===== | ||
- | 授業で学習したペーパープロトタイピングに関して,sevencafe UIを元に,自らデザイン案を提示し,被験者に対して評価を行ってください. | ||
- | * [[https:// | ||
- | * [[https:// | ||
- | * [[https:// | ||
- | ===== ソフトウェアプロトタイピング | + | ===== Paper Prototyping |
- | ここではソフトウェアによるプロトタイピングについて学ぶ.今回は具体的にProcessingを利用し,簡単なUIを作成し,その評価を行う. ペーパープロトタイピングと同様の内容を今度はソフトウェアの実装を通じ,どのような箇所がペーパープロトタイピングと比較して有効であるか等のメリットやデメリットを体験することが目的. 実際にシンプルなボタンデザインをソフトウェアにて実装してみるが,それに先立ち「[[http:// | + | 参考図書は下記の通り |
+ | * D.A. Norman著「誰のためのデザイン? | ||
+ | * Susan Weinschenk著「インタフェースデザインの心理学」 | ||
- | Processingを利用して「ボタンを押す」という動作やボタン形状・色に様々な補助的情報を不可してみる.具体的にはマウスが乗っているとき,ボタンを押した時に関して,ユーザにフィードバックを提供し,ユーザビリティやユーザエクスペリエンスを向上させることを意識してみる. | ||
- | < | + | ==== Paper Prototyping課題(ユーザビリティ評価とペーパープロトタイピング) ==== |
- | // ボタン画像を表示するプログラム | + | 授業で学習したペーパープロトタイピングに関して,sevencafe UIを元に,自らデザイン案を提示し,被験者に対して評価を行ってください. |
- | PImage img_button; | + | * [[https:// |
- | + | * [[https:// | |
- | void setup() | + | * [[https://www.dropbox.com/s/1ks5qnsrqopor9x/sevencafe4handwritten.pdf?dl=0 | 手書き提出用課題データ(PDF形式)]] |
- | { | + | |
- | size(600, 400); | + | |
- | img_button | + | |
- | imageMode(CENTER); | + | |
- | } | + | |
- | + | ||
- | void draw() | + | |
- | { | + | |
- | background(50, | + | |
- | + | ||
- | tint(255, 255, 255); | + | |
- | image(img_button, | + | |
- | + | ||
- | </ | + | |
- | + | ||
- | {{: | + | |
- | + | ||
- | < | + | |
- | // 通常は凹状態から,クリックした時のみ凸状態にボタンを変更する | + | |
- | PImage img_button; | + | |
- | + | ||
- | void setup() | + | |
- | { | + | |
- | size(600, 400); | + | |
- | img_button | + | |
- | imageMode(CENTER); | + | |
- | } | + | |
- | + | ||
- | void draw() | + | |
- | { | + | |
- | background(50, | + | |
- | + | ||
- | if(width/2 - img_button.width/ | + | |
- | height/2 - img_button.height/ | + | |
- | mousePressed | + | |
- | | + | |
- | 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:// | + | |
- | * デザイン指示書(サンプル){{: | + | |
- | + | ||
- | この課題は | + | |
- | * 7月9日(月)17: | + | |
- | * 8月2日(木)17: | + | |
- | + | ||
- | の2つあります.最初の提出を忘れないように注意してください. | + | |
- | + | ||
- | ==== 7月9日(月)17: | + | |
- | 7月10日の授業最終日ではデザイン指示書を発表してもらうので,そのために予めデータを提出してもらいます. | + | |
- | + | ||
- | 提出物及び提出形式 | + | |
- | * 提出物:デザイン指示書(見本:{{: | + | |
- | * 提出方法:縦横いずれかが1, | + | |
- | * 提出リンク:kibacoの「最終課題その1」に提出してください. | + | |
- | + | ||
- | ===== 8月2日(木)17:00 迄にデザイン指示書及び開発した時計ソフトウェアの提出+アンケート ===== | + | |
- | 平成30年7月9日に提出した設計指示書をそのままペアとなった学生に渡して,ソフトウェア開発を依頼してください.同様にペアとなった相手から | + | |
- | デザイン指示書をもらい,プログラム作成を開始してください.デザイン指示書で不明な点があれば,その都度ペアとなっている相手に連絡をとり, | + | |
- | どのようにすべきかを指示を仰いでください.プログラマー側が指示書に書いてないことを勝手に制作してはいけません.デザイン指示書に情報が不足して | + | |
- | いた等の理由で,当初の指示書に追記・修正が必要となった場合,必ずデザイン指示書を修正して,再度ペアとなった相手に提出してください.なお, | + | |
- | デザイン指示書を修正するたびに,デザイン指示書v.1.png,デザイン指示書v.2.pngという具合に全てのバージョン情報をファイル名に付与し,まとめて | + | |
- | おきます. | + | |
- | + | ||
- | ==== 提出物 ==== | + | |
- | 提出物は下記の通りです. | + | |
- | | + | |
- | * 相手から送られてきたデザイン指示書(修正・追記等でVersionの違いがある場合は,上記で記述した通り,デザイン指示書v.1.pngという具合にVersion情報をファイル名に付与してください.) | + | |
- | * 自分が作成したデザイン指示書(修正・追記等でVersionの違いがある場合は,上記で記述した通り,デザイン指示書v.1.pngという具合にVersion情報をファイル名に付与してください.) | + | |
- | * アンケート | + | |
- | * デザイン指示書及び,制作されたプログラムに関するアンケートをとります.こちらはkibacoでの提出ではなく,馬場が用意するGoogleのアンケートフォームによってペアとなった相手の評価を提出してもらいます.相手のデザイン指示書ややり取りに関する評価項目と,相手が提出したプログラムがどの程度意図通りであったかを評価するアンケートになっています. | + | |
- | | + | |
- | <WRAP center round important 60%> | + | ==== 機能プロトタイピング ==== |
- | アンケートも最終課題同様に8月2日17: | + | ここでは主に,Processing,Arduinoを利用し,ソフトウェアとハードウェアのプロトタイピング入門を体験します. |
- | </ | + | |
- | ==== 提出方法 ==== | + | |
- | 下記の1, | + | |
- | * スクリーンショット 2018-07-10 11.33.43.png{{: | + | |
- | * 実際にzipに圧縮したサンプル(サンプルの為,デザイン指示書のpngファイルの画像はダミーです):{{ : | + | |
- | === 1. プログラム本体 | + | |
- | Processingで作成したプログラムの本体のことです.例えばこちらから提供しているClockTemplateの修正し,プログラムを制作した場合,下に閉める階層構造のClockTemplateフォルダのことです. | + | |
- | < | + | |
- | ClockTemplate | + | |
- | ├── ClockTemplate.pde | + | |
- | └── data | + | |
- | └── HelveticaNeue-UltraLight.otf | + | |
- | </ | + | |
- | ===2. 相手から送られてきたデザイン指示書=== | + | === Processing |
- | 相手からのデザイン指示書というフォルダにファイルを保存してください.デザイン指示書の画像ファイルには,デザイン指示書という名前をつけ,追記修正が生じた場合はVersionごとに保存してください.例えば実際にやり取りを行い,3度の修正があった場合,次のようなファイル構成になります. | + | 各自の環境にProcessingをダウンロードし,動作を確認しておいてください.授業では主に |
+ | * [[lecture: | ||
+ | のページを参照しながら進めます.プログラミングに関する入門的知識を学習しつつ,Processingを利用したプログラミングスケッチを体験していきます. | ||
- | * スクリーンショット 2018-07-10 11.27.38.png{{: | + | === Arduino === |
- | ===3. 自分が作成したデザイン指示書=== | ||
- | 自分からのデザイン指示書というフォルダにファイルを保存してください.デザイン指示書の画像ファイル名には,デザイン指示書という名前をつけ,追記修正が生じた場合はVersionごとに保存してください.例えば実際にやり取りを行い,3度修正があった場合,次のようなファイル構成になります. | ||
- | * スクリーンショット 2018-07-10 11.30.46.png{{: | ||