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

リターンがエンターになった日 (2023)

概要

  • タイプライターからコンピュータへの移行は 複雑かつ長期的 なプロセス
  • Returnキー はこの進化の象徴であり、歴史的な変遷を体現
  • タイプライターやテレタイプ、ワードプロセッサの 技術的課題と解決策 の紹介
  • キーボード上の 制御文字やキー配置 の由来とその影響
  • 現代の プログラミングや文書作成 にも残る歴史的な名残

タイプライターからコンピュータへの進化とReturnキーの複雑な歴史

  • 一般的なイメージとは異なり、 タイプライターからコンピュータへの移行 は単純ではなく、 多くの試行錯誤と改良 の積み重ね

  • タイプライターは 1870年代に誕生 し、初期モデルにはコスト削減のため 0や1のキーが存在しない 場合も

  • 欠けている文字は 他の文字を重ね打ち したり、鉛筆で補う工夫

  • キャリッジリターンレバー は、紙送りとキャリッジの左端復帰を同時に行う 機械的ショートカット

  • TabやShift、Shift Lock など他の特殊キーも、最初はレバーや追加装置として実装

    • Shift Lockは物理的な爪でShiftを固定する仕組み、Caps Lockとは異なる
    • Tabの誤設定でタイプライターが破損する問題も発生、後に タブブレーキ が標準装備
  • 電動化により キャリッジリターンがキー化、レバーが不要に

    • 名称もCarriage Return, Return, Electric Return, Power Returnなど多様化
    • IBM Selectricではマニュアル上は“carrier return”だが、キーボード上はReturn
  • 電動化による作業負荷の軽減 は劇的

    • Spaceは約2倍、Backspaceは12倍、Shiftは9倍、Carriage Returnは 425倍も楽に
  • 安価なモデルでは キャリッジリターンだけレバーが残る 場合も

テレタイプと制御文字の誕生

  • テレタイプ は、QWERTYキーボードを採用し、 情報伝達の自動化 を実現
  • 各キーに 数値コード を割り当て、後のASCIIやUnicodeの基礎に
  • 文字だけでなく スペースや改行、バックスペース などの操作も 制御文字 として伝送
  • キャリッジリターン(CR)とラインフィード(LF)の分離 問題
    • キャリッジの物理的移動が遅く、次の文字が重なって印字される問題
    • CRとLFを 別々の制御文字 として送信することで解決
    • この仕様が 現代のCR/LF問題 (改行コードの違い)に繋がる

ワードプロセッサの登場とReturnキーの役割変化

  • 初期の ワードプロセッサ は、保存・再印刷機能を備えた 自動化タイプライター

  • テキストの保存や 編集(差し替え・削除・挿入) が可能に

  • テキストリフロー (自動改行・ハイフネーション)機能の実現

    • Returnキーは 段落終端のみで使用、行末での手動改行は不要に
    • これによりInsertキー(上書き/挿入モード切替)の登場と消滅
  • ワードプロセッサでは ハードリターン、ソフトリターン、カーソルリターン、ラインブレーク など多様な改行概念が登場

    • キーやUIで切り替える設計
    • IBM Mag Card IIやQuadritek 1200など、複雑なReturn関連キーを搭載した機種も存在

現代への影響とまとめ

  • タイプライター、テレタイプ、ワードプロセッサの 歴史的経緯 が、現代の キーボード配列や制御文字仕様 に影響
  • Returnキー は単なる改行キーではなく、 情報処理の進化と課題解決の象徴
  • プログラミングや文書作成における CR/LF問題改行概念の複雑さ も、これらの歴史的背景から生じたもの
  • キーボード上の痕跡 として、今も私たちの作業環境に残る進化の証

Hackerたちの意見

子供の頃、C64の「Return」キーの代わりに「Enter」キーがあるPCを見たとき、ちょっと興味を持ったのを覚えてる。長い間「Return」キーを見てないのに、今でも多くのキーボードで使われている左下の矢印の記号がキャリッジリターンの動きを表してるのは皮肉だよね。やっぱり「Enter」の意味を伝える他の記号はないんだろうな。

