• ベストアンサー

知っていたようで知らないことです

空白とタブとスペースは何がちがうのでしょうか?今まで、なんとなくやっていましたが、実は違いがわかりませんでした。どう使い分けるべきなのか、扱い方はどう異なるのか教えてくれませんか?

質問者が選んだベストアンサー

  • ベストアンサー
  • ultraCS
  • ベストアンサー率44% (3956/8947)
回答No.8

現在のコード体系やキーボードの元になっているタイプライターやテレタイプなどの機能から掘り起こせば一目瞭然です。 TABというのは、元々はタイプライターで一定の位置(0,8,16など8キャラクタおきの位置)にキャリッジを移動するためのキーで本来は、TABに割り当てられたキーはありましたが、紙の上に反映されるコードなどありませんでした。一方、スペースというのは、一桁何も印字せずに送るキーです。 これをそのままテレタイプ(タイプライターで作成した電文を、相手に伝えて相手側で印刷したり鑽孔テープにパンチする)に置き換えた際、この位置情報を何らかの方法で伝えないと、元の文のレイアウトが崩れてしまいます。初期にはスペースに置き換えていた例もありますが、これだと、8桁送るときには8キャラクタ必要になり電文の通信料が増えてしまいます。当時の通信速度は300CPM(毎分300文字)程度で回線費用も高額でした、ですから、スペースに変換するのはいかにも勿体なく、代わりにタブコードというのが生み出されたのです。タブに限らず、コントロールコード(CLR/CR/LFなども)の多くは、これに近い経緯で決まっています。 当初のタブはハードウェアタブで、位置は固定されていましたが、現在は自由位置に設定が可能です。 また、ホスト系のOSや言語処理系では、プログラムソースにタブを埋めこむことが出来ないため、TSS端末(IBM3270/FACOM6680等)などで作成したプログラムソースでは、保存時にタブは同じレイアウトになるようなスペースで勝手に置換されてしまいます。 まあ、これは、プリンターも実質は同様ですね。んさつしたぶんしょからタブなのかスペースなのかは読み取れませんから。

noname#182748
質問者

お礼

詳しい回答ありがとうございます。歴史的経緯に至る回答をもらえるとは思いませんでした。

その他の回答 (7)

回答No.7

こんにちは。みっちょです。 もともと欧文文化に由来するので、一旦英語に直してみましょう。  (1)空白…Blank  (2)スペース…Space  (3)タブ…Tabulator コンピュータ上の話でいくと、(2)と(3)の議論となります。 (1)はそこがSpaceであれTabulatorであれ、文字が空いている状態であればその意味に含むと言えるでしょう。 (2)はスペースバーを押したら出る文字(ASCIIコード0x20)です。通常の空白1文字を表そうと思えばこれを使います。普通に『空白』といえば多くの場合はこれを意味していると思われます。 (3)はタブキーを押したら出る文字(ASCIIコード0x09)です。こちらも1バイトですから、表示上はどうであれ、コンピュータの中で占める容量はスペースなど他の文字と同じです。しかし、タブはコントロールコードという中に含まれ、画面表示の際にカーソル位置を調整するのに使用されます。 スペースとタブをどう使い分けるべきなのか、扱い方はどう異なるのかという事になれば、タブの由来を知る必要があります。一度そのルーツであるタイプライタを打ってみれば解るのですが、タブキーを押すと文字を打ち出すキャリッジが一定間隔で決められた場所にジャキッ!!と移動します。TabはTabulatorの略で、そのTabulatorはテーブル(表)を作るものという意味なのです。もともと文字しか打てないタイプライターで表を表現するために、一定の間隔を空けて項目を効率よく打ち込むために準備されていました。 これは意味合い的にそのままコンピュータにも引き継がれたので、今でもテキストエディタなどでタブ文字を打つとそこで一定の場所まで空白が空くわけです。言ってしまえば、タブ文字というのは一定の次の決められた幅までカーソルを動かす、という機能を持った目に見えないコントロール文字であり、それをテキストエディタが読み込んだ際に、例えば8文字間隔であるとか4文字間隔であるとかの場所までカーソルを移動して次の文字の表示に入るわけです。よって、位置を揃えて下さいよ、という意味を示すものであり、そこに実際にスペース文字が挿入されるといったものでもなく、根本的にスペースとは色合いの違う物です。 よって、テキストベースで表などを作る際に項目位置を合わせるのにはタブを使用し、普通に文字の間を空ける際はやはりスペースを使う、というのが元来の目的に合った使い分けだといえるでしょう。ただし表示するエディタによってタブを何文字間隔に表示するかは違っていたりもするので、他の環境でも自分の意図した位置に正確に表示するようにするならばタブを使わずに全てスペースを使うのが良いかと思われます。 余談ですが、表形式のデータを保持するファイル形式にカンマ(,)で区切られたCSV(comma-separated values)ファイルというものがありますが、これと同様の目的でタブで区切られたTSV(tab-separated values)ファイルというものも使われます。中にはタブ文字で区切られて表の項目が羅列されて入っています。 こんな感じでいかがでしょうか?

noname#182748
質問者

お礼

