〒518-0418 三重県名張市富貴ヶ丘5番町96番地

この1分の動画を見てから、記事を読めばより理解が深まるよ!

情報の教科書に出てくる「文字コード」について教えて!

こんにちは、タクミ先生です。今回は、プログラマーを目指すヒロ君にとって大切な「文字コード」についてお話ししましょう。文字コードとは、文字がコンピュータ内でどのように表現されるかを定めた規格で、様々な文字をコンピュータで扱う上で欠かせない知識です。例えば、日本語の場合はShift_JISやUTF-8などが使われます。特に近年は国際化が進んでいるため、様々な言語や文字を扱えるようなUnicodeという規格が主流となっています。文字コードには多くの種類がありますが、適切な文字コードを選ぶことで、プログラムの正確性を維持することができます。プログラマーとしてのスキルアップには不可欠な知識ですので、しっかりと理解しておきましょう。

文字コードとは何ですか?

【質問】
ヒロ:タクミ先生、文字コードとは何ですか? 【回答】
タクミ:ヒロさん、文字コードとは、文字や記号などをコンピュータで扱えるように、数字の形で表したものです。たとえば、アルファベットの”A”は、文字コードでは65に対応しています。このように、文字にはそれぞれ数字が割り当てられています。理解できましたか?

文字コードを使用する理由は何ですか?

ヒロ:タクミ先生、こんにちは!文字コードを使用する理由って何ですか?
タクミ先生:それはね、コンピューターがテキストを扱うために、文字を数字に変換する必要があるからなんだよ。
ヒロ:数字に変換するって、どういうことですか?
タクミ先生:例えば、アルファベットの「A」を扱う時、コンピューターは「01000001」という16進数表記の数値に変換してから処理をします。つまり、文字を数字に変換してから処理をすることで、コンピューターが文字を扱うことができるようになるんだよ。
ヒロ:なるほど!数字に変換することで、コンピューターが扱えるようになるんですね。ありがとうございます!
タクミ先生:どういたしまして。もし分からないことがあったら、いつでも聞いてね。

どのような規格が文字コードに存在しますか?

ヒロ:先生、どのような規格が文字コードに存在しますか?
タクミ:うーん、分かりやすく説明するよ。文字コードとは、文字を数字で表す規則のことだよ。例えば、アルファベットの「A」は、Unicodeと呼ばれる規格では65と表されるんだ。他にもASCIIやJISなどいろんな規格があるよ。
ヒロ:なるほど、UnicodeとかASCIIとかあるんですね。でも、それぞれどういう違いがあるんでしょうか?
タクミ:そうだね。簡単に言うと、Unicodeは世界中のあらゆる文字を扱えるようになっていて、大文字小文字の区別がなかったりする規格だよ。一方、ASCIIやJISは、アルファベットや数字、一部の記号しか扱えなかったり、日本語の漢字やひらがな、カタカナが含まれている規格だよ。
ヒロ:なるほど、規格によって扱える文字が違うんですね。どの規格を使えばいいのかわからなくなってきたので、これから勉強してみます。
タクミ:そうだね。どの規格を使うかは、プログラムを開発する際の用途や環境、文書の言語によって選ぶ必要があるよ。それぞれの規格についてしっかり勉強して、適切な規格を使うように心がけてね。

ASCIIとは何ですか?

ヒロ:タクミ先生、ASCIIって何ですか?
タクミ:えーと、ASCIIってのは、コンピューターで文字を表現するための規格だよ。例えば、アルファベットや数字、記号など、色んな文字を上手く扱えるように決められたルールみたいなものだよ。
ヒロ:そうだったんですね。でも、そのルールを決める人っているんですか?
タクミ:そうだね。それは、アメリカで活躍したコンピュータ技術者の一人、アメリカ国立標準技術研究所のボブ・ブレマーさんが作ったんだよ。だから、ASCIIっていうのは、彼の名前をとって「American Standard Code for Information Interchange」の頭文字を取ったものなんだ。
ヒロ:なるほど、ブレマーさんが作ったんですね。よく分かりました。ありがとうございました。
タクミ:どういたしまして。もしこのルールに興味があったら、もっと調べると面白いかもしれないよ。