今打ってる2023年のMacBook Airには「return」キーがあるよ。

すべてのAppleキーボード、今このコメントを打ってるiPhoneにも「Return」キーがあるよ。AppleのキーボードではNum Padだけが「Enter」キーを持ってるんだ。

他にEnterの意味を伝えられる記号はないと思うよ。マイクロソフト、アップル、グーグルのUIマフィアがこれに気づくまで待ってて。彼らは3ヶ月ごとに新しい記号を持ってくるだろうね。

同じく。プロフェッショナルな香りがした。Enterキー以上に、4つの異なるカーソルキーの贅沢を求めてたな。

僕が最初に持ってたプログラム可能なデバイスはHPの科学電卓で、そこには大きな「Enter」キーがあったんだ。普通のキー2つ分のスペースを占める唯一のキーだった。友達は、そのキーがあることでそれが本物のコンピュータであって、ただの電卓じゃないって言ってたけど、実際は違った。EnterキーはHPのRPN操作のためにあっただけで、プログラム可能性には関係なかったんだよね。

僕にとって「return」は「戻る」アクションを意味する(「backspace」とか)から、「enter」とは逆の意味だと思う。だから、そのキーを後者と呼ぶ方が理にかなってるよね。たくさんのTUIでは矢印キーやBackspace、Enterを使ってナビゲーションしてたし。テキストは読みやすいけど、画像はどれも見れないね。

僕の理解では、「return」は「キャリッジリターン」の略なんだ。タイプライターでは新しい行に行くためにはキャリッジを元の位置(行の始まり)に戻す必要があったからね。

初めてOS Xを使ったとき、Windowsで育った自分には面白いことの一つだった。Enterキーはフォルダに入ったりプログラムを実行したりするけど、FinderではReturnキーがファイル名の変更を始めるんだよね。

あなたが入力したテキストをプログラムに「返してる」ってことだよね。

なんて素晴らしいエッセイなんだろう。僕は手動のアンダーウッドタイプライターでタイピングを学んだんだけど、キャリッジリターンレバーがあったんだ。それが懐かしいわけじゃないけど、そのレバーを動かしてキャリッジ全体が動くのはすごく満足感があった。もう一行打ったってことだし、進展を感じられたからね。本当に懐かしくないのは、新しいリボンを買えなくて、リボンが乾燥してたから、文字が出るか確認するために毎回戻って打ち直さなきゃいけなかったことかな。ミスを元に戻せなかったのも辛かった。

タイピング中に改行するたびにスライド音が鳴るジョークメニューバープログラムを作ろうかな!やってみるかも…

昔、デモディスクを持ってて、その中のインストーラー(たぶんTheme Parkだったかな?)で「Press return to quit, press enter to continue」って表示が出たのを覚えてる。それが当時の僕にはすごく混乱を招いて、両方のキーの違いがよく分からなかったんだよね。あの時は、実際にはただのトロールだったんだと思うけど。

もしかして、escapeとenterの混乱した翻訳があったのかな?ReturnキーとEnterキーの両方を持ってるPCはあまりないと思うよ。

"フィールドセパレーター"(FS ASCII 28)や"レコードセパレーター"(RS ASCII 30)の制御文字がTABやCR/LFの代わりに使われてたら、ほんとに残念だよね。そうすれば、ファイルの行末でのCRLFとCRとLFの問題が完全に避けられたのに。CRは印刷ヘッド/カーソルを左端に戻し(右から左に書く言語では右端)、LFは印刷ヘッド/カーソルを下に移動させるだけだったのに。特定の端末のドライバーが必要に応じて翻訳してくれたら、2025年になってもgitや他のところで行末を何に変換するか指定する必要がなかったのに。昔のTTY(ASR-33)時代では、BEL/BS/SP/CR/LF/FFなどの文字が実際に印刷ヘッドを制御してたけど、必要なもの(フィールドセパレーター、グループセパレーター、レコードセパレーター)の内部表現がなかったのはあまり意味がなかったよね。

CSVファイルなんて存在しないよね。

フィールドやレコードのフォーマットのために、改行を含めるための「行区切り」文字はまだ必要じゃない?

