初級では「名札(拡張子)・中身(0と1)・読み方(形式)・担当(アプリ)」の4点セットを見ました。ここでは中身側の証拠と読み方の決まりの実名に踏み込みます。読み終わる頃には、文字化けと「開けないファイル」を理屈で切り分けられるはずです。
用語には「※1・※2…」と番号を付けて、各セクション末尾の「登場人物メモ」で説明します。
初級では「名札(拡張子)・中身(0と1)・読み方(形式)・担当(アプリ)」の4点セットを見ました。ここでは中身側の証拠と読み方の決まりの実名に踏み込みます。読み終わる頃には、文字化けと「開けないファイル」を理屈で切り分けられるはずです。
用語には「※1・※2…」と番号を付けて、各セクション末尾の「登場人物メモ」で説明します。
🎬 アニメーション『ダブルクリックの3秒』の ② のところです!
名札は拡張子だけではありません。世界には3種類の「種別の伝え方」があります:
file コマンドやアップロード検証が見るContent-Type ヘッダで配信側が宣言し、ブラウザはこれに従う登場人物メモ(※の説明):
89 50 4E 47、ZIPなら 50 4B、PDFなら %PDF など、形式ごとの署名。名札と違って中身に埋まっているtext/html image/png のような「大分類/小分類」表記。名前の由来はメールだが、今はWeb全体の標準⚠️ イレギュラー(3つの証言が食い違うとき):
🎬 アニメーション『ダブルクリックの3秒』の ② のところです!
上級では「名札を信じない」立場から、種別を確かめる3系統を精密にします。
種別を厳密に判定したいプログラムは、名札ではなく先頭バイトを読む。UNIX系の file コマンドや、サーバのアップロード検証がこれです。拡張子・マジックナンバー・MIMEタイプは互いに独立しており、一致する保証はない——その隙間こそが、後で見る偽装の余地になります。
登場人物メモ(※の説明):
89 50 4E 47、ZIPは 50 4B、PDFは %PDF、ELF実行形式は 7F 45 4C 46 など、形式ごとに決まった先頭バイト列。中身側の物証image/png text/html のような「大分類/小分類」表記。名前の由来はメール(Multipurpose Internet Mail Extensions)だが、今はWeb全体の標準⚠️ イレギュラー(3つの証言が食い違うとき):
中身が結局すべて0と1であることは 2進数とデータ を参照。
🎬 アニメーション『ダブルクリックの3秒』の ② のところです!
ファイル名の . より後ろが拡張子です。report.pdf なら pdf、cat.jpg なら jpg。
名札は自己申告なので、書き換えても中身は1ビットも変わりません。cat.jpg を cat.txt に改名しても、写真のデータはそのまま——ただ、担当がメモ帳に変わって、ぐちゃぐちゃの文字が表示されるだけです。
⚠️ イレギュラー(名札にだまされるとき):
🎬 アニメーション『ダブルクリックの3秒』の ③〜④ のところです!
OSの対応表と、その周辺の実装です:
⚠️ イレギュラー(対応表まわりの事故):
🎬 アニメーション『ダブルクリックの3秒』の ③〜④ のところです!
「拡張子→アプリ」の対応表を、OSは具体的にどこに持っているか。機構はOSごとに違います。
.pdf の担当変更は、この階層の書き換えmimeapps.list で「このMIMEタイプ→この既定アプリ」を引く。拡張子を直接ではなく、いったんMIMEタイプを介すのが特徴共通する構図は「関連付けはファイルではなくOSのローカル設定」。だから同じ拡張子でも人のPCで担当アプリが違い、世界共通の一元データベースは存在しません。
登場人物メモ(※の説明):
⚠️ イレギュラー(関連付けまわりの事故):
OSがアプリを起動して橋渡しする流れは アプリとOS を参照。
🎬 アニメーション『ダブルクリックの3秒』の ③〜④ のところです!
OSは「この名札は、このアプリの担当」という対応表を持っています。
.pdf → PDF閲覧アプリ、.jpg → 画像ビューア、.mp3 → 音楽プレイヤー同じ .pdf でも、人のPCによって開くアプリが違うのはこのためです。対応表はファイルではなくOSが持っている——ここを押さえると設定画面の意味が読めるようになります。
🎬 アニメーション『ダブルクリックの3秒』の ⑤〜⑦ のところです!
「読み方の決まり」の実名はファイルフォーマット仕様です。解読には層があります:
登場人物メモ(※の説明):
⚠️ イレギュラー(解読の事故):
Linux/Macのターミナルで file 名前 と打つと、拡張子を無視してマジックナンバーから種別を判定してくれます。cat.txt に改名した画像も JPEG image data と見破ります。名札(拡張子)・中身(マジックナンバー)・読み方(フォーマット)が別物であることを、手元で1分で確認できる実験です。
まとめ——種別の証言は名札(拡張子)/ 中身の署名(マジックナンバー)/ Webの宣言(MIMEタイプ)の3系統あり、食い違いこそがトラブルと攻撃の源でした。そして解読の最下層には文字コードと圧縮がいる。「開けない・化ける・劣化する」は全部、この地図のどこかで説明がつきます。
🎬 アニメーション『ダブルクリックの3秒』の ⑤〜⑦ のところです!
担当が中身を読む段でも、「宣言(拡張子・ヘッダ)」と「物証(中身)」のどちらを信じるかで挙動が変わります。
つまり「中身を見破る」には二つの態度がある——宣言を信じて速くするか、中身を検証して安全にするか。上級のシステム設計は、この綱引きの上に立っています。
登場人物メモ(※の説明):
⚠️ イレギュラー(解読の判断ミス):
🎬 アニメーション『ダブルクリックの3秒』の ⑤〜⑦ のところです!
起動された担当アプリが、ようやく中身を読みます。
01001010... というただの0と1の列(どんなファイルでも!)つまり .pdf と .jpg の違いは、中身が文書か写真かという以前に、「0と1をどういう決まりで並べたか」の違いです。決まりを知らないアプリには解読できない——メモ帳で写真を開くとぐちゃぐちゃなのは、故障ではなく「読み方が違う」だけなのです。
⚠️ イレギュラー(解読に失敗するとき):
.mp3 の名札なのに中身がPDF、のようなファイルは担当アプリが解読できずエラーになる.zip も名札の1つですが、中身は「複数のファイルを1つにまとめて、小さく詰め直した」特殊な形式です。担当アプリ(展開ソフト、OSに標準搭載)が解読すると、中から元のファイルたちが出てきます。「ファイルの中にファイルが入る」のではなく、「詰め直した1つの形式から、元の形を復元している」——これも0と1の並べ方の決まりの応用です。
まとめると、拡張子は「ただの名札」です。でも、OSは名札しか見ずに担当を決めるからこそ、名札は仕組みの要になっています。中身(0と1)・名札(拡張子)・読み方(形式)・担当(アプリ)——この4点セットで、ファイルにまつわる不思議はぜんぶ説明がつきます。
そのまま解けます(成績は保存されません)。無料アカウントを作ると、学習の記録と進捗の山登りが始まります。
問1. テキストファイルが「文字化け」する原因として正しいものはどれ?
問2. マジックナンバー(ファイル先頭の署名バイト)の説明として正しいものはどれ?
問3. Webの世界でファイル種別を伝える「MIMEタイプ(Content-Type)」と拡張子の関係はどれ?
問4. 「cat.jpg を cat.png に改名する」ことと「画像アプリで PNG形式として保存し直す」ことの違いはどれ?
問5. JPEGやMP3が使う「非可逆圧縮」の説明として正しいものはどれ?
問6. 圧縮の手順を逆にたどれば元の完全なデータへ戻せる「可逆圧縮」の例の組み合わせはどれ?
問7. 解読の最初の大きな分かれ道である「テキストとバイナリ」の違いとして正しいのはどれ?
問8. Linux や Mac のターミナルで、拡張子を無視してファイル先頭のマジックナンバーから種別を判定するコマンド名を答えてください。