どのようにしてASCIIが決められましたか?

ヒロ:タクミ先生、こんにちは。ASCIIってどうやって決められたんですか?
タクミ:ほんとにうまく説明できるかわからないけど、がんばって説明するね。昔のパソコンは、文字を表示するために数字を使ってたんだよ。その数字のセットがASCIIコードっていうものなんだ。例えば、数字の「65」はアルファベットの「A」を表してて、「66」は「B」、「97」は「a」って感じだ。これが決められたのは、昔のパソコンの世界で統一された文字コードが必要だったからなんだ。
ヒロ:なるほど、数字のセットで文字を表示するんですね。どうして数字が採用されたんですか?
タクミ:数字を使うという考え方は、昔のテレタイプ機(通信機器)からきてるんだよ。テレタイプ機では、文字を打つと、それに対応する記号の穴が広がって、それを電流が流れたり止まったりすることで、相手のテレタイプ機に文字が表示されてたんだ。数字を使うことで、デジタル的な世界でも同じ仕組みで文字を表示できるようになったんだ。
ヒロ:なるほど、そういう歴史的な背景があるんですね。ASCIIを知ることで、プログラムの世界も昔の技術から発展していることが分かりました。ありがとうございました、タクミ先生。

ASCIIの範囲内でどのような文字が使用できますか?

ヒロ:タクミ先生、ASCIIって何が使えるんですか?
タクミ:ASCIIとは、アルファベットや数字、記号などが使える文字集合のことですよ。
ヒロ:アルファベットや数字、記号が使えるんですね。じゃあ、どんな文字が使えますか?
タクミ:ASCIIでは、アルファベットのAからZまで、数字の0から9まで、そして、!や?、#や$、%などの記号も使用できますよ。
ヒロ:え、そんなに多くの文字が使えるんですか?覚えておくの大変そうだな…
タクミ:そんな風に思うかもしれませんが、たくさんあるわけではありませんよ。アルファベットや数字は、学校の教科書で見る文字と同じですし、記号も使う機会が多いものばかりですから、すぐに覚えられるでしょう。
ヒロ:なるほど、でも、全ての文字を覚えなくてもいいですよね?
タクミ:確かに、全てを覚える必要はありません。プログラミングをする時に使う文字を覚えておいて、必要な時に調べるというのが良いですよ。

拡張ASCIIとは何ですか?

ヒロ:タクミ先生、拡張ASCIIって何ですか?
タクミ:よく聞いてくれたね、ヒロくん。拡張ASCIIとは、アルファベットや数字、記号以外の文字を表現する文字コードのことなんだよ。例えば、日本語や中国語などの文字をコンピューターで扱うために使われるんだ。
ヒロ:なるほど、拡張ASCIIは文字をコンピューターで扱うためのコードだってことですね。
タクミ:そうだね、その通りだよ!文字って結構種類があるから、それらを機械的に扱うためにはコードが必要だよ。拡張ASCIIは、文字だけでなく、音声や画像などの扱い方にも応用されている技術だよ。最近では、音声認識や顔認識などにも使われているんだ。
ヒロ:なるほど、コードというのは文字だけじゃなく、いろいろなデータを扱うのに必要なんですね。他にも、面白い技術があったら教えてください!

Unicodeとは何ですか?

ヒロ: タクミ先生、Unicodeって何ですか?
タクミ: Unicodeとは、世界中で使われている文字を統一的に表現するための規格です。例えば、日本語や英語、ロシア語などさまざまな言語の文字を1つのプログラム、1つのデータベースで扱えるようにするための仕組みです。
ヒロ: 統一的ってどういうことですか?
タクミ: 例えば、日本語の文字コードと英語の文字コードが違っていた場合、プログラムがその2つの言語を同時に扱うことができないですよね。Unicodeは、そういった問題を解決するために、世界中にあるすべての文字に固有のコード番号を割り当てて、プログラムがそれを認識できるようにするんです。
ヒロ: なるほど、すごい仕組みですね!
タクミ: そうなんです。Unicodeがなければ、多言語に対応したプログラムやウェブサイトの開発がとても難しくなってしまうでしょう。

