こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

テキストファイルでタブ文字を何に使うのか?

一般的なテキストファイルでタブ文字はどのような用途で使用しますか?

私の場合は基本的に、プログラムのソースコードで行頭のインデントにしか使いません。

あと強いて言うならば、TSVファイルの区切り文字として使用したり、構造化テキスト(そういうフリーソフト)のファイル内でのシーケンスとして使う事はありますが、これはテキストファイルではあるのですが、特別なルールのあるやや特殊なファイルといえると思います。なので、少なくとも今回はTSVや構造化テキストは「一般的なテキストファイル」ではないと考えます。

※ソースコードなどで複数行の桁位置そろえで「行中」に使用しているケースを見たことがありますがよくない例ではないかと思います。


なので私は個人的に、「一般的なテキストファイルではタブ文字は行頭のインデントにしか使わない」と思っています。

これはあっていますか?
テキストファイルでそれ以外に使うことってありますか?
あるならどのような用途で使用しているのか教えてください。

よろしくお願いします。

投稿日時 - 2011-11-15 17:49:51

QNo.7135005

暇なときに回答ください

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

>なるほど。機能的な意味づけのためではなく、あくまでも
>表示をそろえるために使用することもあるということですね。

それ以外に用途はないようにも思います。
TABの歴史を説明している方がいないようなので・・・

原案は1715年頃にタイプライターの概念が考案されていました。
英文はもともと等幅フォントでないので、スペースさえも幅が保証されない。
そこで位置合わせにどうしようかと迷った末にTABという概念が生まれました。
TABはTABLEの略であり、既述のようにアナログ時代の表組の悩みを解消する方法です。
 
発想が上述にあるのですから、西洋圏でないとあまり問題にならないでしょう。
なお、MSワードがスペースで位置を揃えてはいけないという理由はそこにあります。
.

投稿日時 - 2011-11-17 19:58:24

お礼

# TABはTABLEの略であり、

えー、そうなんですか。これは初耳でした。びっくりです。
だから表組みに使われるのですね。

インデントに使うようになったのは、
あとからついてきたことなのですね。

参考になりました。ありがとうございました

投稿日時 - 2011-11-18 18:03:48

ANo.10

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(10)

ANo.9

ANo.8 さんの回答に対する質問者さんの補足
---[引用はじめ]
その理屈だと「0が入力されたらトップメニューに戻る」という機能を実装したら「0は文字ではなく機能だ」という事になってしまいませんか?
---[引用おわり]

vi というテキストエディタは、kjhl のキー入力でカーソルを上下左右に移動するけど、これは質問者さんの概念の『機能』という言葉で正しい?

投稿日時 - 2011-11-17 09:52:04

補足

タブ文字を「制御文字」と説明するサイトは複数見つかりますが、「文字ではない機能だ」とするサイトは1つも見つかりませんでした。単なる言葉の定義ですので、そこまで独自定義にこだわるのではなく広く使われている定義を使ったほうがいいのではないかと思います。

もしもあなたが世の中の言葉の定義に違和感を持っているのだとしても、少なくともこの質問の中では、下記のサイトの定義を前提としていただきたいです。

よろしくお願いします。


制御文字とは【control character】 - IT用語辞典
http://e-words.jp/w/E588B6E5BEA1E69687E5AD97.html
ディスプレイやプリンタを制御する特別な文字。画面に表示されることはない。改行(CR)やエスケープ(ESC)、タブ(TAB)などが制御文字である。制御文字には、制御コードと呼ばれる文字コードが割り当てられている。ASCIIコードでは0x00~0x1Fと0x7Fのコード範囲に制御文字が配置されている

ASCII - Wikipedia
http://ja.wikipedia.org/wiki/ASCII
初めの32文字(10進数で0-31)はASCIIでは制御文字として予約されている。基本的にはこれらの制御文字は表示するための文字ではなく、モニタやプリンタなどの機器を制御するために用いられる。

投稿日時 - 2011-11-17 12:33:20

お礼

