Hatena::Diary

Webと文字

 サンプル置き場:ProjectX

・多言語入力ブックマークレット:http://jime.sourceforge.jp/開発中


ギコとモナーのデザパタ:gikomona

2008-10-25

ゆとり、キーボードの意味を知る

1.はじめに

今の子どもって、アスキーコードとかも分かってないのかもね

意外とコンピューターの教育とか基礎が抜けているのではないかな。

Ctrl-GのBELLとかもまるで知らないんじゃないか。

なぜCtrlキーがCtrlなのか、ShiftキーがShiftなのか

      ∧ ∧
    ヽ(・∀ ・)ノ <Ctrl-Gってなーに?
    (( ノ(  )ヽ ))←Me
      <  >

というわけで、調べてみました。

2.Shiftキー

昔はタイプライター(参考資料1)という機械で文章を紙に印字していました。構造的にはキーを押すと、その先についているハンコが紙に押ささり印字されました。キーと文字が1対1でしたので、文字を増やすにはキーを増やすしかありませんでした。そこで、機械的にハンコの方をずらすことで、一つのキーに対して二つの文字が打てるような仕組みができました。この機械的にハンコをずらす(シフトする)キーのことをShiftキーと呼びました。

コンピュータの時代になってもShiftキーは同様の目的で使用されるために残りました。また機械的な仕組みが消滅したことで、ソフトウエア的にいろいろな機能も加わることになりました。

3.Ctrlキー

wwwのインターネットができる前はテレックスというネットワークで世界中の人が通信していました(参考資料3)。テレックスネットワークの端末をテレタイプ端末といい、インターネットでいうブラウザの役目を果たしていました(参考資料4)。

通信の基本的な仕組みはこうです。コンピューターを使って文字を送ろうとしてもコンピューターは数字しか理解することができません。そのため一度文字を数字に変換し(エンコード)、数字を受け取り側で文字に戻す(デコード)という操作をしてやる必要があります。文字を数字に変換する方法は、世界中で同じものが使用されなければなりません。送信側でAを42として送ったものが、受け取り側で42をBとして解釈しては意味が伝わりません。そのため、世界中で同じ変換方法を使用する規格が誕生しました。テレックスにおいて使用された規格としては「Baudot Code」が用いられました。

2進 10進 16進 LTRS FIGS
ITA2 US Bell
0 0000 0 00 NULL
0 0001 1 01 E 3
0 0010 2 02 LINE FEED(改行)
0 0011 3 03 A -
0 0100 4 04 SPACE(空白)
0 0101 5 05 S ' BELL
0 0110 6 06 I 8
0 0111 7 07 U 7
0 1000 8 08 CAR. RET(復帰)
0 1001 9 09 D ENQ $
0 1010 10 0A R 4
0 1011 11 0B J BELL '
0 1100 12 0C N ,
0 1101 13 0D F 保留域 !
0 1110 14 0E C :
0 1111 15 0F K (
1 0000 16 10 T 5
1 0001 17 11 Z + "
1 0010 18 12 L )
1 0011 19 13 W 2
1 0100 20 14 H 保留域 STOP
1 0101 21 15 Y 6
1 0110 22 16 P 0
1 0111 23 17 Q 1
1 1000 24 18 O 9
1 1001 25 19 B ?
1 1010 26 1A G 保留域 &
1 1011 27 1B FIGS(数字・記号)
1 1100 28 1C M .
1 1101 29 1D X /
1 1110 30 1E V ;
1 1111 31 1F LTRS(文字)

インターネットでは、ASCIIやUTFやShiftJISなどが用いられます。しかし基本的なところは変わりません。両方が同じ変換方式を用いないと意味が通らない文章になってしまいます(文字化け)。

文字のみをコードに割り当てると、文章の体裁を整えるような情報は相手に送られなくなってしまいます。例えば改行を含めた文章を相手に送ろうとしてもできないことになります。

   ∧_∧  
  ( ´∀`)
  (    ) → ∧_∧  ( ´∀`)  (    )  | | |  (__)_)
  | | |
  (__)_)

そのような実際には表示されないけれども、コンピューターにここでこのような動作をしてほしいという指令をする文字を制御文字(参考資料5)といいます。このような文字を入力するのに専用のキーではなくCtrl(制御)キーを新たに設け、Ctrl-アルファベットキーで入力できるようにしました。Ctrl+Gを入力すると端末のスピーカーからベルを鳴らすような制御文字を入力することができました。

ソフトウェアが発達するにしたがって制御文字を直接入力することはほとんどなくなりました。しかし、実際には多くの制御文字が裏側で働いています(参考資料6)。