Unicodeが登場するまでに問題になったことは何ですか?

ヒロ:タクミ先生、Unicodeって何ですか?昔の文字コードと何が違うんですか?
タクミ:ヒロくん、Unicodeは、昔の文字コードでは扱えなかった文字を扱えるようになった基準です。以前は、国ごとに異なる文字コードが存在していたため、異なる文字コードを使用した人同士がやり取りをすると文字化けが起こってしまいました。Unicodeが登場することによって、異なる文字コードを使用しても、文字化けを防ぐことができるようになったんです。
ヒロ:なるほど、Unicodeは世界中で使える文字コードみたいなものなんですね。でも昔の文字コードと比較して、どういう利点があるんですか?
タクミ:そうですね。以前の文字コードでは、扱える文字が限られていたため、世界中で使用されている言語を扱えなかったり、さまざまな記号やアイコンを取り扱うことができなかったのです。Unicodeが登場することによって、世界中で使用されているさまざまな言語を扱えるようになり、また、より多くの記号やアイコンを扱えるようになったのです。つまり、文字の種類が増えたので、より豊かな情報表現が可能になったということですね。

UTF-8とは何ですか?

ヒロ:タクミ先生、UTF-8って何ですか?
タクミ:ええと、UTF-8は文字のコード化の方式の一つで、様々な言語や文字が使えるようになっているんだよ。
ヒロ:文字のコード化?言葉が難しいです。
タクミ:例えば、文字をコンピューターで扱う場合は、コードに変換する必要があるんだ。UTF-8は、コンピューターで使われる「0」と「1」で文字をコード化する方法の一つなのさ。
ヒロ:なるほど。他にもコード化の方法はあるんですか?
タクミ:はい、あります。例えば、日本語の文字を扱う場合はShift-JISという方式があります。ただ、UTF-8は世界的に使われていて、様々な言語や文字に対応しているので、プログラミングをする上では便利なのです。

UTF-8が採用されるようになった理由は何ですか?

ヒロ:タクミ先生、UTF-8って何ですか?なんで使われるようになったんですか?
タクミ:ヒロさん、UTF-8とは、文字コードの一種で、文字の扱い方を定義しているものだよ。昔は文字コードにはいろんな種類があったんだけど、UTF-8が最も使われるようになったんだ。何かわかる?
ヒロ:あ、文字コードっていうのは、文字をどうやってコンピュータに伝えるかってことですよね。それで、UTF-8はたくさんの言語に適用できて、どんな文字にも対応できるんですね。
タクミ:そうそう、ヒロさんの言うとおり。UTF-8は、日本語や英語だけでなく、中国語やアラビア語などの文字にも対応しているし、インターネット上での規格にもなっているよ。
ヒロ:なるほど、それで普及していったんですね。
タクミ:そうだね。そして、UTF-8はコンピュータの処理をするときにも便利なんだ。たとえば、UTF-8には、英語のアルファベットの場合は1バイトしか必要ないけれど、中国語の文字の場合は3バイト必要だよ。でも、UTF-8では、それぞれの文字によって必要なバイト数が自動で判別されるから、処理が高速にできるんだ。
ヒロ:なるほど、バイト数が可変長になっているから、コンピュータの処理が効率的に進むんですね。
タクミ:そうそう、ヒロさん、理解が深まってきたね。UTF-8は今後も主流となっていくでしょうね。

UTF-8の特徴は何ですか?

