04:ファイルと文字コード

◆PROCESSINGで始めるゲーム作りとコンピュータ

village 04:ファイルと文字コード

今日の話題

 

12:ファイルとフォルダ

コンピュータが一時的に情報を記憶する部分をメモリといい、長期的に情報を記憶する部分を外部記憶装置と呼ぶのでした。

外部記憶装置として有名なものには、ハードディスクドライブ装置(HDD)があります。HDDは、パット見た目はただの四角い金属の箱です。金属の箱といっても弁当箱ではありません(笑)。

弁当箱
(画像URL:illust-AC 様:acworks さん)

HDDの金属の箱を特殊な工具でパカッと開けると(あ、気軽には開けないで下さいね。素人が開けるとHDDが壊れます:汗)、中にはオニギリ・・・ではなくて円盤状の板が複数枚搭載されています。

この円盤状の板の事をプラッタと言います。

円盤状の板には、カセットテープのような磁性体が塗られています。そして、アクチュエータと呼ばれるアームの先端に取り付けられた磁気ヘッドが円盤の上をスライドする事で、磁性体に情報を記録する仕組みとなっているのです。

HDD構造
(画像URL:Logitec 様)

例えるならプラッタがレコード盤で、磁気ヘッドがレコード針みたいなものでしょうか?。・・・といっても、今の若い人たちにはレコード盤を知らない人も見えそうですね(汗)。

プラッタは、中央に取り付けられたスピンドルモーターの力で高速に回転しています。どのくらい高速に回転しているかといえば、一般的なHDDで毎分5400回転から7,200回転です。高速な製品では15,000回転を超えるものもあります。

これは最も早く回るプラッタの最外周部で、なんと時速100km/hを超える速度になります。そのプラッタの上を、わずか数ナノメートル(1ナノメートル=10億分の1メートル)だけ浮いた状態で、磁気ヘッドが動いているのです。
(参考URL:Logitec 様)

img_01(画像URL:Logitec 様)

ものすごいテクノロジーです。やはりHDDはタダの弁当箱とは一味違います(笑)。

そして私達が普段目にするWindowsでは、ファイルと呼ばれる「記録したい情報をひとまとめにした塊」を、フォルダ(またはディレクトリ)と呼ばれる「入れ物」にまとめて、階層構造で管理する仕組みとなっています。

ファイルが情報を記録した1枚1枚のメモなら、フォルダはメモを閉じた書類BOXのようなものです。

書類BOXにはファイル以外にも、別の書類BOXをいれる事が可能です。このように、目的別に情報を管理できる構造となっているのです。

ファイルとフォルダ
(画像URL:illust-AC 様:GOL13 さん、かえるWORKS さん)

ファイルやフォルダには任意の名前を付けることができます。

現在よく目にするWindows7やWindows8、そしてWindows10では、ファイル名やフォルダ名に255文字までの名前をつける事が可能です。

もしもあなたが恥ずかしくないなら、「これは秘密のフォルダだから、関係者以外は見ちゃダメよ」なんて長い名前をつける事もOKです(笑)。

ところが、その昔Windowsが使われる前まで(MS-DOSというOSが使われていた時代)は、ファイル名をMAX8文字+ピリオド+3文字で付けるルールとなっていました。

himitsu1.txt

みたいな感じですね。このピリオドより後ろの3文字の部分を拡張子と呼びます。上の例なら「txt」部分です。

拡張子とは

WindowsではMS-DOS時代からの伝統に従い(?)、今でもファイル名をつける際には拡張子を3文字とし、拡張子でファイルの種類を区別するのが暗黙のルールとなっています。

ただしWindowsでファイルやフォルダの一覧を表示するファイルエクスプローラー(※)では、最初は拡張子を表示しない設定となっています。
※以降、長いので単に “エクスプローラ” と書きます。インターネットエクスプローラはIEと記述して区別します

プログラムを作成する上で拡張子は意識する事が多いので、プログラミングを学習したい方は、エクスプローラで拡張子を表示する設定に変更しておく事をオススメします。

拡張子の表示方法がわからないという方は、下記コラムを参照してください。

 

13:文字コード

コンピュータは全ての情報を1と0で管理していると、お話しました。これはコンピュータで扱う全ての情報についていえるルールです。

ですので、実は今あなたが読んでいる「文字」も、コンピュータでは全て1と0で管理されています。