「フィールド区切り」(FS ASCII 28)や「レコード区切り」(RS ASCII 30)の制御文字がTABやCR/LFの代わりに使われなかったのは本当に残念だ。いや、そんなことないよ。それは1940年代から1950年代のポーリングマルチドロップテレタイプマシンのための遺物なんだ - 一つのワイヤーに複数のステーションがあって、交互に使う仕組み。アイデアとしては、ローカルで紙テープをパンチして、それをリーダーに入れるって感じ。当番のステーションになると、中央のマシンが数文字のポーリングシーケンスを送って、選ばれたリーダーが起動して、メッセージを上流システムに読み込んで、また止まる。逆方向では、中央ステーションがどのマシンにも起動コードを送って、メッセージを印刷して、またオフにすることができた。一度に一つのマシンしか動かせなかったんだ。その制御文字がそのプロセスの区切りだった。これらはすべて機械的なもので、「スタントボックス」と呼ばれるユニットで行われていた。興味があれば調べてみて。RS-485はその技術の子孫で、今でも一部の産業制御システムで使われているよ。(昔、アンティークのテレタイプを修復するのが趣味で、スチームパンクのイベントで約7年間、機能する電報オフィスを持ってた。)

でも、CRLFの変換を設定する必要は全くないよね?正気の人がWindowsでもCRLFを使うなんてあり得ないよ。俺のソースコードは全部UNIXフォーマット(LFだけ)で、Windows、Cygwin、UNIXでも一貫して使ってる。なんで自分の生活を難しくするの?

EnterとReturnのために明確なキーがあったのは長い間だよ。ISO標準のキーボードでは、Returnはメインブロックにあって、Enterはテンキーにあるんだ。 https://en.m.wikipedia.org/wiki/Enter_key#/media/File%3AEnte...

QMKではEnterとNumpad Enterはまだ別物だし、いくつかのゲームのキー割り当てもそうだよね(numrowとnumpadの数字も別々に認識されるし)。左側と右側のctrl、alt、super、shiftのバージョンに似てると思う。機能的には同じだけど、区別できる場合もある。たとえば、ハイパーバイザーが右のaltを使って入力をフォーカスから外すような感じ。リンク先のキーボードのラベルが本当に意味があるのか気になるな。Appleがバックスペースキーをdeleteって呼んでたり、いくつかの修飾キーに独自の名前を付けてるのと似てるかも。

読んでてすごく面白かった。自分も色んな変なシステムを使ってきたよ。軍の信号グループでテレタイプライターシステムとか、民間のテレックスシステム、航空固定通信ネットワークにたくさん関わってきた。https://en.wikipedia.org/wiki/Aeronautical_Fixed_Telecommuni... 記事には触れられてないけど、古いテレタイプライターの中にはすごく遅くて、Enter文字一つだけじゃキャリッジを行の先頭に持っていけないものもあったから、必ず二つ使わなきゃいけなかったんだ。だから、すべてのラインフィードは以下の文字で構成されてた:CR CR LF(キャリッジリターンが二つ、その後にラインフィードが一つ)。ほとんどの機器が現代的でこれが必要なかった時代でも、どこかに古いテレタイプが動いてるかもしれないから、これが必須で標準の一部だったんだ。メインフレームではReturnとEnterの区別もあったよ。確か、ソフトリターンはカーソルを下に移動させるだけで、ハードリターンは送信として機能して、画面をメインフレームに送信する役割があった。現代のコンピュータでも似たようなことが使えるよ。Excelの例を挙げると、セルを編集(F2)して、Enterで編集を終了できる。ただし、テキストの折り返しを有効にしていると、Alt+Enterを使ってエディタを終了せずにラインフィードを入力できる。

MS Teamsのメッセージ内で新しい行を作るためのキーと、メッセージを送信するためのキーの二つが必要だね。

もう二つのキーはあるよ、それはShiftとEnterって呼ばれてる。

5年くらい前、大学の授業で何かのフォーマットの仕方を教えてたんだけど、「そしたらリターンを押すだけだよ」って言ったら、ほとんどの学生が「リターン」って何か知らなかったんだよね。