The Swiss Cheese model, pt. 2

Marcin Wichary

スイスチーズモデル pt. 2

原文は Marcin Wichary により に公開されました。 このブログを購読する

1.

おっと、作業の真っ最中に見つかってしまった。友人のためにWindowsのバージョン一覧を作っていたんだ——よりによってGoogle Docsで。

簡単なはずだ。Wikipediaから持ってきて少し手を加えたけど、まだちょっと見栄えが悪い:

ここの詰まった余白があまり好きじゃない。もう少し広げてみよう、0.08インチくらいに。とりあえず最初の列を選択して数値を打ち込んで……

何だこれ!!!

うわ。一体何が起きたんだ? よし、⌘Zで元に戻そう……

ああ、ダメだ。Escを押せば……

くそ。

2.

さて、実際に何が起きたのかを正確に説明しよう:

  • まずBackspaceを押して、すでに入っていた0を削除した:
  • 「.08」と入力し始めた。「.」を押した時点ではまだ大丈夫だったが、かなりがっついたツールチップが表示された:
  • 「0」を追加した途端、Docsが「.」を削除してしまい、結果は単なる「0」になった:
  • さらに「8」を追加すると、今度は先頭の0が削除され、結局「8」だけが残った:
  • ページはその「8」を受け取ると、8インチもの余白(意図した100倍!)を適用し、そのままリアルタイムで表示した。結果、まるで何かが致命的に壊れたかのように原型をとどめない表になってしまった、
  • ⌘Zを押しても何も起きなかった、
  • Escを押しても入力欄のフォーカスが外れただけだった。

ここで起きた一連の推論とバグの流れは、こう説明できると思う:

  • まず、入力した数値はどれもすぐに左側にプレビューされる。これは概ね気持ちのいい挙動だ!
  • 入力は確定時(Enter)に補正するのではなく、入力中にリアルタイムで書き換えられている。これは僕なら推奨しないが、この設計判断自体は理解できる。
  • たとえば「08」とだけ打てば「8」に書き換えられる。数値を正規化して一貫させるという意味では、ある程度理にかなっている。
  • 「.1」と打てば「0.1」に書き換えられる。これもまあ、同じ考え方で納得できる。
  • ところが「.0」と打つと、単なる「0」に書き換わってしまう。これはバグか、想像力の欠如だと思う——本来なら「0.0」になるべきだ。
  • ⌘Zが効かない。これはシステム側の数値書き換えがアンドゥスタックに積まれていないバグだと思う。(実際、それどころか——⌘Zを何度か押すと数値が「80」に書き換わってしまい、状況はさらに悪化した!)

つまり、僕の「.08」は「8」にぐちゃぐちゃにされ、そのまま即座に適用され、簡単には元に戻せなくなったわけだ。

3.

これはスイスチーズモデルが実際に起きている素晴らしい例に思える:

もし下記の項目のうち、たった一つでも挙動が違っていれば、こんな事態にはならなかったはずだ:

  • 数値が入力中にリアルタイムで書き換えられなければ、問題は起きなかった、
  • 「.」が強引に「0.」に書き換えられなければ、問題は起きなかった、
  • ライブプレビューがなければ、書き換えに気づいて手で直せたはずで、画面に巨大な変化が現れてデータを失ったかのようにパニックになることもなかった、
  • 入力欄のアンドゥがきちんと機能していれば、パニックの瞬間を元に戻せた、
  • Escで確定ではなくキャンセルできていれば、同じく元に戻せた。

これらの判断はどれも単独では理にかなっていて、危険にも重要にも思えなかった。それらが重なったとき、チーズの穴がぴたりと一直線に並び、かなり恐ろしい体験が生まれたのだ。

この事例を共有してくれたEzra Spier氏に感謝する。

この記事は「muse-spark-1.2-contributor」を使用して翻訳されました。

コメント