HN 日本語サマリー

← 一覧へ戻る
プログラミング

Figmaのバグだったようでバグではなかった話(2021年)

A story of a Figma bug that wasn't a bug at all (2021) (aresluna.org)

20 pointsby jllyhill1 コメント

要約

この記事は、Figmaで報告されたShift+2キーの挙動に関するバグについて解説しています。このバグは、通常のキーボードでは機能するものの、テンキーのShift+2では意図しない動作をするというもので、Windowsでのみ発生していました。この奇妙な挙動の根源は、1977年のIBM System/34にまで遡るキーボードレイアウトの歴史と、それに伴うNum LockやShiftキーのショートカット機能に起因することが明らかにされています。

全文翻訳

Marcin Wichary

2021年5月20日 / 28ツイート / 19写真

Figmaのバグだったようでバグではなかった話

これは2021年のTwitterスレッドのアーカイブです。その日、Figmaでは様々な社員がソーシャルアカウントの「テイクオーバー」を行うことが許可されており、私もその一人でした。


これはFigmaのバグだったようで、実際にはバグではなかった話です。

2019年11月、ユーザーの一人が次のように報告しました。

[画像: Shift+2のキー入力に関するバグ報告]

要するに、通常のキーボードでShift+2を押すと機能しましたが、テンキーのShift+2を押すと機能しなかったのです。

不思議なことに、このバグはWindowsでのみ発生し、Macでは発生しませんでした。

[画像: Windowsでのみ発生するバグの報告]

このバグは、なんと…1977年まで遡ることが判明しました。

当時、コンピューターメーカーとしてトップだったIBMが、勃興しつつあった小型パーソナルコンピューター市場の開拓を試みていた時期です。(それ以前の同社のコンピューターの多くは、下の画像のようなものでした。)

[画像: 1970年代のIBM製コンピューター]

1977年、IBMは中小企業向けの「小型コンピューター」であるIBM System/34をリリースしました。これには5251というキーボードとディスプレイが付属していました。

System/34は依然としてかなりの高価なマシンで、5桁または6桁の価格でした。その高額な価格の一部は、美しいビームスプリングキーボードにありました。右側にはテンキーがありましたが、矢印キーは一番左に配置されていました。(当時のコンピューターでは、矢印キーの重要性はそれほど高くありませんでした。)

[画像: IBM 5251キーボード]

その後、1980年にIBMはSystem/23、別名Datamasterという別のコンピューターをリリースしました。これは持ち運び可能でしたが、それでも注意が必要でした(重さは約45kg!)。価格も9,000ドルと、はるかに安価でした。

[画像: IBM Datamaster]

このマシンはこのような見た目でした。IBMは、IBM 5251キーボードのレイアウトをほぼそのまま再利用しましたが、新しいデザイン言語と当時としては最新のバックリングスプリングスイッチを採用していました。

私の知る限り、このマシンは大きな成功を収めませんでした。しかし、それに続く1981年のIBM 5150は成功しました。おそらく、より一般的な名称であるIBM PCとして耳にしたことがあるでしょう。

IBM PCはかなり迅速なプロジェクトだったため、デザイナーはDatamasterのキーボードをそのまま流用し、一部のキーの機能を変更することにしました。左側のブロックはファンクションキーに置き換えられ、矢印キーは右側に移動しました。

当時のスプレッドシート(これも当時としては新しかった!)やメニューを操作するために、1977年よりも矢印キーの重要性が増していました。しかし、5251レイアウトの制約により、テンキーとスペースを共有する必要がありました。

そこでエンジニアは、矢印キーとテンキーの間でモードを切り替えることができるキーを作成しました。彼らはそれをNum Lockと名付けました。

[画像: Num Lockキーの概念図]

しかし、これはあまり良いものではありませんでした。スプレッドシートをしばらく使っていると想像してみてください。数字を入力し、次に矢印キーで別のセルに移動し、別の数字を入力したいとします。モードを切り替えるためにNum Lockを何度も押すのは、遅く、イライラし、作業の流れを妨げるでしょう…

…特にNum Lockにはインジケーターランプさえありませんでした。

(文の先頭の文字を大文字にするためにCaps Lockを押すたびに、その後もう一度押す必要があり、現在の状態が見えないと想像してみてください!)

そこでエンジニアはパワーユーザー向けのショートカットを考案しました…そして、Caps Lockの世界ではShiftが自然な対となるキーであったため、これも同様の機能を持つことができました!

解決策:Shiftキーを押しながら矢印キー/テンキーを押すことで、現在のモードを素早く反転させることができるのです。

これは巧妙でした。結局、もう片方の手は自由なのですから、このようにShiftキーを押す—一部の人はこれをスプリングロードモード、あるいは「準モード」(RIP Jef Raskin)と呼んでいます—方がはるかに高速です。数字を入力し、Shift+2を押して次のセルに移動し、計算を続けることができました。

…そして、この時点でFigmaのバグで何が起こっていたか、もうお分かりでしょう。

さらに、もう一つ興味深い要素があります。

1980年代後半、IBMは多くの問題が報告されていた5150キーボードのレイアウト変更の要望に応え、ついにキーボードレイアウトを変更しました。その結果、多くの人が「キーボードの神」と呼ぶ、現在も使われている100キー程度の拡張レイアウトを持つIBM Model Mが登場しました。

そのレイアウトでは矢印キーはテンキーから分離されていましたが、5年が経過していたため、すでにNum Lockの状況に慣れている人もいたため、それは維持されなければなりませんでした。人々の運動記憶を乱すわけにはいきません!

そしてNum Lockを維持する必要があるなら、Shiftショートカットも維持しなければなりません…そして、まさにそれが、決定から約40年後にShift+2バグを報告したユーザーに起こっていたことなのです。

MS-DOS時代のショートカットは、Windows 1.0から10までのすべてのバージョンでコードとして維持されていました!

そして、Figmaでは、通常のキーボードのShift+2は「ズームトゥセレクション」として機能しましたが、テンキーのShift+2を押すと「↓」として解釈され、明らかに異なる動作をしていました。

これがMacで問題にならなかった理由も説明できます!悪名高いことに、最初のMacには矢印キー(プログラマーにマウス中心のソフトウェア作成を強制するため)もテンキーもありませんでした。

1987年にこれらが追加されたときには、どちらもセクションで分離されたキーになっていたため、Num Lockが必要になることはありませんでした。

[画像: 初期Macのキーボードレイアウト]

幸いなことに、その時点ではブラウザは、一方のShift+2と他方のShift+2を区別するための十分な情報を提供してくれたため、バグを修正してクローズすることができました。

議論の余地はあるかもしれませんが、それは決してバグではなく、単に古く、ほとんど文書化されていない慣習だったのです。

そして、この教訓をどのように学んだか?私が取り組んでいるキーボードの歴史に関する本の調査中に、1981年にこれらの決定を下したエンジニアであるデイブ・ブラッドリー氏と話しました!

David Bradley (engineer) wikipedia.org 369 / 6 / 20 May 2021 / 1:41pm

面白い事実:彼はCtrl+Alt+Delの考案者でもあります…しかし、それは全く別の話です。