「タブ」はあくまでも「control character」もしくは「制御文字」であり、あくまでも文字だと思います。

とりあえず簡易に引用できるサイトとしてWikipediaとe-Wordsを挙げましたが、何もこれだけを根拠に「タブは文字だ」と考えているわけではありません。

こんなサイトを見る前からどんな文献にも「タブは制御文字」と書いてあることを知っており、「タブは文字ではない機能だ」としている文献はひとつも見たことがありませんでした。

「タブは文字ではない機能だ」に、こだわる人が何人か現れたものの、その根拠が提示されなかったことは残念でした。

ですが、世の中には「タブは文字ではない機能だ」と考える人もいるのだということがわかっただけでも新しい発見でした。

ありがとうございました。

投稿日時 - 2011-11-19 14:28:19

ANo.8

No3です。
>「表組み」の話ですが1つだけ確認させてください。この場合は、あくまでも表示をそろえることを
>目的として使用するのですよね。TSVのように1区切り1タブ文字と決まっているのではなく、
>文字の数によって入れるタブの数が変わるということですよね。

ケースバイケースだと思います。
メールの場合は、返信や転送で行頭に引用文字が付くと、タブ位置が合わなくなるので、
多の方が書いているように、あくまでタブは1つで、それ以外の方法で位置合わせをした方が良いでしょう。
そうで無いケース(一律行頭に文字が付加されたりせず、TSVとして利用される恐れも無い場合)は、複数タブで位置合わせするのもありだと思います。適材適所。

そもそも、項目がタブで区切られた形式がTSVと呼ばれ、ファイル形式のような扱いを受けるようになったのも、それに先だって表組みをタブで行っていたからですね。CSVに比べると、とても新しい言葉です。


>「機能」と訳す人もいるんですかね。

翻訳の話では無いでしょうね。たとえば、0x0C の FormFeed はプリンタの紙送りという機能を持っています。タブは次のタブストップまで位置を進めるという機能を持っています。

投稿日時 - 2011-11-16 21:16:12

補足

# 0x0C の FormFeed はプリンタの紙送りという機能を持っています。
# タブは次のタブストップまで位置を進めるという機能を持っています。

その理屈だと「0が入力されたらトップメニューに戻る」という機能を実装したら「0は文字ではなく機能だ」という事になってしまいませんか?やっぱり「control character」は「制御文字」だと思うのですが…。

ASCII文字コード : IT用語辞典
http://e-words.jp/p/r-ascii.html
改行(CR)やエスケープ(ESC)、タブ(TAB)などが制御文字である。
制御文字には、制御コードと呼ばれる文字コードが割り当てられている。


もしも「タブは文字ではなく機能だ」と説明しているサイトや文献をご存知でしたら教えてください。よろしくお願いします。

投稿日時 - 2011-11-16 22:17:36

お礼

# 複数タブで位置合わせするのもありだと思います。

なるほど。機能的な意味づけのためではなく、あくまでも
表示をそろえるために使用することもあるということですね。


# そもそも、項目がタブで区切られた形式がTSVと呼ばれ、
# ファイル形式のような扱いを受けるようになったのも、
# それに先だって表組みをタブで行っていたからですね。
# CSVに比べると、とても新しい言葉です。

そうですか、TSVは新しいのですね。

参考になりました。ありがとうございました。

投稿日時 - 2011-11-16 22:16:24

ANo.7

テキストでタブ文字といわれて、まず始めに思い出すのは Makefile ですが

> すみません。確かに書いていなかったです。
> 「環境によって崩れる」が私の懸念の理由です。

基本的にタブストップは 8 固定でいじるなとは思います。それならどんなスタイルでインデントされようとズレることないですから。

普通はエディタのオートインデントがよろしくやってくれるので、字下げの設定が 4 だろうが 2 だろうが良きに計らってくれます。自分でスペースとタブをわざわざ意識して使い分けることもないです。

それでもどうしてもタブの字数をいじるならコードの中に書いとく、エディタが自動認識してくれるものもありますし。

