第8章 インタラクションデザイン
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
細部まで完璧に仕上げよ。ただし、完璧に仕上げられる細部の数は限られている。
ジャック・ドーシー(Block創業者)
アフォーダンス( )とは、製品が意図されたか否かを問わず、使用される可能性のある方法である。ソファは座ることを可能にするが、猫は引っ掻くことも可能だと発見する。座れることと引っ掻けることの両方がアフォーダンスだが、マニュアルに記載されるのは片方だけだ。
アフォーダンスは危険を伴うこともある。野外コンサートで椅子が固く縛られているのに気づいたことはないか? こうした縛りは椅子のどのような望ましくないアフォーダンスを防ごうとしているのか? 椅子が避難通路を塞いだり投げ飛ばされたりするのを防ぐことで、コンサートを安全にしているのだ。
安全でないコードやプロトコルが原因で、デジタル世界ではスパムメールやプライバシー侵害、マネーロンダリング、フィッシングなどの望ましくないアフォーダンスが蔓延している。避けられないものもあるが、より先を見越した設計によって悪用を防げたケースもある。
ドン・ノーマン は、その古典的な著書『The Design of Everyday Things』の中で、第2章で議論のフレームとなったシニフィアンの概念とともに、アフォーダンスのこの定義を普及させた。アフォーダンスが製品ができることであるならば、シニフィアンは、その製品で何をすべきかを決定するために私たちが使う手がかりである。
椅子は投げられるというアフォーダンスを持っているが、そのように使用できることを示す強力なシニフィアンは存在しない。投げられることを示したいアイテムは、握りやすい形状、手にフィットするボールのような形状、空力的なデザインなどでそのことを示すことができる。
シグニファイアとアフォーダンスの違いを明確にするため、クラスの公開インタフェースを考えてみよう。JavaやC#のようなオブジェクト指向言語では、公開メソッドはアフォーダンスであり、publicキーワードはクラス外の呼び出し元に対するアフォーダンスを示すシグニファイアだ。privateはクラス内の呼び出し元に対するシグニファイアに過ぎない。
Pythonではdefがメソッドのシグニファイアだ。Pythonにはプライベートメソッドが存在しないため、慣習として開発者は外部から呼び出されないことを示すために名前に_を付けるが、これを強制するものは「信頼に基づくシステム」だけだ。ある意味、これは外部呼び出し元からメソッドを隠すことになる。これは「立入禁止」の看板のようなアンチシグニファイアと呼べるだろう。
クラス外の呼び出し元から見ると、 メソッドは表8-1のように分類できる。
| 名称 | アフォーダンス? | 意味されるもの? | 注記 |
|---|---|---|---|
publicメソッド(Java/C#) |
はい |
はい |
呼び出し可能。ユーザが期待する通りだ。 |
privateメソッド (Java/C#) |
いいえ |
いいえ |
呼び出しができない。ユーザもそれを期待しない。 |
通常のメソッド(Python) |
はい |
はい |
|
アンダースコア付きメソッド(Python) |
はい |
いいえ |
呼び出し可能だが、先頭のアンダースコアは呼び出すなと示す。 |
実装されていないため失敗する公開メソッド ... |
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access