ハクソク

世界を動かす技術を、日本語で。

IBMはMicrosoftがダイアログフィールド間を移動するためにTabキーを使用することを望んでいなかった

概要

MicrosoftとIBMのOS/2共同開発時の文化的ギャップを描写。
フィールド移動キー選定を巡る両社の組織構造の違いを紹介。
現場判断と階層的意思決定の対比。
ユーモアを交えたエピソードで議論が決着。
著者Raymondの経歴と活動紹介。

OS/2共同開発における文化的ギャップ

  • MicrosoftIBMの協業における文化的ミスマッチ
    • Microsoft側:IBMを「無意味な官僚主義に陥った組織」と見なす傾向
    • IBM側:Microsoftを「規律のないハッカー集団」と捉える傾向
  • 組織構造の違いが意思決定プロセスに影響
    • Microsoft:現場担当者が自律的に判断
    • IBM:意思決定を上層部までエスカレーションする階層型組織

フィールド移動キーを巡る意思決定

  • Boca Raton(IBMオフィス)での実際のエピソード
    • ダイアログボックスでフィールド移動に使うキーの選択が対立点
    • Microsoft担当者はTABキーを選択
    • IBM側はこの決定に不満を示し、Redmond本社のマネージャーにエスカレーションを要請
  • Microsoftマネージャーの回答
    • 「あなたがBocaにいる理由は、私がBocaに行かなくて済むようにその場で決定するため」
    • 担当者はこれを「Microsoftはこの用途にTABキーを支持」と意訳してIBMへ伝達
  • IBM側のさらなるエスカレーション
    • プログラマーから7階層上のVPまで問題を持ち上げる
    • 同等の職位のMicrosoft幹部からもTABキー支持の確認を要求
  • Microsoft担当者のユーモラスな最終回答
    • Bill Gatesの母親はTABキーに関心がない」
    • この一言で議論が終結し、TABキーの採用が確定

著者Raymondの紹介

  • RaymondはWindows進化に30年以上携わるエンジニア
  • 2003年からブログ「The Old New Thing」を運営、予想以上の人気を獲得
  • ブログ内容をまとめた書籍「The Old New Thing」(Addison Wesley 2007年刊)も出版
  • Windows Dev Docs Twitterアカウントでも時折無駄話を投稿

補足

  • アメリカでは日曜日が母の日
    • TABキーについて母親に意見を求めるのは控えるべきとのユーモア

Hackerたちの意見