投稿日時 - 2011-11-16 13:38:07

お礼

Makefileですか。
Cは大昔にほんの少ししかやった事が無いので覚えていないのですが、伝統的にタブでそろえることが多いということですかね。

そう考えるとhostsなんかも、タブ文字で桁そろえをしているファイルを見かけます。似たような感じですかね。


インデント、つまり行頭のタブ文字だけなら、「1インデント1タブ文字」と統一されていさえすれば、あとは各自が好きなように表示設定すれば何も問題ないと思うんですよね。

最近はデフォルト設定が1タブ4文字となっているエディタが多いと思います(秀丸やSakuraやEclipseなど)。私の主観が強く含まれているかもしれませんが。でも8文字で使用していらっしゃる方もいるんですね。

ありがとうございました。

投稿日時 - 2011-11-16 18:45:46

ANo.6

> プログラムのソースコードで行頭のインデント
VB の IDE ではタブ機能(キー押下)でスペースが入ります。
(何個入るかは設定で変更可能。デフォルト4個)
上記ファイルをテキストエディタで開くと半角スペースで
入っています。

> ※ソースコードなどで複数行の桁位置そろえで「行中」に
> 使用しているケースを見たことがありますがよくない例では
> ないかと思います。
補足も含めてざっとは目を通したつもりですが、理由が
書いてないようですが?
…私は良い例だと思いますが。

環境、目的によって利点欠点があるでしょう。
しかし、プログラムに関して言えば、開発環境は統一する
こと前提の場合も多いですし、コンパイラが正しく解釈できる
なら、所詮文字ですので使いやすい部分で使っていいと
思います。
スペース埋めでもいいのですが、キーを押す数がだいぶ
変わりますよね?生産性に影響します。半角スペースを
2個や3個打って桁を揃えるより、タブ1個で揃った方が
早いです。

PLSQL(C系の構文、Oracle上で動く)の時は、テキストエディタ
で編集していますが、タブ文字便利です。
修正時に過去のソースをコメントで残しておきたい場合、
タブだとコメントのキーワード(--)を入れても位置が
変わらないんですよね。これは「行中」でも同じ事です。
ex)
-- OldCode
  NewCode

投稿日時 - 2011-11-16 11:08:45

お礼

# VB の IDE ではタブ機能(キー押下)でスペースが入ります。
# (何個入るかは設定で変更可能。デフォルト4個)

勝手に半角空白が入ることは知っていましたが
変更可能だったのですね知りませんでした。

# > ※ソースコードなどで複数行の桁位置そろえで「行中」に
# > 使用しているケースを見たことがありますがよくない例では
# > ないかと思います。
# 補足も含めてざっとは目を通したつもりですが、理由が
# 書いてないようですが?
# …私は良い例だと思いますが。

すみません。確かに書いていなかったです。
「環境によって崩れる」が私の懸念の理由です。


# しかし、プログラムに関して言えば、
# 開発環境は統一すること前提の場合も多いですし、

# スペース埋めでもいいのですが、キーを押す数がだいぶ
# 変わりますよね?生産性に影響します。

# タブだとコメントのキーワード(--)を入れても位置が
# 変わらないんですよね。これは「行中」でも同じ事です。

確かにそうですね。いろいろな意見・視点がありますね。
参考になりました。ありがとうございました。

投稿日時 - 2011-11-16 12:51:15

ANo.5

[ANo.3] さんの回答への質問者さんの補足
------[引用はじめ]
TSVのように1区切り1タブ文字と決まっているのではなく、文字の数によって入れるタブの数が変わるということですよね。

そこだけ教えてください。
------[引用おわり]

タブの数を変えると、コンピュータ(テキストファイルを処理するプログラムを書くプログラマ)にとってはうれしくないので、一つ前の文字列の最後に空白を詰めて調整するといいよ!

投稿日時 - 2011-11-16 09:59:57

お礼

# タブの数を変えると、コンピュータ(テキストファイルを
# 処理するプログラムを書くプログラマ)にとってはうれしくないので、
# 一つ前の文字列の最後に空白を詰めて調整するといいよ!