ヒロ:タクミ先生、こんにちは!
タクミ:こんにちは!何か質問があるんだね。
ヒロ:はい!UTF-8というのがあるんですけど、その特徴は何ですか?
タクミ:おっ、いい質問だね!UTF-8は、テキストの文字をコンピューターで使える形式に変換するための規則の一つで、世界中で使われているんだよ。
ヒロ:なるほど、でもそんなに特別なんですか?
タクミ:それがね、UTF-8は、多言語に対応していることが最も大きな特徴なんだ。英語だけではなく、日本語や中国語など、様々な言語を扱えるようになっているんだ。また、文字を表すためのビット数を柔軟に変えることができるので、ファイルサイズを小さくすることができるんだよ。要するに、世界共通の規則で多言語に対応して、ファイルサイズを小さくすることができる、というのがUTF-8の特徴なんだよ!

ANSIコードとは何ですか?

ヒロ:タクミ先生、ANSIコードって何ですか?
タクミ:うん、ANSIコードね。まずは文字コードっていう言葉を知ってる?文字をコンピューターが理解できる数字に変換する規則のことだよ。
ヒロ:なるほど。でも、ANSIコードってどういう文字コードなんですか?
タクミ:ANSIコードは、アルファベットや数字、記号などの文字の表現に使われる規格だよ。Windowsの標準文字コードで、日本語にも対応しているんだ。
ヒロ:なるほど、わかりました!でも、例えば何かANSIコードが使われてるものはありますか?
タクミ:うん、例えばメモ帳に書かれたテキストファイルなんかは、ANSIコードを使ってエンコードされた文字列になっていることが多いよ。
ヒロ:メモ帳なんかはよく使うから、それがANSIコードで書かれてるんだね。ありがとう、タクミ先生!

ANSIコードとASCIIコードの違いは何ですか?

ヒロ:先生、ANSIコードとASCIIコードって何が違うんですか?
タクミ:うーん、簡単に言うと、ANSIコードはASCIIコードの拡張版だよ。ASCIIコードがアルファベットや数字、記号などを表現するために使われる文字コードだとすると、ANSIは多言語にも対応した文字コードだよ。
ヒロ:あ、そうなんですね。でも具体的にはどういう違いがあるんですか?
タクミ:たとえば、ASCIIコードでは日本語の漢字やひらがな、カタカナなどは表現できないんだけど、ANSIコードではそれらも表現できるようになるんだ。なんか、英語で話すときにアルファベットだけじゃなく、フランス語で「bonjour(ボンジュール)」とか、スペイン語で「hola(オーラ)」とか使うように、文字コードでもある程度の多様性が必要なわけだ。
ヒロ:なるほど、ANSIコードはASCIIコードよりも多様性があるってことですね!
タクミ:そうそう、そのとおりだよ。さらに言うと、ANSIは、多言語版のWindowsなどで使われることが多く、日本語版Windowsでも多少使われているんだ。でも、近年ではUnicodeという文字コードが普及してきているから、もっと多言語に対応したUnicodeが主流になってきているんだよ。

EBCDICコードとは何ですか?

ヒロ:タクミ先生、EBCDICコードって何ですか?
タクミ:それはね、パソコンで文字を扱うための符号化方式の1つなんだよ。例えば、日本語で文字を入力するときには、Unicodeという方式が使われるけど、EBCDICは英語圏で使われていたんだ。
ヒロ:Unicodeとどう違うんですか?
タクミ:えーと、Unicodeは世界中の文字を扱えるようにできた方法なのに対して、EBCDICは英語圏の文字しか扱えないんだ。例えば、日本語の文字はEBCDICでは使えないんだよ。
ヒロ:なるほど、じゃあ、EBCDICは今でも使われているのですか?
タクミ:最近はほとんど使われなくなっているよ。昔のメインフレームコンピューターで使われていたんだけど、今はほとんどがUnicodeを使っているみたいだよ。でも、EBCDICを使ったシステムもまだ残っているから、知っておくと便利かもしれないね。

EBCDICコードの特徴は何ですか?