大変詳しい回答ありがとうございます。新しい知識が増えました。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.6

あ、そっか http://okwave.jp/qa/q6317976.html これの「続き」か。 質問に「空白」とあったので、#1さんは半角スペースのことだと思って sedでの方法を答えた。 ここで「だめでした」とあったので、#3が半角スペース以外の可能性を考え、Perlで「全角スペースまで含めた空白」を削除するものにした。 sed等のコマンドでは、タブとスペースは明確に区別するのが普通ですが、オプションによっては違いを無視できます。 > 8行の連続する空白(タブ?) 8桁の連続する空白は、単に「8桁の連続する空白」です。 8桁分の連続する空白部分があって、それが1文字のタブ文字で構成されているときが「タブ」です。

noname#182748
質問者

お礼

回答ありがとうございます。いつも皆様の善意に助けられています。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.5

スペースはASCIコード32(0x20)の文字で、通常キーボードのスペースキーで入力できます。 スペース1つで1文字分の空白を表示するのが普通です。 また、漢字一文字相当の空白を表示する「全角スペース」と呼ばれる文字もあります。それに対応して、上のスペースを「半角スペース」と呼ぶこともあります。 (全角/半角という呼び方は、文字の大きさから来ているので、文字毎に大きさを既定してないものにはそぐわない、という考えもあります) タブ文字は、水平タブとも呼ばれるASCIIコード9の文字で、通常キーボードのTABキーで入力できます。 タブ一つで、タブストップと呼ばれる、決められた位置までが空白で表示されます。そのため、タブで項目の表示位置を縦に並べたりできます。 タブストップは通常、4文字毎、あるいは8文字毎ですが、環境によっては自由に決められます。 空白は、文脈によっていろんな意味があります。 ・スペースと同じ ・「空白」を表示するスペースとタブを合せた呼び方 ・上に加えて、改行文字など、通常は「文字」としての形が表示されない文字の呼び方 以上が文字としての説明ですが、他にも、本来の意味として使われるこもあります。 (行間:ラインスペース等) 使いわけもケースによるので一概には言えません。 例えば、Excelで読み書きできるテキスト形式に「タブ区切り」があります。これは、項目を区切るタブを、項目に含まれるスペースとで明確に使い分けられています。 C言語などのフリーフォーマットなものだと、改行まで含めた「空白」はすべて同じ扱いになりますが、全角スペースは通常の文字として扱われます。 テキストエディタによくある「空白文字表示」は、全角スペースも含めて「空白」の対象になります。

noname#182748
質問者

お礼

詳しい回答ありがとうございます。

回答No.4

使い分けるとは? インデントでって事か? だったら個人の好み。 俺自身はインデントはタブの方が好きなのでタブを利用している。

noname#182748
質問者

お礼

回答ありがとうございます。

  • 0909union
  • ベストアンサー率39% (325/818)
回答No.3

>どう使い分けるべきなのか、扱い方はどう異なるのか No1の方の回答が、そのもので、それ以上でも、それ以下でもない。たぶん質問者は、プログラミング的にどう違うのかわかっていて(初めて分かった)、その感激を他人に伝えたかったのでしょう。 その気持ちは、良く分かります。だれかに言いたくなりますよね。世の中の摂理がわかると。 日本語のツリー構造は、 空白がTOPで、その下に、タブとスペースがある。空白とは、何も無い空間を意味します。なので、タブでスペースでも、どちらで埋めても、「空白」と表現します。 しかし、これが画像データーなどでは話が違ってきてしまう。ただし、こと文字列操作での空白とは、スペース(半角 or 全角の1文字にすぎない)を意味して、文字コードとしては、スペースもタブも違う文字コードです。なので、文字列として扱うと=で結ぶことはできません。 タブとは成型のためのスペースである事が、機能面から言える (この用に説明すると、スペース=タブと勘違いする人がいる。きっと質問者もそのたぐいだったのでしょう)。 用は、この程度にしか意味ありません。これをあえて、質問にするということは、どう言うことか。分かった瞬間、他人に言いたくなることは、よくわかりますよ。

noname#182748
質問者

お礼

回答ありがとうございます。タブとスペースの文字コードが別とは知りませんでした。

  • neko-ten
  • ベストアンサー率55% (1287/2335)
回答No.2

「空白」っていう文字はないです。 (全角スペースのことであれば、そもそもプログラミングでは使われません。) で、スペースとTabですが、そもそも文字として全く別物です。 コンピュータにとってはどっちも「文字」として扱われるので、感覚としては「A」と「B」の違いと一緒です。 それぞれ、どのような意味を持つのかは言語によって違います。 言語によっては、厳密に扱う場合もありますし、同じような扱いをする場合もあります。

noname#182748
質問者

お礼

回答ありがとうございます。タブ=空白の並びと思っていました。

  • k925
  • ベストアンサー率0% (0/4)
回答No.1

タブは文字の体裁を整える時に使い、スペースは文字と文字を区切る時に使います。 あと空白とスペースは同じです。

noname#182748
質問者

お礼

回答ありがとうございます。空白とスペースが同じとはしりませんでした。

関連するQ&A

専門家に質問してみよう