本节书摘来华章计算机《交互式程序设计 第2版》一书中的第1章 ,第1.2节,Joshua Noble 著 毛顺兵 张婷婷 陈宇 沈鑫 任灿江 译更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1.2 交互领域中的编程
这本书之所以名为《交互式程序设计》,是因为我们主要关注交互设计中要用到的编程知识,也就是用编程的手段,去创造用户能直接与之交互的应用。编程有很多种,其中有些技术和思维方法更适合用于服务器和数据库,而不是交互。而本书集中讨论的东西将是你用来建立用户和应用之间沟通的知识和技能。交互设计中的一大挑战是如何在你设计的作品和用户之间建立真正的交互。
1.2.1 交互的本质
那么,“交互”到底是什么呢?我们可以把它定义为双方或多方之间的信息交换。作家及电子游戏设计师Chris Crawford把交互描述为“两位及两位以上的参与者相互间听、想和说的过程”。通常谈及交互的时候,无法避开编程,因为交互中总有计算机系统或其他控制结构让人们去操控。计算机或机械系统是为 “用户”而设计的,“用户”所使用的就称为“系统”。关于交互,流行着各种各样的专有名词,例如“人机交互”、“机人交互”和“体验设计”等,事实上它们的含义大同小异:设计某种系统,为人们提供某种他们可理解的交互方式。作为一名交互设计师,你会尽力去理解用户想做什么,以及自己设计的系统应该如何反馈。你的系统可以是任何东西,例如游戏、菜单、若干连在一起的传感器和灯、一个复杂的物理交互应用等,甚至可以是其他人。
你还应该理解交互设计中的一个重要概念:反馈回路。反馈回路是指一个实体为适应内部或外部调节系统而与自身通信的过程。听起来有点复杂,其实你对此早已熟悉,例如我们的生物调节系统、流汗散热、呼吸保持氧气在体内循环、眨眼避免眼干等。当你需要更多氧气的时候,你会深呼吸,你不需要刻意“通知”身体作出这些反应,你的身体自己会去完成。为了保持体内一定的含氧量,身体发出信号,增加呼吸深度或频率,直至达到所需要的含氧量。身体向自身反馈,向自身发送信号,不断增加自身的呼吸,达到所需水平后则停止发送信号。关于反馈,类似的例子还有骑自行车,调整着平衡是不断反馈的过程,即脑部向身体发送信号,身体向脑部反馈信号,这样才能让你保持平衡。对于一个持续工作的系统而言,反馈回路非常重要,如果没有反馈,系统就不知道自己在做什么,因而也就无法进行自我调整。
我们来看看怎样从“消息发送”变为“交互”。假设其中发送方享有主动权,接收方只能收但无法给出回应,这种情况只有信息传递,谈不上“交互”。你会很容易联想到电视广播或电台广播。在合适的时间、地点,加上合适的设备,你就能看到或听到相应的信息。而广播并不考虑谁在看、谁在听,只会按它自己的时间表和节奏进行。
在此基础上,如果用户可以重新收看(听)节目,或者可以自己决定收看(听)的时间,这就增加了一个用户控制层。其实你并不是真的能和一本书或是一个静态网页进行交互,甚至对于大多数动态网站你也做不到,但你可以控制浏览的速度,可以重新阅读那些你没有看懂的内容。这其实就是导向传播。它向你提供了一系列预设的内容,让你选择要看的部分。滚动页面、点开链接、快进和回退等都属于导向传播的手段。
我们再进一步,向用户提供一些方法去完成一个任务或者向系统输入数据,真正改变系统的状态,同时也制定了一些方法,让系统去反馈用户的动作。这样,你就建立了交互。反应式交互是交互的开始,它让你开始考虑用户要做什么,你的系统或对象应该如何反应。对于用户的任何动作,系统或对象都必须作出反应,就算无法给出用户期望的反应,也必须告诉用户“我不明白”或者其他错误信息。这些功能可以在一个系统内实现。这一类的应用程序不少是用来监控系统自身状态的,例如检查系统中的某一个属性当前的状态,或者确认仓库里箱子的数量。如果把这些套用在两个人之间的交互,你可能会想到父母向孩子给出指令。
再复杂一点,这一次系统持续做着一件事,而用户可以通过向系统输入信息来控制和调节这件事。很多工业监控系统就是这样工作的,同样的还有游戏引擎的主要部分及很多其他交互装置。建立这一类交互的难度在于,确保用户在任何时候都清楚系统正在做什么,知道他们可以怎样改变系统,并且明白他们对系统任何一方面的改变都会影响到其他方面。再把这些套用到两个人之间的交互,这回是父母教孩子走路,随时留意着孩子会不会摔倒。另一个例子就是调节系统,在用户执行任务时调节他们。这里,双方之间并没有真正的沟通,因为调节系统并没有给出反馈,它只是在改变对方的行为,当中还包括连续系统。系统也可以自己完成此类任务,它能实时监控和调整正在进行的过程。
以上最后提到的那种交互模式与学习模式的交互类似,但要稍微复杂一点。系统同样在持续运行;用户可以看到系统的内部,但不再是调整自己的行为,而是从输出数据中学习。很多监控系统就是这样运作的。系统让用户看到相关的数据,以此让用户使用和了解处理的过程。当然,系统还是没有与用户交谈,它只是在运转的同时向用户报告信息。用户的操作受系统报告的驱使,但没有被系统改变。这就是之所以把它称为“学习模式”的原因。这种模式下,系统和用户都更善于自我学习,当然两者所使用的方式有所不同。
现在我们来看一个更复杂的交互模式——管理型模式。用户和系统之间双向沟通信息,并且系统允许用户执行另外一个任务。真正的复杂性从这里开始。用户与系统通信,让系统执行某些任务。系统回应用户,让用户继续执行另外一个任务。系统依旧运行,用户也依旧工作,就算出现了用户的反馈回路,一切都依旧进行。从金融行业到医疗领域,很多实时监控应用程序就是这样的系统。
最后,我们来看看最复杂的交互模式:真正的对话。这在人和人之间的交流再寻常不过,但若发生在人和机器之间就是另一回事了,因为对话的构成是很复杂的。只要想一想我们如何通过字词、音调、面部表情、身体姿态、潜台词和上下文来相互对话,就能明白要有巨大的信息量被迅速交换和处理。当然,大部分人机对话远没有这般复杂。
一个简单但典型的例子是使用移动设备来导航。当用户频繁地移动并向设备提出请求时,设备就不断地更新位置信息,向用户反馈以及指出方向。实现对话模式的交互是交互设计和工程中最紧迫的挑战之一。各类模式的交互帮助用户完成不同的事情,实现起来各有难度。我们可以根据用户类型、任务目的和交互发生的语境来选择合适的交互模式。
1.2.2 消息与交互
交互的建立需通过系统和用户之间的双向消息传递。消息可以是文本、语音、颜色、视觉反馈,或是机械和物理输入及反馈。在某些场景之下,眨眼是和按下按钮一样清晰而重要的消息。交互设计师经常考虑的是,如何在用户和系统之间建立简单明了的方式,以便双方构建、发送和接收消息。
在设计和实现交互应用程序的时候,最大的一个难题是,系统怎样看待来自用户的消息,以及用户怎样看待来自系统的消息。一个应用程序的交互自由度越大,允许用户和系统执行的任务越多,消息越复杂,则越容易引起其中一方对消息的误读和不解。当消息无法被理解,就不仅要通知发出消息的一方“消息未被理解”,还要让它知道怎样解决这个问题。如果我听不懂对方的话,我就会让他再重复一遍。如果我点击了一个不存在的页面链接,服务器就会显示一个错误信息页,告诉我“此网页不存在”。双方的自由度越大,出错率越高,计划外的消息越多,就越需要告知其中一方,另一方理解了什么,是怎样理解的。
想象一下两个成年人之间的对话。在成功对话之前,他们经历了多年的“用户培训”——学习语言、行为、价值观等。丰富多彩的对话正是建立在这样的基础上。培训用户,让用户知道系统能理解什么消息,系统发出的消息又是什么意思非常讲究技巧。常见的数据网格是比较容易让人理解的方法,大部分电脑用户都熟悉数据网格的概念,知道什么能做,什么不能做,懂得从中选取他们需要的东西,大概看得懂错误消息的意思并明白怎样运用。如果你要用新型的控制方法或者界面,就必须给用户提供学习的途径,让他们去了解你的系统是怎样运行和怎样使用的。
交互系统的丰富性和实现它的难度是密切相关的:交互越是丰富,越是容易出错。所以设计师会花很多的时间和精力,试图建立“可预期体验”,这种交互体验来自用户的其他知识领域或交互经验,或者可用于用户的其他知识领域或交互经验。设计界流行的“最小惊讶原则”正说明了应该优先选用熟悉的交互方式,因为相对于全新的交互方式,这种方式用户的学习曲线要平滑得多。用户需要很长的时间来学习系统如何反馈,如何根据反馈作出调整。
1.2.3 界面与交互
消息(如文本提示)是系统反馈的重要部分,而界面也是交互通信中不可或缺的,它是交互双方之间沟通的桥梁。界面可以是屏幕、控制面板、互动墙,或者只是一个麦克风和一对音箱。用户和系统共享界面的资源以收发消息。界面设计本身就是一个很大的主题,但只要考虑到它对交互设计的意义,则也不是漫无边际的。
界面就是用户和系统之间沟通的媒介。这引发了一系列的话题和考虑,包括可能性、效率和风格等。我们平时跟别人讲话,不知不觉间已深受沟通媒介的影响,例如打电话和面谈,显然面谈的时候会使用更多的手势和面部表情等非语言方式,沟通起来更直接;打电话时则更多使用语调和语气。所使用的工具和方式直接影响到我们的做法和效果。富功能性、表达力和吸引力的界面对建立交互方式非常重要。一个具吸引力的界面让用户使用起来心情愉快,其中颜色、文本、对称、声音和图形都是至关重要的通信元素,直接影响系统在用户心目中的形象。这一点也不稀奇,大家都喜欢好看的东西。至于怎样让界面吸引人,则因情况而定,取决于你面向的用户以及用户需要达到的目的。除了好看,大家还喜欢好用的东西。界面的功能性影响到系统是否能很好地完成任务、用户是否能把系统使用得恰当自如。就算系统可看作在黑盒中运行,仍然需要一个功能化的界面告诉用户他输入的消息起到什么作用以及其他的反馈。
必须指出的是,交互远不止是使用界面。以最常见的人机交互——用手机打电话——作为例子,我们很容易会简单地认为这是用户和物件之间的交互。你拨号,就能找到电话另一头的某位;有人找你的时候,你的手机就会响;对谈的时候,手机在收发声音。这个简单的交互过程之所以重要,并不是因为它是人和物件之间的交互,而是因为交互发生的语境:你可以在几乎任何地方打电话。在手机出现之前,打电话需要电话线;而现在,一部手机在手,你只需要一个号码(电话账户)。就算人不在家也不在办公室,也依然可以联系到。在手机刚一出现的时候,用户就已经知道怎样打电话和接电话,因为用户界面的总体形态早就确定了,与以前打座机没太大区别。真正具创新性的用户界面,其实是很难被接受的,通常需要大量工程方面的考虑和工作,以确保界面正确运作;除此之外,还需要大量的用户培训和再培训。多年来,用户界面方面革新性的创造屈指可数:键盘的发明、Doug Engelbart的鼠标(我们今天所用鼠标的原型)、Ivan Sutherland的绘图板、桌面图形用户界面(Graphical User Interface, GUI),以及现在兴起的电容式触摸屏。以上这些都体现着技术的进步和工程的力量,它们改进甚至改变了人们使用电脑的方式。革新性的界面不仅会塑造一种工具的样子,更重要的是重新定义使用一种工具的可能性。
1.2.4 交互语言
任何一种交互都需要一套相应的词汇。例如,你要用鼠标把桌面上的某个文件删除,你会说“选中该文件,然后把它拖到回收站”。事实上,对你这个动作,系统并不是完全如你这般理解,但没关系。重要的是你明白你可以做什么动作,而对于同一个动作,系统有相同的理解,并作出你所预期的响应。建立一个有意义、有效和有结果的交互,就像创造一种语言或代码,需要交互双方对符号的意思和动作指令的意义有一致的协议。而同一个符号或动作,在不同类型的界面和交互中, 含义会相差很大。
各式各样的交互种类繁多,本书将会探讨其中某些类型,但不要把以下内容当作分类清单。人和电脑之间的交互遍布我们生活和工作的方方面面,丰富的种类之间,关系千丝万缕,就算只提及最常见、最普通的几种,也不可能将它们毫无重叠地严格分类。
物理(实物)操作
这是电子类和多功能人机交互中最早出现的交互界面。汽车和收音机是最早的两个具备多种界面元素的常见机器,而在它们出现之前,机器一般都只有一个开关、一个功能。用户的注意力一次只会集中在一个任务上。收音机和汽车的出现带来新的挑战,这些机器由非专业人士操作,并且这种操作不是单一的。对于汽车,操作包括常规的速度和方向以及突发的其他任务。它的界面应该是一个操纵装置,有时它对应着一种状态,而这种状态可通过拉动开关或按下按钮来激发;有时它对应着一种范围,这个范围可通过转动旋钮或推动滑块来设置。界面不仅让用户设置参数的值,还通过标识滑块、旋钮、仪表盘和开关,让用户确认这些值。仪表盘、示波器和其他反馈功能的界面元素,让用户迅速修改信息而无须去碰及他们正在操作的实物。这就需要让用户在操作控件的同时,可以监控多种信息。对控件的物理操作是交互方式中最重要、最有趣的一种。
代码输入
在计算时代开始之初,典型的交互场景就是用户坐在一个终端前面,输入代码指令,计算机运行,显示器以文本方式输出结果。这就是驱动式交互,即用一套预设的可识别的系统指令去操作机器。用户需要了解这套指令,或者起码能自如地在如此简陋的界面上寻求帮助信息。键盘当然不仅仅用来敲指令,不要忘了还有快捷键。例如,深受广大程序员喜爱的撤销组合键Ctrl+Z,普遍出现在各种应用软件中,包括文档编辑软件、图片处理软件和浏览器。 快捷键其实和命令行没区别,但它能让用户在不分心的情况下,轻易快捷地执行或重复一个操作。
鼠标操作
这是目前最常用的人机交互方式,常见的应用和软件界面都是按鼠标交互来设计的。鼠标交互的语言已被广大设计师和用户所熟悉,包括拖放、双击,以及单击保持。在不同的应用中,鼠标交互语言的意思不尽相同,也没有严格的标准将它们规范和固定下来。就算在同一个应用中,一种特定的操控方式也可能同时具备不同的意思,用户需要通过应用给出的反馈去学习在不同场景下的意思。
出现、位置和图像
利用参与者或用户的出现和退场,是一种简单又直观的交互方式。可以通过检测重量、运动、光、热或声音来判断用户的进入和退出,通常用作开关,启动或结束一段进程。这虽然很简单,但却是交互中强大的基础:把用户亲身请进来,把人物的出现、位置和图像信息利用起来。最简单的例子就是自动门,人靠近的时候自动打开。另一个例子就是Theo Watson的作品Audio Space。进入作品的观者头上戴着一套包括耳机和麦克风的装置,在某点录下自己的声音,留给下一位走到同样位置的人去听;而当前这位观者也能听到之前的人在这一点留下的声音。这让人感觉到每一段声音信号都是从它被记录下来的那个位置发出的。我们可以把人的身体看作一个开关,或者是一个图像——我们可以把它拍摄下来分析而获取有用的信息。这个关于身体“化身”的话题能引申出大量丰富迷人的交互方式,我们把这类交互手段称为“计算机视觉”——摄像头捡拾图像作为输入,像素化并分析。本书稍后会讨论如何使用计算机视觉技术来检测运动甚至识别图像中人脸的位置。
触感界面与多点触控
这本书还在写的时候,就已经出现了苹果iPhone手机和微软Surface平板电脑等使用多点触控界面的设备。这些产品日新月异,我和编辑们都感到本书内容难以追赶上技术前沿。不过,这种使用手势界面的交互,其设计的基本理念和构建的基础方法是不会变的。关键在于弄清楚使用过这类产品的用户习惯什么手势,例如用开合两个手指去拉大或者聚拢,转动两个指头去旋转,通过手指的轻敲选中对象。事实上,手势不仅仅用于软件应用,在机场洗手间,我们挥动手掌让自动水龙头出水,让厕纸架出纸,让干手机出风。我们把这套手势语言用在交互中,使得交互变得像普通语言一样自然,同时又像图标或电子游戏中的按钮一样语义明确。
手势
手势是一种引人入胜的交互模式,因为它和签名、书写和身体的物理性非常相关。它的强大之处在于让交互脱离了非直觉的键盘和鼠标。手势一般用于触摸屏界面、光标移动或书写工具中,以及绘图软件、简易导航、自适应技术或供儿童使用的应用中。这方面的前沿探索多不胜数,从手写识别系统和新型输入法(如Swype),到通过视频捕捉的手部动作识别系统。
人声和语音识别
人声识别是指经过计算机编程,识别出特定词语或短语,并据此执行相应的任务的过程。指令可以简单到只是把人声当作开关来触发一些事件,也可以复杂到识别出不同的词语和命令。按既定的声音模式,计算机逐个识别出词语或指令,然后把它们连在一起,和模式库中的数据作比对,从而判断出是什么命令。而语音识别则是更高级的主题,其过程和简单的指令识别引擎类似,但使用更庞大的数据库和更强大的工具去判别输入的信息。当然,人声不仅包含语音信息,它的音量、声调、发声时长等参量都可以用于交互。
以上简短地列出了交互设计中的热门话题。本书有限的篇幅不足以涵盖交互设计的方方面面,但你能了解到支撑这一切的基础,获取进一步学习所需的相关信息,并应用于你的设计工作中。
访谈:Matt Cottam
Matt是Tellart公司的CEO和联合创始人,活跃于学术界和设计界,他经常参与国际会议并发言,为企业带来丰富的启发和正确的指引。自1999年开始,他在罗德岛设计学院以工作室形式授课,涵盖从极端环境下的设计到物理计算的广泛内容。Matt也是瑞典于默奥设计学院(UID)的客座教授,并在多所高校担任访问教师,包括丹麦哥本哈根交互设计学院(CIID)、挪威奥斯陆建筑与设计学院(AHO)和中国中央美术学院(CAFA)。
硬件草稿的意义何在?
Matt:20世纪90年代初,我刚去罗德岛设计学院读书。那时只有医生能用得上车载电话,而那电话跟鞋盒子差不多大。当时的网络就像一个带显示器的可在其上点击的传真机。五年后我毕业时,学弟学妹们已经全都有手机,每个人都有好几个电子邮箱,浏览器里也已经是丰富的彩色画面、动画和声音了。在当时已经很明显,势不可挡的数码产品和网络技术一定会改变我们使用、感知和设计产品的方式。
在过去五年里,我们做了一些尝试。我们制作了一些看起来像是数码产品的木块和泡沫块;用乙酸粘合打印组件,把屏幕上的内容呈现为实物模型;和学生一起玩角色扮演,去体验和探索交互系统中的行为。这些尝试效果都不错,但毕竟我们以往所受的是传统手工艺训练,我们还是遗漏了一些重要的问题。你要设计一把椅子,一般可以到一个作坊里动动手,切割、塑型、组合不同的材料:钢铁、铝、皮革、夹板、塑料、软木、泡沫;管子、棒条、薄板、树脂。你也可以尝试某种工具(如点焊机、热成型机)的功能和性能,看看它们是怎么燃烧、熔化和拉伸材料的,想想怎样发挥它们的最佳性能。你还可以把特定的工具用在特定的材料上,获得极尽其材料特性的尺寸和形状。你将会创造出一种和谐的形式,因为它来自材料特性和制作方法的独一无二的结合。
我读书的那个年代,设计师没法轻松直接地在软件和电子工具上画草图,真实产品形态无法用软件表达出来。不像一把椅子,你可以坐上去感受到它,而软件和电子工具无法提供真实的体验。
1999年我们创立了Tellart。工作室里,工业设计师、平面设计师、电子工程师和软件工程师紧密合作,能够迅速草拟出一个和真实产品交互的方案。我们一直活跃在“硬件草稿”和“物理计算”社区,在和学生及客户的合作中,开发了不少硬件和软件工具。到目前,就算没上千也有上百个这样的工具把设计和工程结合起来。而连接设计和工程正是本书要教给大家的。现在Tellart不仅拥有图形界面和触感界面这一类工具和平台,我们还提供内容和服务的全套方案。
你是怎样发现一些关系和课题值得尝试和研究的?或者说,假设你已经发现了一些关系,你怎么把关系中的各个方面最优地结合起来?在你的设计实践里,这种探索是怎样的一个过程?
Matt:前几天我收到一封信,告之我在罗德岛设计学院教了12年的书。此外我还在乌默奥设计学院教了6年,在哥本哈根设计学院教了3年。在Tellart公司里,几乎每个人每年都在学校里教点课。我们在中国大陆和中国台湾也开设有课程。我经常被问到怎么在学校和公司之间安排好时间。其实很简单,学校和公司是共生的。学生们求知和创造的劲头都很足,我们和学生一起在工作室的台锯上开工,在应用程序界面上开发,不断地去了解现在的设计师有什么需求,了解他们理想中的工作环境和条件是怎样的。我们开发了一套全新的并一直演进的硬件和软件工具包Sketchtools,拿它给学生们测试和试用。学生们体验到新的实验性的工作方式,而我们则能看到Sketchtools在这些聪明人手里会有怎样的可能性。我们把这些都记录下来,带到国际会议上分享,带到客户面前展示。现在我们整个团队几乎都是由以前合作过的学生组成的。我们在学校里的工作并不能称为“研究”,因为那些都不算是学术或概念上的探索,但却非常富有策略性。
对于日常的设计工作,哪一种工具你觉得是最有影响力和最有用的呢?
Matt:在Tellart工作以及跟学生合作的时候,最美妙的事情就是使用不同的硬件和软件,像是在用不同颜色作画一样。想只用一种工具来做事,基本是不可能的。琢磨怎样把好几种工具结合起来使用,是最费脑子也是最容易出新点子的。
开源对你来讲有何意义?在你的实践中,分享和交流起到多大的作用?
Matt:我们的Sketchtools工具一直开源,并且会继续下去。我们跟一起合作的学生有个协议:你与我完全分享,我也对你毫无保留。我们在课上交流所有的观点,我们的工具包开放给任何时候参与进来的任何人。我发现,想要独自占有某些知识并且想独占鳌头的时候,会出问题,并且很快就落后于人;乐于分享的人都明白这一点。我并不真正想看到什么惊世巨作,倒是希望学生每天都有新的思考,再微小的想法都好,而不是一辈子只发一次光。当然,对客户需要遵守商业上的机密原则,这就是另一种做事方式了。开源和商业机密是平行的、互不相扰的,甚至有时还是共同促进的。
你怎样把纸上的或者视频里的概念变成一个真实的物理原型?如果可以继续这样想,你又是怎样把物理原型变成电子原型(至少带一些活动元素的那种)的?
Matt:这样说有点简单化了,但我们的确有越来越多软硬件工具,这些工具设计师使用起来并不比操作铣床或热成型机难。我们的工作台上经常堆满了Arduino、传感器、电机、铅笔稿、塑料、假毛皮,还有粘土。在教课和面对客户的时候,我发现“原型”这个词的定义有点问题:它是一个可以马上拿去制作加工的确定的模型呢,还是一个开发中的草稿模型?我们倾向于使用后一种定义,原型可以是各种阶段的草稿模型。如果说概念要使用草稿模型来开发,那我觉得铅笔、电子元件、软件和物理模型都可以用,并且是同时用到——这是试验台,设计师在上面把概念做出来(在此过程中还有不断的新发现),而不仅仅是把既定的东西搭建出来。
对于初学者,你认为什么技能是最有帮助的?
Matt:画图和拍片子。你可以说我守旧,但我坚持认为任何一个称职的专业设计师必须能画。并不是要求你画出多精美的肖像,我的意思是有能力把想法呈现在纸上,让别人明白。想得再远一些,现在软件和服务越来越抽象,数据和信息越来越无形,网络越来越复杂,所以在团队工作中,设计师如果想比较顺利地与不同领域(市场、商业巨头、制造业和技术)的人交流,那么即兴画图能力就异常重要了。交互设计师需要意识到他的产品和服务要给用户长期使用和多方面的体验,所以构建一套用于表达信息变化和交换的可视化词汇(例如故事板)是非常重要的。一位交互设计师,如果擅长画图,能搭建包括电子和软件部分的中低仿真度的草稿模型,同时还能拍拍片子,用来向别人讲解他所开发的东西在文化上和经济上是如何相关的,就差不多了。
可以略微介绍一下NADA项目吗?
Matt:NADA是Tellart的第一套工具包,最早在2001年发布,项目负责人是Brian Hinch。这个工具包让设计师比较容易地使用上Arduino的各种前身(如Teleo和Phidgets)和多种MIDI设备,并且把它们和Flash相连。2002年的时候,设计专业的学生只花了几个礼拜,就把RFID(Radio Frequency Identification Devices, 无线射频识别设备)和网页连接,并且把网络跟光和电机连上。这些工具在现在看起来没什么,但在当时对我们和学生来说帮助都很大。
只要做过网页项目的,都会对Flash比较了解。有无数的书、在线教程和课程教设计师用Flash。
Flash,特别是NADA出现时的Flash v4,可以说就是一个图形编辑环境,例如可以用它来画一个蓝色正方形,单击的时候点亮灯泡等。对设计师来讲,这比写HTML(Hypertext Markup Language,超文本标记语言)直观形象多了,在HTML里处理图还要引用目录下的图像文件。
不少学校已经把Flash相关软件纳入年度采购计划里(当过老师的都知道,一般买一套软件要申请好长时间)。
NADA使用Java写的服务器。在我们早期的交互文件里,教程是用Java和Flash做的,这促进了工程师和设计师的合作。
文件里含有一些代码,但更重要的部分是可视化设备诊断界面,可以检测接入了哪个设备,读取所有模拟输入和PWM(Pulse Width Modulation,脉冲宽度调制)输出的数值。把这些数据全都记录下来很简单,但大部分使用NADA的设计师一直开着这个窗口做实时数据跟踪。这个界面还带了个互动式的电阻计算器,你可以从传感器的输出直接观察和调整效果。
我们在众多的客户和教学项目里使用NADA。大部分情况下,NADA用来做草图和原型,但也经常在最终的成品中应用。
NADA还有NADA Mobile,苹果应用和服务器相结合,使设计师仅用JavaScript、CSS(Cascading Style Sheet,层叠样式表)和我们定制的功能来开发iPhone/iPod应用。用NADA Mobile v2可以把Arduino和苹果设备对接,还可以把模拟传感器接到苹果设备上的耳机/麦克风插孔来控制应用,硬件捡拾数据变得非常简单。我们最近的课程也包括了相关的内容,例如怎样把苹果和安卓设备连到Arduino、ZigBee以及它们的组合上,教大家通过日常的移动设备应用软件来做设计草稿。
我们还开发了若干硬件工具包,这些都是Sketchtools系列的一部分。
NADA只是用来做这一类事情的一个工具,很多其他工具在这本书里也有介绍。Sketchtools的更新版本将更关注现有的硬件和软件工具的组合,而减小从草稿开始搭建的功能,并强调记录设计摘要,促进我们、我们的客户和学生去考虑目前的可能性。我们并不是要刻意制作一些特别先进的工具,只是恰巧身处一个美好的时代,人们的想法很多,但实现想法的方法还不够。现在有很多项目都在开发这些神奇的工具,很多朋友在参与。有了这些工具,我们就可以把更多的时间用于创造美妙的体验。
我对你教的那门“开关是什么”的课程很好奇,在这个入门课程里,学生要做一些不同的交互作业和项目。
Matt:2001年我在罗德岛设计学院教一门交互设计课程,我把它的内容简化了一下,难度降低了一点,就有了这一门“开关是什么”的课程。一个学期的工业设计课的容量是远远不够去把任何一个用户界面琢磨透的。所以这门课主要是探究一下技术方面的需求、用途和意义,而并不是技术本身。我让学生去金工、木工和造型车间,尽量多捡一些好玩的边角料。每人做20份作业,尝试各种方式将人的手势或者环境参量(光、风或者水流……)用作闭合电路中的“开关”。不一定是电子上的概念,例如可以用笔在纸上画两根线,把纸对折,两根线就连起来了。在这里,“电路”是把两个部件连起来的意思。就算到现在,学生上这门课之前对Arduino等技术已经很精通,仍然能在课程里获得很多创造力方面的激发。没有任何门槛和障碍,学生自如地摆弄他们找到的材料——一捆塑料线、羊毛带子、打孔铁皮什么的。我们鼓励学生去仔细观察材质和形态,考虑尺寸和分析成分。一份作业通常在24小时内完成从初步概念到评价的全过程,速度是很关键的因素。
“开关是什么”还有一个进阶课程,缘起是我们在学校的废品堆里挖回来一堆键盘。我们把键盘的微控制器改装成这种“开关”(这次真的有些电线了,但还是没有电池),然后在Flash里捕捉按键动作。理论上,一天的教学时间,加上零成本的材料,学生是能做出一些复杂的事情的,例如“打开门能播放网页上的视频,关上门视频也就停止了”。而这个用门来控制视频播放的作业是我最喜欢的。廉价材料最大的好处是,学生用起来就跟铅笔或者黏土一样放得开,不需要小心翼翼。这些能屈能伸的粗糙材料最能激发创意。