4.CapsLockキー

2で説明したShiftキーは機械的にハンコ板をスライドさせるものでした。そのため、たくさんの大文字を一度に入力するような時には重いキーをずっと押し続けなくてはならず大変でした。そこでスライド固定させるCapsLockキーが生まれました(参考資料7)。

5.Escキー

Escキーを入力するとエスケープコード(ESC:0x1B)が入力されます(参考資料8)。エスケープコードはその後に続くコードと一緒になってエスケープシーケンスを構成します(参考資料9)。コンピューターはエスケープコードを読み取るとエスケープシーケンスを読み取って決められた動作を行います。

エスケープシーケンスはいろいろな場所で使用されます。例えばISO/IEC 2022においてエスケープシーケンスを使うことで文字集合を変えることができます(参考資料10)。スクリーンに送るとカーソルを変化させます(参考資料11)。

エスケープコードをある特定の文字にしてエスケープシーケンスを構成することで、3の制御文字を表すこともできます。

\n:改行

\t:Tab

わからないところもあります。これと「取消しの意味」がどうつながるかということです(参考資料12)。

6.キーいろいろ

Altキー、Fnキー、Windowsキー、カタカナ/ひらがなキー、Enterキー、BackSpaceキー、変換キー、無変換キー、Tabキー、半角/全角キー、F1〜F12キーPageUpキー、PageDnキー、Deleteキー、Insertキー、Homeキー、Endキー、Pauseキー、PrintScrnキー、NumLkキー・・・まだいっぱいある


7.参考資料

  1. タイプライター - Wikipedia
  2. コントロールキー - Wikipedia
  3. テレックス - Wikipedia
  4. テレタイプ端末 - Wikipedia
  5. 制御文字 - Wikipedia
  6. Unicode® 制御文字
  7. CapsLockキー - Wikipedia
  8. key
  9. エスケープシーケンス - Wikipedia
  10. 文字コード特集
  11. エスケープシーケンス
  12. パソコンのエスケープキー、何から逃げられるの? | エキサイトニュース

追記

ブックマークありがとう。でも再度調べたら

Weekly "Keyboard World"(週刊「鍵盤世界」) - Index