具体的には各文字に固有の番号を割り振って、文字を識別しています。

  • 1番:あ
  • 2番:い
  • 3番:う

といった感じですね。この文字に割り振る番号の事を文字コードと呼びます。

学校では沢山の生徒を管理するために、各生徒に番号をつけますよね。あれと一緒です。文字に番号を割り当てて管理しているのです。例えば「あいう」と書かれた文章なら「1と2と3」という番号で管理します。

コンピュータは全て2進数で情報を記録するので、1=001、2=010、3=011というように最終的には全て1と0に置き換えて、「あいう=001010011」として情報を記録します。

文字コードとは
(画像URL:illust-AC 様:ねむき さん、麦さん)

話がヤヤコシイのは、どの文字に何番を割り当てるのかというルールが、沢山存在する事です。歴史的な経緯もあって、非常に込み入った事情となっているのです。

代表的な文字コードにShift_JIS(シフトジス)があります。昔からWindowsで採用されてきた文字コードです。

近年は国際化への対応から、世界中の全ての文字を同じ番号体型で扱えるようにする目的で、UTF8(ユーティエフハチ)とかUTF16(ユーティエフジュウロク)と呼ばれる文字コードが主流となってきました。

これから学習するPROCESSINGも、推奨の文字コードはUTF8となっています。

 

14:全角文字と半角文字

大昔のコンピュータは英数字と一部の記号文字しか扱うことができませんでした。今のように漢字や平仮名が使えなかったんですね。ちょっと信じられませんが、オジサマが最初に使ったコンピュータもそうでした。

「あ愛」のような漢字や平仮名を「2バイト文字」や「全角文字」、「ABC」や「=^/」のような文字を「1バイト文字」や「半角文字」と呼ぶことがあります。

大昔。コンピュータがまだ英数字と一部の記号しか扱えなかった時代に、全ての文字を表現するのに、文字の番号が128個あれば足りる時代がありました。

ちなみに現在良く使われているUTF8では、1文字をMAX4バイトで表現し、U+1FFFFF個(209万7152個)までの文字を扱うことが可能です。※

※実際にはU+10FFFF(111万4111)より大きな文字コードは扱われません。また1文字をMAX6バイトで表現する方法もあるようですが、問題もあるようです

ASCIIコード表
(画像URL:IT用語辞典 e-Words 様)

上記表のように0番から127番までで、すべての文字が管理可能だった(それしか管理できなかった)のです。

コンピュータは英語圏の産物です。そして、外人さんにはアルファベットと数字が扱えれば十分だったんですね・・・きっと(笑)。この時代の文字コードの事を、ASCⅡ(アスキーツー)コードと言います。

127は1バイト(8bit)で表現可能な数値です。

その後コンピュータが世界的に使われるようになった際、漢字や平仮名を使いたい人たちのために、漢字や平仮名が扱える文字コードが考案されました。先ほど紹介したShift-JISなどもその1つです。

例えば日本で普段使われている漢字(常用漢字)は2136文字あります。これらの文字をコンピュータで管理するには、1つ1つの文字に番号を割り振らなければいけません。

単純に0から2135までの番号を振って文字を管理したとすると、全部の漢字を管理するのに2136個の番号が必要になります。2136という数字を表現するには、12bitの情報が必要です。

管理とbit数
「本屋」という2文字を管理するには、12bit×2=24bit の記憶容量が必要となるのです。

漢字模様
(画像URL:illust-AC 様:カスミン さん)

コンピュータで扱う情報の最小単位は1bitです。しかし、1bit単位で情報を扱うといろいろと煩雑な(面倒くさい)ので、実際には1バイト単位で情報を記録しています。

コンピュータの中では、12bitの情報は2バイト(16bit)として管理されているのです。

この事から、管理する文字の数が増えれば増えるほど、1文字を記憶しておくために必要なメモリやHDDの容量が増える事がわかるかと思います。

当時のコンピュータは性能も記憶容量も、今のコンピュータに比べて大変厳しい(少ない)ものでした。メモリなども非常に高価だったので、無駄遣いは許されなかったのですね。だから、1文字を管理するための情報量はなるべく少なくしたい。

そこで、それまであったASCⅡコードで表現できる文字はそのまま1バイトで管理し、漢字や平仮名は2バイトで管理する事にしたのです。