ヒロ: タクミ先生、EBCDICコードって何ですか?
タクミ: えーっと、簡単に言うと、EBCDICコードは文字をコンピューターで扱うための一種の規格です。例えば、普段使っているマイクロソフトのWindowsやアップルのMac OS Xなどが採用しているのは、Unicodeという規格です。
ヒロ: それってどう違うんですか?
タクミ: EBCDICコードとUnicodeの違いですね。例えば、EBCDICコードではアルファベットのAは6進数でC1、Unicodeでは16進数で0041というコードになります。つまり、同じアルファベットでも、コンピューターが扱う際の「数字の表現」が違うんですよ。
ヒロ: なるほど、コードって表現方法なのですね。ありがとうございます。

JISコードとは何ですか?

ヒロ: タクミ先生、JISコードってなんですか?
タクミ: わかります。JISコードとは、文字や記号をコンピュータで扱うための規格のことです。普段、パソコンで文字を入力していると思いますが、パソコン内部ではそれぞれの文字や記号がJISコードに変換されているのです。例えば、あいうえおという日本語の文字は、それぞれの文字に対応したJISコードが割り振られています。わかりやすく言えば、JISコードは文字や記号をコンピュータが理解できる言語に変換するための辞書のようなものですね。

ISO-2022-JPとは何ですか?

ヒロ:ISO-2022-JPって何ですか?
タクミ:ISO-2022-JPは、日本語の文字コードの一つだよ。パソコン内で文字を扱う際に、どのように文字を表現するかを決める約束事のようなものだよ。
ヒロ:約束事って、具体的には何を決めているんですか?
タクミ:例えば、英数字は1バイトで表現し、ひらがな・カタカナ・記号は2バイト、漢字は3バイトで表現する、というように、どの文字にどのくらいのバイトを使うかが決まっているんだよ。
ヒロ:なるほど、そういうことなんですね。ありがとうございます!
タクミ:いいえ、どういたしまして!ISO-2022-JPは古い文字コードの一つだから、今ではあまり使われなくなってきたけど、プログラミングで日本語を扱うときに知っておくと便利だよ。

Shift_JISとは何ですか?

ヒロ:タクミ先生、Shift_JISとは何ですか?
タクミ先生:Shift_JISとは、日本語をコンピュータで扱う際に使う文字コードの一つです。文字コードとは、文字に対応する数字の表現方法のことです。例えば、あいうえおという日本語の文字列をコンピュータ上で表現するためには、それぞれの文字に対して数字を割り当てる必要があります。Shift_JISは、日本語を2バイト(2つの数字)で表現する方法です。
ヒロ:なるほど、でも他にも文字コードはたくさんありますよね?
タクミ先生:そうですね。ASCIIやUTF-8など、多数の文字コードがあります。それぞれに特徴があるので、どれを使うかは状況によって異なってきます。例えば、ASCIIは英数字だけを扱うのに向いていて、UTF-8は世界中の言語を扱うのに向いています。
ヒロ:分かりました!Shift_JISは日本語をコンピュータで扱うための文字コードだね。ありがとう、タクミ先生!
タクミ先生:どういたしまして!何か質問があったら、いつでも聞いてくださいね。

文字コードを変換するとどのような問題が発生することがありますか?

ヒロ:タクミ先生、文字コードを変換するとどのような問題が発生することがありますか?
タクミ:よく聞いてね、ヒロくん。文字コードを変換すると、文字化けが起こることがあります。
ヒロ:文字化けって何ですか?
タクミ:例えば、日本語の文章を英語圏の国に送ったとします。日本語の文章は日本語の文字コードで書かれているのに対し、英語圏では英語の文字コードを使います。このままだと、英語のパソコンで日本語が文字化けしてしまうんです。
ヒロ:なるほど、そういうことが起こるんですね。どうすればいいですか?
タクミ:そうですね。文字コードを変換する場合は、変換先の文字コードに合わせて変換する必要があります。例えば、日本語を英語圏の国に送る場合は、英語の文字コードに変換してから送る必要があります。そのようにすることで、文字化けを防ぐことができますよ。