なるほど!その方法なら、私の懸念は解消されそうですね。
そういう工夫をして対処している方もいらっしゃるのですね。
面倒な気もしますが、ルール化・習慣化すればいいのかもしれませんね。
ありがとうございました。

投稿日時 - 2011-11-16 12:17:44

ANo.4

構造体やJSONなどの指定をするときの行揃えにも役立ちます。
(BBSでそろっているかどうか怪しいですが、、、)

/* C */
struct Profile {
 char  name[20]; /* 氏名 */
 int   sex;    /* 性別コード */
};

/* JavaScript */
var profile = {
 name :  'taloo', // 氏名
 sex :   0     // 性別
};


タブコードを8文字分空けたり、4文字分空けたりなどの指定はエディタによる物ですので、
時として読みづらくなることもあり、最近は使われなくなってると思います。
また、エディタの機能向上により、ハイライト(カラーリング)などで読みやすくなっているため、
わざわざ行揃えの必要がなくなったというのも、タブが使われなくなった理由の一つだと思います。


>※ソースコードなどで複数行の桁位置そろえで「行中」に使用しているケースを見たことがありますがよくない例ではないかと思います。

本来は『悪くはない』と思います。
最初に書いたように、使用するエディタを変更すると、タブの間隔が変わってきて読みづらくなるなどの問題もありますし、
それを理由に、タブをやめようという話もあることは知っています。
だからといって、エディタを変更する予定がない、エディタを変えてもタブの間隔は変わらない(設定で変更もできる)のであれば特に問題はないと思いますし、
そういう環境の人にまで同じ理由でやめさせるのは意味がないと思います。


個人的には、行揃えはバグつぶしの重要な要素だと思っていますが、タブではなくスペースで行揃えする事が多いですね。
キーボードの配置的にスペースの方が押しやすいというのがその理由なので、「タブではダメ」というわけではありません。(むしろタブを使うべきだと思いますが。)
JavaScriptのファイルサイズ削減のためにタブを使った事もありますが、そこだけ調整してもあまり意味はありませんでした。
インデントはエディタの機能を使っているため、タブで行揃えすることも多いです。


>なので私は個人的に、「一般的なテキストファイルではタブ文字は行頭のインデントにしか使わない」と思っています。
私は、プログラムファイルは一般的なテキストファイルではないと思っています。

一般的なテキストファイル=何かのドキュメントとか、ニュース(新聞)とか、、、
それらであれば、
インデントは行われないと思います。

むしろHTMLやPDFなどの(プレーンテキストではないという意味で)特殊フォーマットを使う事が多いと思います。
表組には表組のタグがありますし、
タブの4文字空け、8文字空けを考えるなら、スペースで行揃えをしたり、HTMLやPDFの方がデザインの調整が簡単だと思います。

投稿日時 - 2011-11-16 07:08:48

お礼

# 構造体やJSONなどの指定をするときの行揃えにも役立ちます。

そうですか。行揃えで使う人はいるんですね。


# また、エディタの機能向上により、ハイライト
# (カラーリング)などで読みやすくなっているため、
# わざわざ行揃えの必要がなくなったというのも、
# タブが使われなくなった理由の一つだと思います。

なるほど。この視点はありませんでした。そういえば昔COBOLのサンプルを見たときに気持ち悪いくらいに変数宣言や代入式の位置がそろっていた記憶があります。今思えば宣言をプログラムの先頭で行なうことを強制する言語特有の習慣だったのかもしれませんね。また、昔はエディタの選択肢が無く固定化されていたけど最近は多様化してそれぞれ自由なものを使うようになったというのも理由かもしれませんね。もろもろの理由で昔は今より行揃えを多用していたのでしょうかね。


# 本来は『悪くはない』と思います。
# タブではなくスペースで行揃えする事が多いですね。

なるほど、なるほど。


# 私は、プログラムファイルは一般的なテキストファイルではないと思っています。