また、当時のコンピュータやワープロは1文字がみんな同じ字幅を持っていて、文字を格子状の四角形に並べて表示していました。ちょうど原稿用紙に1文字1文字書いていくような感じです。

原稿用紙
(画像URL:illust-AC 様:azuki さん)

アルファベットや数字で1マス、漢字なら2マスを利用しました。

この事と、アルファベットや数字を1バイト、漢字を2バイトで管理する事があわさって、いつしか1バイト文字を半角文字、2バイト文字を全角文字と呼ぶようになったのです。
(参考URL:IT用語辞典 e-Words 様)

以降の記事で「半角文字」と書かれていたら、アルファベット(ABC)や数字(012)、記号(=^-\)などの文字、「全角文字」と書かれていたら漢字や平仮名、「A」や「ア」などの幅が広い文字と考えて下さい。

「A」は半角文字。「A」は全角文字。「ア」は半角文字、「ア」は全角文字です。

 

コラム1:拡張子の表示方法

1.エクスプローラを開きます

エクスプローラを開きます。開き方は以下の通りです。タスクバー(通常は一番下にある細長いエリア)の左端にあるマークをクリックします。

Windows7の場合

task_exp

Windows8の場合

task_exp_8

Windows10の場合

task_exp_10

 

2.表示設定を変更します

Windows7の場合

キーボードの「Alt」キーを押します。エクスプローラーの上にメニューが表示されますので、メニューから「ツール(T)」をクリックし、表示されたメニューで「フォルダーオプション(O)」をクリックします。

exp_option
フォルダオプションが表示されますので、真ん中の「表示」タブをクリックします。スクロールして、下の方に移動して下さい。

exp_option_disp_1
「登録されている拡張子は表示しない」のチェックを外してOKボタンを押します。

exp_option_disp_2

Windows8の場合

エクスプローラーの上部にある表示メニューをクリックすると、リボンインタフェースが表示されます。その中にある「ファイル名拡張子」のチェックをつけて下さい。

exp_option_8

Windows10の場合

Windows8と同じです。エクスプローラーの上部にある表示メニューをクリックすると、リボンインタフェースが表示されます。その中にある「ファイル名拡張子」のチェックをつけて下さい。
exp_option_10

 

Forest今日の言葉

・プラッタ

HDDで情報を記録する円盤。UFOではありません。HDDのフタを開ける時は、壊す覚悟でやりましょう(自己責任です)。

・磁気ヘッド

アクチュエータと呼ばれるアームの先端に取り付けられた装置。プラッタの上を滑るように移動して、プラッタへ情報を書き込んだり読みだしたりします。

・ファイル

記録したい情報をひとまとめにした塊の事。あの子に宛てた1通のラブレター(便箋)みたいなものです(笑)。

・フォルダ

ディレクトリとも言います。ファイルやフォルダをいれる箱です。ラブレターがファイルなら、フォルダは封筒ですね。

・拡張子

ファイル名の本体とピリオドで区切られた後ろの文字です。Windowsでは昔ながらのルールで、拡張子に3文字の英字が使わる事が多いようです。

・文字コード

文字1つ1つに割り振った管理用の番号。または番号の割り振り方の名前。Shift-JIS、UTF8、UTF16、EUCなどが有名です。

・ASCⅡ(アスキーツー)コード

1バイト(正確に言うと7bit)であつかえる数値の範囲で、各文字を表現する仕組み。アルファベットと数字、一部の記号文字を扱う文字コードです。

・半角文字

1バイトで文字コードを表現できる文字の事。英字、数字、一部の記号文字などを指します。ASCIIコードが代表例です。

・全角文字

2バイト以上で表現される文字の事。UTF8やUTF16が使われるようになった現在では、全角文字=2バイトとは限らないので注意が必要です。

 

 今日のまとめ

  • HDDで情報を記録する円盤をプラッタと呼び、磁気ヘッドでプラッタを読み書きする
  • ファイルとフォルダを使って、情報を管理する仕掛けとなっている
  • 文字を管理するために番号が割り振られている。それを文字コードという
  • 昔は全角文字=漢字だったけど、今はちょっと違う

05:変数と定数と型へ進む
03:ソフトウェアの種類に戻る
目次へ戻る


本ページで利用している特に参照元記載のないアイコン画像は、下記サイト様より拝借しております。各画像の著作権は、それぞれのサイト様および作者にあります。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)