変だな、3270のメインフレームではタブキーを使ってフィールド間を移動してた気がするんだけど、俺の記憶ではね。
+1、ずっとIBMの標準だと思ってた。TABで移動してENTERでフォームを送信するって。
IBMのグリーンスクリーンを使ったのはずいぶん前だけど、うちのアプリではタブでフィールド間を移動してた気がする。ただ、そのために予約されたファンクションキーもあったと思う。
それ、俺の記憶とも一致してる。タブを使うのは自然だったし、マウスを使うGUIアプリに行くとタブの順番が間違っててイライラした。特にVisual Basicのアプリでね。
ミッドレンジシステムについて気になるな。AS/400は使ったことないけど、「フィールドエグジット」キーが別にあるって知ってるよ。
面白い記事だけど、IBMがタブキーの使い方に反対した理由が知りたいな。タブを入力文字と制御文字の両方にしたくなかったのかな?つまり、入力フィールドにタブを入力できる場合とできない場合があって、どれがどれかすぐには分からないことがあるよね?2026年になっても、この考えには共感するな。
そうだと思う。無数の動くパーツを持つ組織を管理するのと、ユーザーのために何かを迅速に作るのでは、全然違う懸念があるからね。
今、CAPSLOCKが「次の入力を選択する」ために使われて、TABが文字として使われる世界を想像してる。
もしかしたら、IBMのメインフレームや3270ターミナルエミュレーターと競合するからかな?
個人的には、フィールド変更にタブキーを使うのが好きじゃない。まず、これはDOSからの大きな変更だったから。DOSプログラムではEnterを使ってたし、Enterを押すことで片手で数値データを入力できたんだ。数字キーパッドにはEnterキーがあるから、左手は(紙の)ソースの上に置いたままで、右手でタイピングできた。みんなこれが早くなったんだよね(本当に早かった)。このパターンは今でもいくつかのプログラム(例えばExcel)に残ってる。多くの人(つまり、私の顧客)は、両手をキーボードに使うのが嫌だった。私たちのプログラムの多くは、Enter=タブのマッピングを許可してた。はっきりさせておくけど、重要なのはキーの「名前」じゃなくて、位置なんだ。キーの二重使用はただの厄介なことだよね。時々、キーはナビゲーターとして機能するけど、他の場合ではスペーサーとして機能する。馬鹿げてる。(Enterも同じ問題がある。)最良の解決策は(圧倒的に)キーボードにもう一つキーを追加することだったと思う。できれば数字キーパッドに。あの時代にはたくさんの新しいキーが追加されたから、振り返ると「進む」キーを追加すべきだったね。
私が解釈したのは、完全に「IBM」の理由はなかったってこと。つまり、「IBMの官僚の一人が介入して物事を止めてしまった」ということが、文化的な違いを浮き彫りにしていると読んだんだ。これはその違いについての投稿だからね。
ブラウザ内で動作するテキストエディタを設計するなら、タブキーの機能についてユーザーの期待を完全に壊さないといけないよね。この環境では、タブキーが果たすことができる二つの論理的で直感的な役割が対立してるから。エンターキーでも同じ問題が起こるし、今の時代、ctrl+crlfが改行を引き起こすのか、メッセージ送信になるのか、bare crlfやshift+crlfの動作がどうなるのか、みんな結構複雑なルールを持ってると思う。HNのエディタでは、shift+crlfとbare crlfが改行を作って、ctrl+crlfは何もしないんだけど、ctrl+crlfがフォームやメッセージの送信を引き起こすことも多いし、shift+crlfは生の改行を挿入することが多い(フォームの中でも)。bare crlfはどっちか一方をするかもしれないし、どっちもしないかもしれない!これが一般的なバインディングだけど、shift+crlfがフォーム送信を引き起こしたり、raw newline挿入にはctrl+crlfが必要だったりする例外も見たことある。こういうのは本当に面倒で、ユーザーにストレスを与える原因になるよね。長い間、MSFTのスタイルガイドはベストプラクティスの参考として重要視されてたけど、今の人たちには皮肉に感じられるかも。
この話は変だと思う。IBMは複数の製品でキーボードの名称を一貫してたし、3270シリーズのメインフレーム端末ではタブキーを使ってカーソルを次のフィールドに移動させてた。タブキーは現代のキーボードでも同じ位置にあるしね。ちなみに、IBMの端末ではフィールド間の移動が重要だったから、タブキーの反対側に「バックタブ」キーがあったんだ。オリジナルのIBM PCでは、両方の機能を一つのキーにまとめることにした。その結果、クラシックPCキーボードのタブキーには前のタブとバックタブの両方の記号が同じキーに表示されていて、バックタブの記号が上にあるからシフトを押しながら使う必要があるってことを示してる。追記:5250シリーズの端末では「フィールドアドバンス」と「フィールドバックスペース」という用語を使ってたけど、その他は3270シリーズと同じ記号をキーに使ってて、キーの位置もだいたい同じだったよ。
これがHNのコメントを読む理由の一つだね…情報ありがとう!安らかに眠れ /.
IBMで働いていた経験から推測すると、タブキーをこのように使うのは彼らが追求していた特許の一部だったんじゃないかな。マイクロソフトが使うことで「明白」とされて特許が取れなくなるってこと。まあ、ただの推測だけど。80年代には、IBMには「システムエンジニア」と呼ばれる高レベルの技術者がいて、彼らの仕事は特定のシステムのメリットについて意見を述べることだけだった。システムを書くわけでも、デバッグするわけでも、説明するわけでもなく、ただ「それは間違ってる」って意見を言うだけだったんだ。
それに、IBMが実際に使いたかったキーが何だったのかもストーリーからはっきり欠けてるね。つまり…それが最初に聞くべき質問じゃん!ダサい。
これが本物のIBM 3270キーボードだよ。左に「次のフィールド」キー、右に「前のフィールド」キーがあるのがわかるかな。IBM 3270はフォームを記入するためのデバイスだったんだ。メインフレームが端末に空白のあるフォームを送信して、端末がユーザーにその空白を埋めさせる仕組み。端末のハードウェアは、ユーザーがフォームの静的部分を上書きするのを防いで、数値フィールドなどの他の制約も適用できた。これらはすべて端末で行われていたんだ。フォームが記入されたら、ユーザーはENTERを押して、完成したフォームがメインフレームに一つのトランザクションとして送信される。これにより、一つのメインフレームが大量の端末をサポートできた。ユーザーはタイピング中に遅延を感じることなく、フルスピードでタイプできたし、しばしば画面を見ずに打っていた。PCにはそんな使い方のモデルはなかった。PCユーザーは「タイプライター」を意識していたんだ。家庭用コンピュータ向けの最初の端末の一つは「TVタイプライター」と呼ばれていた。ウェブフォームにはそのモデルがあるけど、一貫性は少ないね。
確か、IBM 3270端末には2つの「Enter/Return」キーがあったと思う。一つは今の「Return」キーで、次のフィールドに進むだけで、フォームを送信しないやつ。もう一つは今の右Ctrlキーの位置にある「Enter」キーで、これがフォームを送信する役割を果たしていた。だから、IBMはタブキーに反対しているのではなく、3270を使う人が次のフィールドに進むことを期待しているから「Return」をフォーム送信キーにすることに反対しているのかもしれない。これは多くのDOSプログラムでも同じだった。Returnを押すと次のフィールドに進むだけで、フォームは送信されなかった。これがWindowsに慣れるのに少し時間がかかった理由の一つだね。
面白いことに、IBMはすでにこれを発表してたんだよね。CUAは明確にタブとバックタブがフィールド間を移動すると言ってる。だから、彼らは自分たちの基準に対抗するために七層の管理を使ってたんだね。 https://archive.org/details/ibmsj2703E/page/n13/mode/2up
> IBMは複数の製品でキーボードの名称を一貫して使っていて、3270シリーズのメインフレーム端末もタブキーを使用していた。IBMの通常の企業基準に従っていると考えると奇妙に思えるが、IBMのPCの起源に関するいくつかの本を読んだ限りでは、ボカのPCユニットがIBMにとって異常な存在だったのかもしれない。Microsoftチームにとっては絶望的に企業的に見えたが、ボカのIBMの人たちはIBMの中で「反乱部隊」と見なされていた - 彼らが見なされていたとしても、IBMの大多数はその存在すら知らなかった。ほぼ一晩で始まり(IBMのタイムスケールで)、信じられない速さで運営され、トーマス・ワトソン・ジュニア自身がそのような「スカンクワークス」を承認するために部下の意見を覆したおかげで、ボカは通常の監視、調整、制御のレベルを持っていなかった。初期の頃、ボカは通常の報告チャネルの外で運営されていて、他のIBMの部門から技術や部品を調達しようとしたときには、実際にIBMの一部であることを明確にしなければならないこともあった。
タブを好む人間として(議論するつもりはないけど)、一度ブレンダン・アイクにTwitterで彼がスペースを好む理由を聞いたことがある。彼の答えは思ってたよりも考え深かった。タブキー自体が現代のOS/UIの動作に乗っ取られてるんだ。特定のコンテキストではリテラルなタブ文字を実際に入力するのが複雑になる。特にブラウザではね。俺はまだタブが好きだけど(Goの開発者だし)、それが面倒だってのは彼の言う通りだと思う。例えば、Hacker Newsのテキストエリアにタブ文字を入れるのを試してみて。
英語が得意じゃないから、ブレンダンが君に言ったことを理解しようとしてるんだけど。昔、タブキーはシステムによって異なる方法で表現されることがあるって聞いたことがあるんだ。それで、スペースの方が安全なのは、常に同じように表現されるからなんだって。ブレンダンが言いたかったのはこれかな?
Control-shift-u、9、スペース/エンターは、ほとんどのLinuxシステムで動作するよ。説明すると、control-shift-uはユニコード文字を16進数コードで入力することを可能にするんだ。これはおそらく、使用中の入力メソッドエディタ(IME)に依存していて、私はそれを完全には理解していないけど、さまざまなデスクトップ環境(Xfce、KDE)やディスプレイサーバー(Xorg、Wayland)で広く機能してるみたい。
「タブ」と「次のフィールド」のために別々のキーを持つのは合理的かもしれないし、「改行」と「送信」のためにも別のキーがあってもいいかもね。(でも、タブと改行はすべてのコンテキストに適用できるわけじゃない。)それに、コントロールキャラクターをデータとして入力するためのキーやキーの組み合わせ(いくつかのプログラムでは^Vを使う)を持つのも合理的かもしれない。新しいコンピュータを設計する際の考慮事項になるかもしれないし(既存のものと同じである必要はない)、そういうことを考えたことがあって、そういう考慮をするかもしれない。
それに、誰もタブストップを同じように設定しているわけじゃないっていう事実もあるよね。
ほとんどの人がタブキーが正しい選択だと思ってるのは、なぜそれがそうでないかの完璧な例だよね。タブキーには目的があったのに、ハイジャックされて実際の目的が使いにくくなった。Appleの初期のタッチバーやエスケープキーを取り除いたことと似てるかも。普通のユーザーはそのキーを使わないかもしれないけど、普通の開発者はその目的のためにそのキーを使わないといけないからね。
でも、文字通りのタブ文字を使わないものでも、タブキーを使ってコードを書くよね?そうだよね?スペースをN回押すの?その主張はなんとなく理解できるけど、HNのテキストエリアでコードを書いてるなら、何か間違ってるよ(タブやスペースが重要なコードの場合)。どんなコードエディタでもタブキーを正しく使うはずだし。とはいえ、OSにおけるタブ入力がエンターみたいに普遍的じゃないのは本当にイライラする。shift+enter、alt+enter、cmd+enterのミックスがあるからね。shift/alt/ctrlのタブも大体ハイジャックされてるし。
Microsoftを技術界の悪者として長いこと見てきたから、彼らが若い新興企業として大手に立ち向かう姿を考えると面白いよね。もし、機能のためにどのキーを使うかで議論している時期だったら、1985年頃だったはず。それはつまり、Microsoftが生き残るためにIBMを満足させる必要があった時期の終わりに差し掛かっていたってことだ。まだIBMにある程度依存していたんだよね。もしIBMが自社のPCでMicrosoft製品の出荷を止めたら、Microsoftにはかなりの打撃だっただろう。でも、クローンがちょうど人気を博し始めていた。コンパックや他の数十のクローンメーカーが急成長していた。ゲイツはクローンメーカーからの注文が急増しているのを見て、IBMへの依存がなくてもやっていけると気づいたんじゃないかな。ただ、OS/2のことは本当に残念だったね。
ゲームコントローラーをすべての機械に接続するべきだと思う。矢印ボタンでフィールド間を移動できて、「A」キーで階層メニューの上のレベルに行き、「B」キーで下位メニューに入れるように。フィールド間を移動するためには、データを入力したらキーボードから手を離して、ゲームコントローラーを手に取って、右か左のボタンを押して、またキーボードに手を戻す。これで生産性がめちゃくちゃ上がるはずだよ!
これ見てみて :) https://github.com/madewokherd/xalia#default-gamepad-control... (標準のOSコントロールを使うビデオゲームをゲームパッドでまともに操作できるようにすることを目的としてるよ。)
なんて素晴らしいアイデアなんだ!特許を出すべきだよ。とりあえず、次善の策としてマウスを使うしかないね。
Microsoftの人たちはIBMの同僚を無駄な官僚主義に埋もれてると思ってて、IBMの人たちはMicrosoftの人たちを無秩序なハッカーだと思ってたんだね。MSFTで働いてるけど、これには大笑いしたよ。Microsoftは昔は全然違う会社だったんだろうね。今は無駄な官僚主義に埋もれて、終わらない会議やAIの指示、昇進のためのパフォーマンスなどに悩まされてる。給料はそこそこだけど、官僚主義は心を壊すよ。
IBMが原因で、MS-DOSがオプションに「-」をサポートしていないのと、すべてのドライブの「\DEV」ディレクトリにデバイスがない理由なんだよね。でも、パス区切りとして「/」は生き残った!MSの人たちはXenixを使っていて、Unixのファンも多かったし、初期のDOSにはこれらのためのSWITCHCHARやAVAILDEVのconfig.sysオプションがあったんだ。でも、IBMはそれに対して大騒ぎして、削除を強制したらしい。DEVの問題は特にイライラするよね。DOS 1にはディレクトリがなかったから、互換性の問題はほとんどなかったはずなのに。それなのに、DOS/Windowsは「CON」や「COM1」という名前のファイルを作れないままなんだ。デバイスファイルがすべてのディレクトリに存在する前提になってるからさ。
どの時代も、細かいことに対して戦いがあったのがすごいと思う。キーの種類、レイアウト、形、意味とかね。今は誰もそんなこと気にしないのが不思議で、同時に面白い。
IBMは伝説的に管理が過剰だったよね。これは間接的な話だけど、昔一緒に働いてた人が、90年代中頃にロンドンのIBMでインターンをしていたときの話をしてくれた。今で言うQAエンジニアの仕事をしていたんだ。その頃はみんなスーツを着ていたけど、文化が変わりつつあったから、インターンたちはカジュアル・フライデーを許可してもらうようリクエストを出したんだ。彼らは顧客との接触がないバックルームに閉じ込められていたから、大したことだと思っていなかった。数ヶ月後、インターンシップの終わりが近づく頃に返事が来た。マネージャーがそのリクエストを上司に回して、メールにはその経緯が全部引用されていた。リクエストはロンドンオフィスで4つの階層を上がり、アメリカの本社にまで届いて、最終的にはVPのデスクにたどり着いた。VPはその問題を指摘してくれたことに感謝した後、慎重に考えた意見を述べたんだ。このプロセスには数週間かかったらしく、各階層の人たちがその問題に対処する権限があるかどうかを議論していたんだろうね。その後、メールは不可解に一つずつ下に戻されて、再び大西洋を越えて、ローカルオフィスを経由して、スーツを着たインターンたちの元に届いた。結局、彼らはインターンシップの残りの日数が数日しかなかった。答えは「ノー」だった。
1988年から89年にかけて、イギリスのウィンチェスターにあるIBMのR&Dサイトで1年間インターンをしてたけど、私たちインターンはスーツもネクタイも着てなかったよ。フルタイムのIBMの人たちもあまり着てなかった気がする。実際、かなりカジュアルだったよ。(あなたの話を否定するつもりはないけど、別の視点を提供したかっただけ。)