拡張子はただの名札なのか

概要 — まず全体をつかむ

report.pdf をダブルクリックすると、PDFのアプリが「勝手に」立ち上がります。誰が選んだんでしょう? 答えの主役が、ファイル名の末尾にある 拡張子——.pdf.jpg のことです。ダブルクリックの3秒は、かならずこの順番で進みます:

  1. 名札を見る — OSがファイル名の末尾(拡張子)だけを見る
  2. 対応表を引く — 「この名札はこのアプリの担当」という表で担当を決める
  3. アプリが解読する — 担当アプリが中身の0と1を、形式の決まりに沿って読み解く
アニメーション『ダブルクリックの3秒』を開く
あなたOSアプリファイルの中身
  • あなたファイルをダブルクリックする人
  • OS名札(拡張子)を見て、開く係を決める世話役
  • アプリそのファイルの「読み方」を知っている担当者
  • ファイルの中身実体はどれもただの0と1の列。読み方を知る係が必要
「▶ 再生」で通しで見るか、「次へ」で1手ずつ進めてください。
0 / 7

詳細 — 1段階ずつ追う

① 名札を見る

🎬 アニメーション『ダブルクリックの3秒』の のところです!

ファイル名の . より後ろが拡張子です。report.pdf なら pdfcat.jpg なら jpg

  1. ダブルクリックの瞬間、OSは拡張子だけを見る
  2. 中身はこの時点では読んでいない
  3. だから拡張子は「中身の種類を示す自己申告の名札」にすぎない

名札は自己申告なので、書き換えても中身は1ビットも変わりません。cat.jpgcat.txt に改名しても、写真のデータはそのまま——ただ、担当がメモ帳に変わって、ぐちゃぐちゃの文字が表示されるだけです。

⚠️ イレギュラー(名札にだまされるとき):

  • 二重の名札「請求書.pdf.exe」 — 効くのは最後の名札だけ。正体はPDFを装った実行プログラムで、開くと実行されてしまう。ウイルスの古典的な手口
  • 名札が見えていない — OSの初期設定では拡張子が非表示のことがある。上の手口が「請求書.pdf」に見えてしまうので、拡張子は表示する設定にするのが安全