確かにそうですね。主観に基づく余計な修飾はしないほうがいいですね。


# 一般的なテキストファイル=何かのドキュメントとか、ニュース(新聞)とか、、、
# それらであれば、インデントは行われないと思います。

なるほど。
いろいろ参考になりました。ありがとうございました。

投稿日時 - 2011-11-16 12:42:32

ANo.3

まず、タブは制御コードなので、それを指してNo2の人は機能と言ったのだと思います。

表組みというのは、

a   b   c
1   2   3

のようなものを書きたいときに、間をタブで区切ると言うことです。
いまでも普通に使われていると思いますよ。英数字のみで等幅フォントで見られることが確実なら空白でそろえても良いですが、プロポーショナルフォントで見られる可能性があるときはタブで区切るのが普通でしょう。

投稿日時 - 2011-11-15 21:36:48

補足

「表組み」の話ですが1つだけ確認させてください。この場合は、あくまでも表示をそろえることを目的として使用するのですよね。TSVのように1区切り1タブ文字と決まっているのではなく、文字の数によって入れるタブの数が変わるということですよね。

そこだけ教えてください。
よろしくお願いします。

投稿日時 - 2011-11-16 08:32:28

お礼

英語では「control character」ですよね。日本語では「制御文字」と訳すことが多いと思うのですが「機能」と訳す人もいるんですかね。

ありがとうございました。

投稿日時 - 2011-11-16 08:29:57

ANo.2

まず、タブは機能であって文字ではありません。
そこを間違えると、当然活用法も違ってくるでしょう。
「一般的なテキストファイル」というのも、アナタの水準での「一般的」ではないかと思います。
私は、「一般的」以外のテキストファイルは作ったことが無いので、「一般的」以外の使い方を知りません。

私も表組みしたい時はタブ機能を使いますね。
また、テキストエディタでCSVファイルを作る時とか、テキストDBを作る時もタブ機能でやります。
当然ですが、行頭揃えはタブでないとうまくいきませんね。

投稿日時 - 2011-11-15 18:50:13

補足

すみません。質問がわかりにくかったのかもしれませんね。

ここでいう「タブ文字」とは、キーボードのTabキーを押下することにより入力できる文字であり、アスキー文字コードで言う0x09、UnicodeでいうU+0009の文字のことであり、しばしば「\t」と表現される文字のことを指しています。正式名「horizontal tabulation character」、略称で「HT」と呼ばれる制御文字のことです。日本語では「水平タブ」もしくは単に「タブ文字」と呼ばれることが多い文字の話です。

あくまでも文字の話です。機能?の話ではありません。

おそらくは、あなたのおっしゃる「機能」は「タブ文字」とは別のものかと思います。わかりにくくてすみません。

もしもこの「タブ文字」のことで何かご存知のことがあれば教えてください。よろしくお願いします。

投稿日時 - 2011-11-15 21:19:25

お礼

ありがとうございました。

投稿日時 - 2011-11-15 21:19:15

ANo.1

タブ文字, より正確には「水平タブ文字」は「カーソルを (行送り方向の) 特定の位置に進める」という意味を持ちます. したがって, 本来は表組をしたいときに使うことを意図しています.

ということで, あなたの言うところの「一般的なテキストファイル」が表組を含むかどうか, で判断してください.

投稿日時 - 2011-11-15 18:08:30

補足

なるほど、確かに「一般的なテキストファイル」という文言が足かせになってきちんと答えられない人が出そうですね。
「一般的なテキストファイル」という言葉にこだわらなくて結構です。

「表組をしたいとき」というのがよくわからないので、具体的にどのような場合に使用するのか教えてください。

あくまでも昔の話なのでしょうか?
今でも使用することがあるのでしょうか?
具体的にどのような場合・アプリ・ファイルで使用するのでしょうか。

それを教えてください。
よろしくお願いします。

投稿日時 - 2011-11-15 18:26:42

お礼

ありがとうございました。

投稿日時 - 2011-11-15 18:26:40

あなたにオススメの質問