Eternal Fortune Laboratory

Home > Texts > 文字列って、何?

Texts

Categories : Diaries, Information, Texts, Boards, Links

文字列って、何?

・不思議な言葉

 コンピュータを使い慣れていない人からよく聞く弱音として「パソコンは意味不明な横文字が多いから理解できない」というものがあります。普段コンピュータを触りもしない人や、買ったのはいいけどそれからどうやって活用すればいいのか分からない人がよく口にする言葉です。

 そんな人たちに蔓延しているのが、ディスクトップだの、インストゥールだの、受信トイレだの、プラウザだのという、間違った単語。そんな風に誤解していたらいつまでたっても理解できないのではないかと思いますが、確かに横文字は分かりづらいですからね。テレビなんかのメディアでも、コンセンサスとかプライオリティとか、意味不明な横文字が出てきます。まあ、そんな風に分かりづらい言葉でしか話せない人間は無能だと思いますけど。

 文章や単語名は物事を分かりやすく表すのが基本。意味のない横文字の羅列は、理解を妨げる効果しかないのです。しかし比較的言い換えやすい一般的な言葉とは違い、コンピュータ用語の中には適切に言い換えるのが難しい言葉が無数にあります。例えばデスクトップを「卓上」と訳しても意味が分かりません。デスクトップはデスクトップですから、そのまま横文字で表すしかないのです。

 カタカナ語が直感的に分かりづらく理解の妨げになっているのは周知の事実ですが、実はカタカナ語ばかりではなく、漢字で書かれた言葉も意味の把握を邪魔することがあるのです。

・実は意味不明

 例えばコンピュータ関係ではよく見かける「文字列」という言葉。よく考えてみれば、こんな単語は日常生活の中では使いませんよね。実は辞書にも載っていない、コンピュータ特有の用語なのです。コンピュータやプログラミングの世界では頻出しますが、現実の世界では目にすることがない単語です。

 このことを疑問に思っている人はどれくらいいるのでしょうか? コンピュータを使っている人なら、何の抵抗もなく「文字列」という言葉を使用しているでしょう。しかしこの受け手のことを考えていない無神経さが、一般人との意識のずれとして積み重なって、コンピュータを分かりづらくしているような気がします。

 しかし、コンピュータを使っている人でも「文字列」の意味を正確に理解している人は少ないのではないでしょうか。確かに文字列と聞けば「単語とか文みたいなものだろうな」とは思うでしょうが、ハッキリとした意味を把握している人はあまり多くないでしょう。この曖昧さが、コンピュータに対する不安感を募らせる原因のひとつとなっているかもしれません。

・文字列ってどんな意味?

 「文字列」を英語で表せば string。糸やギターの弦、ヨーヨーのヒモなどと同じ string ですね。そういう、細長いものや一列になっているものを意味する単語です。だから文字列とは文字通り「文字が並んだもの」なのです。つまり単なる文字の羅列であり、どのような意味を持っているかは関係ないのです。

 それに対し「文」とは、「完結した内容を表す最小の単位」のことです。内容を表すということは、意味を持っているということ。「文字」が並んで「単語」になり、単語を集めてつなぎ合わせたものが「文」になります。それもただ単語が並べば「文」になるわけではなく、単語がうまくつながって何らかの意味を持たなくてはなりません。単語だけを並べたものは意味を持たない単なる「文字列」です。

 しかし、「文字列」が必ずしも意味を持っていないというわけではありません。意味を持った文字の羅列、つまり「単語」や「文」さえも文字列の範疇に収まるのです。ここに、文字列という言葉がコンピュータ用語としてしか使われない理由があります。

 一般社会で、文字の大半は「文」として何らかの意味を内包しており、意味を持たない単なる文字の羅列はほとんど存在していません。それとは反対に、コンピュータで文字列の処理を行う場合、その文字列が持つ意味が考慮されることはほとんどありません。それが意味を持つ「文」であろうと、意味のない「文字列」であろうと、単なる文字の羅列である「文字列」として処理を行うことがほとんどです。人工知能などを作る時は「文字列」の意味が重要になりますが、それは特殊なケース。大抵の場合、コンピュータにとっては単にデータが並んでいるにすぎません。したがって「文字列」はコンピュータの世界でしか使われない言葉なのです。

・文字列のコンピュータ的表現

 ここまで述べてきたのは「文」に対する「文字列」の存在です。その大きな違いは、意味を持つか持たないかでした。しかし「文字列」という言葉は、コンピュータの内部ではもう一つの意味を持ちます。それは、「文字」と比較しての「文字列」です。

 コンピュータの処理として、「文字」と「文字列」は完全に区別されます。「文字列」が「文字」の集まりだというのは当然ですが、その二つは内部的な表現が異なり、コンピュータにとっては全く違うものとして認識されているのです。

 非常にメジャーな言語であるCで言えば、「文字」はシングルクォーテーションで括られたバイト(1バイトのchar型)であり、「文字列」はダブルクォーテーションで括られている、末尾に '\0' が付加されたバイト列のことです。つまり文字を単に並べれば文字列になるわけではなく、最後に文字列の終端を表す '\0' を加える必要があります。Mac OS X の Cocoa であれば「文字」は unichar型で表され、文字列は NSString として表現されます。このようにコンピュータ内部において、文字と文字列は表現方法から完全に区別されているのです。

 ならば、と勘がいい人は気付いたかもしれませんが、「一文字の文字列」というものも存在します。単なる「a」という文字であっても、それが「文字」であるか「文字列」であるかによって、コンピュータでの処理方法は完全に違うものになります。「一文字の文字」と「一文字の文字列」はコンピュータ内部では完全に区別されているのです。

 これが「文字」と比較した時に表れる、「文字列」の持つもう一つの意味なのです。

・まとめ

 ここまでの文章で、ちょっとは「文字列」についての理解が深まったのではないでしょうか。このように単語をひとつひとつ理解していけば、ちょっとはパソコンに対するアレルギーもなくなるとは思いますけど。ディスクトップではなくデスクトップだと知れば「ああ、机の上ね」ということで理解が深まると思うのです。受信トイレではなく受信トレイだと知れば「メールの入れ物か!」と分かるのでは。

 この文章が「文字」ではないことは確かですが、意味を持った「文」の集合であるのか単なる「文字列」でしかないのか。その判断は難しいところです。

2005.2.24初版