この部分をもっと深く(中級

🎬 アニメーション『ダブルクリックの3秒』の のところです!

名札は拡張子だけではありません。世界には3種類の「種別の伝え方」があります:

  1. 拡張子 — ファイル名の一部。OSのダブルクリック判定が見る(自己申告)
  2. マジックナンバー※1 — ファイル先頭の決まったバイト列。中身側の証拠で、file コマンドやアップロード検証が見る
  3. MIMEタイプ※2 — Webの世界の種別宣言。HTTPレスポンスの Content-Type ヘッダで配信側が宣言し、ブラウザはこれに従う

登場人物メモ(※の説明):

  • ※1 マジックナンバー — PNGなら 89 50 4E 47、ZIPなら 50 4B、PDFなら %PDF など、形式ごとの署名。名札と違って中身に埋まっている
  • ※2 MIMEタイプtext/html image/png のような「大分類/小分類」表記。名前の由来はメールだが、今はWeb全体の標準

⚠️ イレギュラー(3つの証言が食い違うとき):

  • 名札と中身の不一致 — 拡張子は .png なのに先頭バイトはJPEG、のようなファイルは検証のあるシステムで弾かれる。逆に検証しないシステムは偽装ファイルの侵入口になる
  • ブラウザの推測(MIMEスニッフィング) — 宣言が曖昧なとき、ブラウザが中身から推測する機能。便利だが「テキストのふりをした攻撃コード」の実行につながるため、無効化を宣言するヘッダ(X-Content-Type-Options: nosniff)が存在する

② 対応表を引く

🎬 アニメーション『ダブルクリックの3秒』の ③〜④ のところです!

OSは「この名札は、このアプリの担当」という対応表を持っています。

  1. .pdf → PDF閲覧アプリ、.jpg → 画像ビューア、.mp3 → 音楽プレイヤー
  2. OSは表で引いた担当アプリを起動して、ファイルの場所を渡す
  3. 右クリックの「プログラムから開く」は、この対応表を無視して手動で担当を選ぶ操作
  4. そこで「常にこのアプリを使う」を選ぶと、対応表そのものが書き換わる

同じ .pdf でも、人のPCによって開くアプリが違うのはこのためです。対応表はファイルではなくOSが持っている——ここを押さえると設定画面の意味が読めるようになります。

この部分をもっと深く(中級

🎬 アニメーション『ダブルクリックの3秒』の ③〜④ のところです!

OSの対応表と、その周辺の実装です:

  1. OSは「拡張子 → 既定のアプリ」の対応表を持つ(Windowsはレジストリ、macはLaunchServicesが管理)
  2. 「常にこのアプリで開く」は、この表の1行の書き換え
  3. アプリをインストールすると、アプリが「自分は .pdf を開けます」と候補登録する——既定を奪い合う通知が出るのはこのため
  4. ダブルクリック以外の入り口(コマンドラインや「プログラムから開く」)は表を経由せず、任意のアプリに任意のファイルを渡せる

⚠️ イレギュラー(対応表まわりの事故):

  • 既定アプリの乗っ取り — インストール時に関連付けを一斉に自分へ向けるお行儀の悪いソフトがある。急に開くアプリが変わったらここを疑う
  • 二重拡張子 + 非表示設定 — 初級で見た「請求書.pdf.exe」。OSの既定が拡張子非表示だと成立してしまうので、表示設定が対策になる

③ アプリが解読する

🎬 アニメーション『ダブルクリックの3秒』の ⑤〜⑦ のところです!

起動された担当アプリが、ようやく中身を読みます。

  1. アプリがOS経由でファイルの中身を読み込む
  2. 届くのは 01001010... というただの0と1の列(どんなファイルでも!)
  3. アプリはそれを形式の決まり(この並びは色、この並びは文字、という約束。フォーマットって言います)に沿って解読する
  4. 解読の結果が、あなたの見ている「文書」「写真」「音楽」

つまり .pdf.jpg の違いは、中身が文書か写真かという以前に、「0と1をどういう決まりで並べたか」の違いです。決まりを知らないアプリには解読できない——メモ帳で写真を開くとぐちゃぐちゃなのは、故障ではなく「読み方が違う」だけなのです。

⚠️ イレギュラー(解読に失敗するとき):

  • 名札と中身が食い違う.mp3 の名札なのに中身がPDF、のようなファイルは担当アプリが解読できずエラーになる
  • 新しすぎる・古すぎる形式 — 形式の決まりにも版がある。古いアプリが新しい版の決まりを知らず開けないことがある
「圧縮ファイル(.zip)」はどういう位置づけ?

.zip も名札の1つですが、中身は「複数のファイルを1つにまとめて、小さく詰め直した」特殊な形式です。担当アプリ(展開ソフト、OSに標準搭載)が解読すると、中から元のファイルたちが出てきます。「ファイルの中にファイルが入る」のではなく、「詰め直した1つの形式から、元の形を復元している」——これも0と1の並べ方の決まりの応用です。

まとめると、拡張子は「ただの名札」です。でも、OSは名札しか見ずに担当を決めるからこそ、名札は仕組みの要になっています。中身(0と1)・名札(拡張子)・読み方(形式)・担当(アプリ)——この4点セットで、ファイルにまつわる不思議はぜんぶ説明がつきます。

この部分をもっと深く(中級

🎬 アニメーション『ダブルクリックの3秒』の ⑤〜⑦ のところです!

「読み方の決まり」の実名はファイルフォーマット仕様です。解読には層があります:

  1. まず大きくテキストバイナリ※1 かに分かれる
  2. テキストの解読には文字コード※2 が要る——「このバイト列はこの文字」の対応表。UTF-8 が現在の標準で、Shift_JIS などの旧規格と取り違えると文字化けになる(データは無傷、読み方の取り違え)
  3. バイナリは形式ごとの仕様書どおりに解読する。多くの形式は圧縮※3 も組み込んでいて、可逆(ZIP・PNG)と非可逆(JPEG・MP3)で性格が違う
  4. 変換(.jpg → .png)とは、デコードして別の決まりで再エンコードすること。改名では起きない

登場人物メモ(※の説明):

  • ※1 テキスト / バイナリ — 文字コード表だけで人間が読める形式か、専用の仕様書が要る形式かの大別
  • ※2 文字コード — バイト列と文字の対応表。UTF-8 / Shift_JIS / EUC-JP など。取り違え=文字化け
  • ※3 可逆 / 非可逆圧縮 — 完全に戻せる圧縮(ZIP・PNG)と、知覚しにくい情報を捨てて縮める圧縮(JPEG・MP3)。非可逆は保存のたびに劣化が積む

⚠️ イレギュラー(解読の事故):

  • 文字化け — 原因は必ず「書いた文字コード ≠ 読んだ文字コード」。正しいコードで開き直せば直る(データは壊れていない)
  • JPEGの再保存劣化 — 非可逆圧縮を重ね掛けするたび情報が捨てられる。編集の元データはPNG等の可逆形式で持つのが定石
「fileコマンド」で中身の正体を見る

Linux/Macのターミナルで file 名前 と打つと、拡張子を無視してマジックナンバーから種別を判定してくれます。cat.txt に改名した画像も JPEG image data と見破ります。名札(拡張子)・中身(マジックナンバー)・読み方(フォーマット)が別物であることを、手元で1分で確認できる実験です。

まとめ——種別の証言は名札(拡張子)/ 中身の署名(マジックナンバー)/ Webの宣言(MIMEタイプ)の3系統あり、食い違いこそがトラブルと攻撃の源でした。そして解読の最下層には文字コードと圧縮がいる。「開けない・化ける・劣化する」は全部、この地図のどこかで説明がつきます。

関連する知識

理解度チェック

そのまま解けます(成績は保存されません)。無料アカウントを作ると、学習の記録と進捗の山登りが始まります。

1. ファイルをダブルクリックしたとき、OSが最初に見るものはどれ?

2. 「.pdf も .jpg も .mp3 も、中身は結局すべて0と1の列」——この説明は正しい?

3. ダウンロードした「請求書.pdf.exe」というファイル。危険だと言われる理由はどれ?

4. 写真ファイル「cat.jpg」の拡張子を「cat.txt」に書き換えた。中身はどうなっている?

5. 拡張子の対応表(.pdf はこのアプリで開く、という設定)を持っているのは誰?

6. 写真ファイルをメモ帳(テキストアプリ)で無理に開くと、意味不明な文字が並ぶ。この理由に最も近いのはどれ?

7. パソコンを「拡張子を常に表示する」設定にしておくと安全なのはなぜ?

8. ファイル名の末尾、ドットより後ろの部分(report.pdf の pdf の部分)を何と呼びますか。