に全部乗ってたよ。(´・ω・`)ショボーン

もう少し追記 「LF」と「CR

3で説明した制御文字の所で「改行」を例に挙げました。実は改行を表す文字は一字ではありません。3のBaudot Codeの表のLINE FEEDとCAR. RETを見てください。テレタイプにおいて、二つのコードはそれぞれ別の意味を持っていました。

        ┌────┐

        │<===    │*何にも書かれていない紙

        │        │

        └────┘

           ↓

      ┌────┐

      │abc<=== .│ *紙が動く(スライドする)

      │        │

      └────┘

           ↓

      ┌────┐

      │abc  ,  │*LINE FEED:新しい行に移動 

      │   <=== │*紙が上に動く(スライドする)

      └────┘

          ↓

         ┌────┐

         │abc  ,  │*CAR. RET:先頭に戻る

         │<===    │*紙が元の位置に戻る

         └────┘

テレタイプの構造は機械式のタイプライターと同じなので、改行が上のようにLINE FEEDとCAR. RETに分けられていました。その後、機械のテレタイプの時代からコンピューターの時代に移っても、LFCRは互換性のために統一されずに文字コードに残されることになりました。また、いろいろあったので(参考資料1)、改行コードはシステムによって異なるようになりました(参考資料2)。そのため、ちょっと気の利いたテキストエディタでは改行コードを選択できるようになっています。(下の画像はterapad

f:id:project_the_tower2:20081026023234p:image

5で説明したエスケープシーケンスを使うと制御文字を表すことができることを説明しました。しかし必ずしも\nがLFで\rがCRを表すかはシステムによって異なるようです(参考資料2)。また他のシステムにftpでファイルを送るような時に改行コードが自動的に変換されてしまうことがあるようです(参考資料2)。そのためにバイナリモードやアスキーモードといった送信方法がソフトに用意されています(参考資料4)。

f:id:project_the_tower2:20081026023851p:image


参考資料

  1. 改行コード - Wikipedia
  2. 改行する
  3. ASCII制御文字の入力方法
  4. アスキー、バイナリーの違い、注意点(FFFTP) - 教えて!goo

また追記 ブックマークコメントより

2008年10月26日 kudzu_naoki エスケープはキー本来の意味からEscapeじゃ、ってグリーンティー啜りながらグリーンブックめくってたじっちゃが言ってた。 そーす?http://en.wikipedia.org/wiki/Escape_sequence

         ∧ ∧
        (・∀ ・) <English・・・
         ノ(  )ヽ
         <  >


         __O)二)))(・ω・#) 英語も読めねぇのか、ゆとり脳は・・・
   0二━━ )____)┐ノヽ
         A   ||ミ|\ くく


        `゙`・;`'  バチュン
         ノ(  )ヽ
         <  >

だめぽorz。よかったらゆとりにもわかる解説お願いします。エスケープコード単体で「キャンセル、取り消し」の意味があるんでしょうか・・・。

レポート再提出 コメント欄トラックバックより

エスケープキ

"Escape"に"remove oneself from a familiar environment"、「普段の環境から脱する」って意味があり

・・・

エスケープシークエンスはエスケープ文字を使って、後続のバイナリがデータじゃなくてコマンドだと示している。

なるほど。Escapeには普段の環境から脱するという意味があるんですね。

wizyuyu

『エスケープシーケンス (escape sequence) というのは、エスケープ文字から始まる一連の文字のことです。ここ の下のほうに例があります。

例えば MS-DOS で文字を緑色に変えるためには、

ESC [ 3 2 m

の順に文字を送ります。この文字の連なり (sequence) をエスケープシーケンスと言い、エスケープシーケンスを開始する文字 ESC を、エスケープ文字と言います。

MS-DOS のコンソールは一文字ずつ受け取って処理することしかできないので、このように文字のシーケンスに意味を持たせることで、多様な機能を持たせていたわけです。

# ただ、ESC 文字以外をエスケープ文字に使うこともあります。

# 例えば C 言語の文字列リテラル中では、バックスラッシュがエスケープ文字です。

それから escape という単語自体の意味を Collins COBUILD English Dictionary で引くと、

[5] You can use escape to describe things which allow you to avoid difficulties or probrems. For example, an escape route is an activity or opportunity that lets you imporove your situation. (以下略)

とあるので、思い切って意訳すると『代替する』になります。ベル文字のような『機能つき文字』の代わりに、文字のシーケンスを一文字の機能つき文字と見なすよ、という感じでしょうか。

そして上にある Wikipedia の項目によると『ESC 文字は普通、ESC キーに割り当てられている』そうです。

私もゆとり世代らしいので昔のことは分かりませんが、ESC キーは ESC 文字を入力するために用意されたのかもしれません。』(2008/10/26 17:03)

Escapeには代替するという意味があるんですね。

      ∧ ∧
    ヽ(・∀ ・)ノ <ありがとう。二人の偉い人。このことは忘れるまで忘れないよ。
    (( ノ(  )ヽ ))
      <  >

wizyuyuwizyuyu 2008/10/26 17:03 エスケープシーケンス (escape sequence) というのは、エスケープ文字から始まる一連の文字のことです。<a href="http://homepage2.nifty.com/c_lang/intro/no_26.htm">ここ</a>の下のほうに例があります。
例えば MS-DOS で文字を緑色に変えるためには、
ESC [ 3 2 m
の順に文字を送ります。この文字の連なり (sequence) をエスケープシーケンスと言い、エスケープシーケンスを開始する文字 ESC を、エスケープ文字と言います。
MS-DOS のコンソールは一文字ずつ受け取って処理することしかできないので、このように文字のシーケンスに意味を持たせることで、多様な機能を持たせていたわけです。
# ただ、ESC 文字以外をエスケープ文字に使うこともあります。
# 例えば C 言語の文字列リテラル中では、バックスラッシュがエスケープ文字です。

それから escape という単語自体の意味を Collins COBUILD English Dictionary で引くと、
[5] You can use escape to describe things which allow you to avoid difficulties or probrems. For example, an escape route is an activity or opportunity that lets you imporove your situation. (以下略)
とあるので、思い切って意訳すると『代替する』になります。ベル文字のような『機能つき文字』の代わりに、文字のシーケンスを一文字の機能つき文字と見なすよ、という感じでしょうか。

そして上にある Wikipedia の項目によると『ESC 文字は普通、ESC キーに割り当てられている』そうです。
私もゆとり世代らしいので昔のことは分かりませんが、ESC キーは ESC 文字を入力するために用意されたのかもしれません。

mmxmmx 2008/10/27 00:49 機械式の手動タイプの実物があれば教育的にはいいですが。CRLF キャリッジ リターン ライン フィード を体感できます。
古いキーでゴミ扱いは キャップスロック、外人のキーボードねたでは 糞キーです。
新しいキーで微妙なのは INSキー。
仮名漢字変換用のキーは 今となっては作りすぎの感あり。
縦長に圧縮されたノートPCのキーの醜さよ

ゲスト


おとなり日記